2017-05-18 15 views
0

관리되는 부트 스트 래퍼 응용 프로그램을 사용하여 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 (컴퓨터 단위 캐시)에 캐시하려고 시도합니다. 이 문제에는 두 가지 문제가 있습니다.

  1. 은 높은 권한이 필요합니다. 우리는 항상이 새 패키지를 캐시하기 때문에 사용자는 항상 설치 권한을 높여야합니다.
  2. 설치 중에 상승 된 권한을 요청하는 UAC 대화 상자가 나타나지 않습니다. 대신 C:\ProgramData\Package Cache에 대한 액세스가 거부되어 설치 프로그램이 실패합니다. 해결 방법은 관리자로 실행하는 것입니다.

# 2는 컴퓨터 별 액세스에 대한 액세스 권한을 요청해야하기 때문에 화상 버그라고 생각됩니다. 제 질문은 맞춤 위치에 캐시 할 수 있습니까? 컴퓨터 별 패키지를 사용자 별 폴더에 캐시하도록 번 아웃 할 수 있습니까? 그렇게하기위한 구성 옵션이 보이지 않습니다.

여기에 더 나은 방법이 있기 때문에 여기에 약간의 컨텍스트를 제공하려고했습니다. 내 전반적인 목표는 사용자가 첫 번째 설치에서 건너 뛴 패키지 수정을 통해 패키지를 설치할 수 있도록하는 것입니다. 이 작업을 수행하는 더 좋은 방법이 있으면 알려주십시오.

답변

0

나는이 문제를 해결 했으므로 다른 사람들이 찾을 수있는 대답을 게시 할 것이라고 생각했습니다. 필자는 캐싱 문제가 아닌 옵션 패키지를 다운로드하여 캐싱 문제를 해결하기 위해 노력했습니다. Compressed="no"을 설정하고 DownloadUrl으로 설정하면됩니다.

<MsiPackage Id="optional_package" 
      Cache="yes" Compressed="no" Visible="no" 
      DisplayInternalUI="no" 
      SourceFile="..\Resources\OptionalPackage.msi" 
      DownloadUrl="https://example.com/download/OptionalPackage.msi" /> 

패키지를 설치해야 할 때 WiX가 자동으로 다운로드합니다. SourceFile에 정의 된 파일과 DownloadUrl에 정의 된 파일은 정확히 일치해야합니다. WiX는 SourceFile을 해시하고이를 설치 프로그램에 저장합니다. 다운로드 후 DownloadUrl에 파일을 해시하며 해시가 일치하는 경우에만 설치합니다.

이 솔루션은 인턴 연결이 필요하기 때문에 이상적이지 않습니다.하지만이 요구 사항을 충족시킬 수있는 다른 방법은 없습니다. 우리의 주요 문제점은이 .msi가 컴퓨터 단위 패키지이며 설치 프로그램이 사용자별로 실행되고 있다는 것입니다.우리는 FireGiant와 상담을했고,뿐만 아니라 위 내 다른 질문 몇 가지에 대한 답변을 배운 :

  1. 설치 프로그램 내에서 에서 패키지에 대한 캐시 위치를 정의 할 수 없습니다. 이는 사용자의 로컬 컴퓨터에 대해 시스템 관리자가 Windows에서 구성 할 수 있지만 설치 프로그램에서는 사용자가 설정할 수 없습니다.
  2. 내가 설명한 상황에서 WiX가 상승 된 권한을 요청하지 않았다는 사실은 실제로 화상의 버그입니다.