사용자 설치 관리자는 CustomAction (InstallExecuteSequence에서 호출 됨)을 사용하여 선택적으로 설치 프로그램 옆의 디렉토리에서 사용자 구성 파일을 복사합니다. [SourceDir]을 사용하여 소스 디렉토리를 찾습니다.WiX MSI의 [SourceDir]을 사용하여 번 호가있는
현재 별도의 .MSI 파일로 배포되는 32 비트 및 64 비트 버전이 있습니다. Burn을 사용하여 이러한 .MSI 파일을 포함하는 단일 .EXE를 작성하려고합니다. 분명히 MSI가 Burn에 의해 설치 될 때,이 사용자 지정 작업이 작동하지 않기 때문에 [SourceDir]이 다른 곳 (C:\ProgramData\Package Cache\...
경로를보고 있습니다)에 있습니다.
나는 WixBundleOriginalSource 변수를 찾았지만, 내 문제는 MSI 파일을 별도로 작동시키고 Burn으로 패키지화하기를 원합니다. WixBundleOriginalSource가 정의되어 있지 않은 경우 (Burn .exe로 설치하는 사용자) 또는 WixBundleOriginalSource가 정의되지 않은 경우 SourceDir (사용자가 직접 .MSI를 설치하는 사용자)에 조건부로 변수를 설정 한 다음이 변수를 내 사용자 지정 동작에 전달해야한다고 생각합니다. (나는 WixOriginalSource가 인스톨러의 전체 경로이며 그것이 위치한 디렉토리가 아니라는 것을 알고있다.)
이게 가능한가? 그렇다면 구문을 사용하여 도와주십시오.
업데이트 :
나는 잠재적으로 내 사용자 지정 작업에 조건 부분을 처리하고 두 번 호출 할 수 있습니다 내가 뭘로, 한 번 [SourceDir]
로 (MSI를 직접 사용하는 경우 작동하는) 지금 :
,756을 내 제품
<CustomAction Id='CopyConfigFiles'
FileKey="MyInstallationUtility"
ExeCommand="COPYFILES [SourceDir]"
Execute="deferred"
Impersonate="no"
Return="ignore" />
...에 한 번. 그러나, 나에게 사용자 정의 작업을 WixBundleOriginalSource
얻을 수있는 방법을 찾을 수 없습니다. 사용 :
ExeCommand="COPYFILES [WixBundleOriginalSource]"
... 작동하지 않습니다. 사용 :
을 내 굽기 번들
<WixVariable Id="ConfigFileLocation" Value="[WixBundleOriginalSource]" />
에서 내 제품
ExeCommand="COPYFILES [ConfigFileLocation]"
에 ... 또한 작동하지 않습니다. 둘 다 매개 변수로 빈 문자열을 제공합니다.
이 질문에 대한 대답은 내 마지막 질문에 대한 답변으로 보입니다. http://stackoverflow.com/questions/17729878/passing-command-line-args-to-msi-from-wix-bundle –