관리되는 부트 스트 래퍼 응용 프로그램을 사용하여 WiX 번들 설치 프로그램을 작성합니다. 최근에 컴퓨터마다 설치하는 새로운 MsiPackage
을 추가했지만 사용자가 확인란을 사용하여 옵트 인하는 경우에만 설치합니다. 사용자는 나중에이 패키지를 설치하기 위해 프로그램 및 기능에서 설치를 수정할 수 있습니다. 번들에있는 유일한 기계 별 패키지입니다. 나머지는 사용자 별입니다. 높은 권한없이 설치를 허용하는 것이 우리에게 중요합니다.이 이유는이 기계 별 패키지가 선택 사항이기 때문입니다. 수정하는 동안 상승 된 권한을 요청하는 것이 좋습니다. 단지WiX Installer : 초기 설치시 건너 뛴 패키지를 포함하도록 설치 수정
<MsiPackage Id="optional_package"
Cache="yes" Compressed="yes" Visible="no"
DisplayInternalUI="no"
SourceFile="..\Resources\OptionalPackage.msi" />
패키지가 번들의 첫 번째 설치에 설치되지 않은 경우,이 캐시되지 않을 것이라고했다이 구성의 문제 (Cache="yes"
:
원래, 정말 같은 새 패키지를 구성 패키지가 설치되면 캐시합니다). 그런 다음 사용자가이 패키지를 설치하기 위해 설치를 수정하려고 시도하면 화상에서 OptionalPackage.msi의 원본을 찾을 수 없으므로 해당 작업이 실패합니다.
<MsiPackage Id="optional_package"
Cache="always" Compressed="yes" Visible="no"
DisplayInternalUI="no"
SourceFile="..\Resources\OptionalPackage.msi" />
이 첫 번째 문제를 해결하지만, 새로운 문제를 만들어 : 나는 패키지가 항상 캐시 할 것을 요청하여이 문제를 해결 할 수 있었다. OptionalPackage.msi는 컴퓨터마다 설치하므로 burn은 %LocalAppData%\Package Cache
(사용자 별 캐시) 대신 C:\ProgramData\Package Cache
(컴퓨터 단위 캐시)에 캐시하려고 시도합니다. 이 문제에는 두 가지 문제가 있습니다.
- 은 높은 권한이 필요합니다. 우리는 항상이 새 패키지를 캐시하기 때문에 사용자는 항상 설치 권한을 높여야합니다.
- 설치 중에 상승 된 권한을 요청하는 UAC 대화 상자가 나타나지 않습니다. 대신
C:\ProgramData\Package Cache
에 대한 액세스가 거부되어 설치 프로그램이 실패합니다. 해결 방법은 관리자로 실행하는 것입니다.
# 2는 컴퓨터 별 액세스에 대한 액세스 권한을 요청해야하기 때문에 화상 버그라고 생각됩니다. 제 질문은 맞춤 위치에 캐시 할 수 있습니까? 컴퓨터 별 패키지를 사용자 별 폴더에 캐시하도록 번 아웃 할 수 있습니까? 그렇게하기위한 구성 옵션이 보이지 않습니다.
여기에 더 나은 방법이 있기 때문에 여기에 약간의 컨텍스트를 제공하려고했습니다. 내 전반적인 목표는 사용자가 첫 번째 설치에서 건너 뛴 패키지 수정을 통해 패키지를 설치할 수 있도록하는 것입니다. 이 작업을 수행하는 더 좋은 방법이 있으면 알려주십시오.