2012-09-24 11 views
0

msi가 생성 될 때 msi에 추가하는 CustomTable이 있습니다. 이 사용자 정의 테이블에는 msi가 배포 서버에 업로드 될 때 배포 소프트웨어에서 읽는 일부 이진 데이터 (XML 파일)가 들어 있습니다.패치 msp 파일에 포함될 사용자 정의 테이블

이제 msp 파일 배포를 지원해야합니다. 즉, 사용자가 msp 파일을 배포 서버에 업로드해야하는 경우 소프트웨어가 CustomTable의 바이너리 데이터를 읽을 수 있어야합니다. 그러나 우리가 만드는 msp 파일에 동일한 CustomTable이 포함되도록하는 방법을 찾을 수 없었습니다.

나는 업데이트 된 테이블과 파일을보기 위해 ORCA를 사용했기 때문에 msp에 업데이트 된 XML이 포함되어 있음을 알고 있습니다. 불행히도 필자는 CustomTable에서 데이터를 프로그램 적으로 읽을 수있는 것 같지 않습니다 (분명히) 패치 내에 존재하지 않기 때문입니다. 누구든지 msp 파일에서 CustomTable에 액세스하는 방법을 알고 있습니까?

감사합니다. 명확한 설명이 필요하면 알려주세요.

답변

0

좋아, 결국 내 문제에 대한 해결책이 있습니다.

원본 msi가 없으므로 임시 디렉토리에 빈 msi를 만든 다음 ApplyTransform을 사용하여이 위에 msp를 적용 할 수 있습니다. 예상되는 테이블을 만들고 더미 데이터로 채우면 (다행스럽게도이 테이블에서 어떤 행이 예상되는지 미리 알 수 있습니다.) 더미 msi 위에 패치를 적용하면 _Storages 테이블을 쿼리하고 액세스 할 수 있습니다 새로운 XML를 포함한 갱신 된 스트림 이것은 msp 업로드 중에 처리 될 수 있습니다.

좋지 않지만 작동합니다.

0

패치 (msp)에는 이전 MSI 패키지의 변경 사항 만 포함되어 있어야합니다. 최신 버전의 MSI 패키지에서 사용자 정의 테이블을 변경하지 않으면 패치에서 언급되지 않습니다. 그리고 그것은 예상됩니다.

패치가 적용되면 초기 MSI 패키지가 변경 (실제로 패치)되고 다시 설치됩니다. 즉, 사용자 정의 테이블을 읽는 사용자 정의 조치가 다시 설치시 실행되지 않도록 명시 적으로 스케줄되지 않은 경우, 실행되고 사용자 정의 테이블을 찾습니다.

+0

답장을 보내 주셔서 감사합니다. 문제 해결에 중점을 둡니다. 사용자 지정 테이블을 사용자 지정 작업으로 읽을 수 없으며 패치를 실행하거나 적용 할 때 사용자 지정 테이블의 데이터를 읽지 않습니다. 패치가 배포 서버에 업로드 될 때이 정보를 읽으려고합니다. msi 만 처리 할 때 좋았지 만 지금은 msp로도 확장해야합니다. –