2012-06-25 3 views
3

WiX의 MSI 파일에서 EXE 파일을 실행하려고 시도하지만 InitializeSetup을 수행 할 때 1603 오류가 발생합니다.WiX에서 EXE 파일 실행

Action ended 12:09:54: InstallValidate. Return value 1. 
Action start 12:09:54: InstallInitialize. 
Action ended 12:09:54: InstallInitialize. Return value 3. 
Action ended 12:09:54: INSTALL. Return value 3. 

이 WiX 스크립트의 문제점은 무엇입니까?

<Product Name='something' Id='11934d63-12d1-4792-829e-046de3bb987e' 
    UpgradeCode='{a101616a-365c-44a7-bfcb-fafb356c2ea1}' 
    Language='1033' Version='8.3.4' Manufacturer='something2'> 

    <Package Id='*' InstallerVersion='200' Compressed='yes' /> 

    <Binary Id="Instalator.exe" SourceFile="d:\Instalator.exe"/> 
    <CustomAction Id="LaunchFile" BinaryKey="Instalator.exe" ExeCommand="" Execute='deferred' Return='asyncNoWait' Impersonate='no'/> 
    <InstallExecuteSequence> 
     <Custom Action='LaunchFile' Before='InstallFinalize'/> 
    </InstallExecuteSequence> 
</Product> 

나는 이유는 모르겠지만, 내가 추가 할 때 :

<Directory Id='TARGETDIR' Name='SourceDir'> 
     <Component Id='MainExecutable' Guid='1193cd63-12d1-4792-829e-046de3bb987e'> 
     </Component> 
</Directory> 

<Feature Id='Complete' Level='1'> 
    <ComponentRef Id='MainExecutable' /> 
</Feature> 

패키지 노드 다음 -> 다음 그것을 잘 작동합니다. 이유를 알아야합니다 ...

+2

"instalator.exe"는 무엇을 요청할 수 있습니까? 당신은 바퀴를 여기에서 재발 명하고 있을지도 모른다. http://robmensching.com/blog/posts/2007/8/17/Zataoca-Custom-actions-are-generally-an-admission-of-failure –

+0

Instalator.exe는 Inno Setup의 설치 프로그램입니다. 난 그냥 msi가 필요합니다. – pawelek

+1

이렇게하는 것이 그리 중요하지 않습니다. msi 및 wix를 사용하면 얻을 수있는 많은 이점을 우회합니다. AFAIK 기능이없는 msi는 유효하지 않기 때문에 구성 요소를 추가하는 것이 효과적이라고 생각합니다. 개인적으로 InnoSetup을 wix로 변환하는 데 시간이 걸릴 것입니다. 장기적으로는 훨씬 더 좋을 것입니다. –

답변

5

여기에 무엇을하고 있는지에 대한 다른 우려가 있습니다. 그러나 설치를 완료하기 위해 EXE 프로세스를 실제로 진행해야하는 경우에는 Quiet Execution Custom Action.

그러나 이것은 여러 가지 이유로 좋은 습관이 아님을 알아야합니다. 1) 선언적이 아니며 2) 롤백을 지원하지 않습니다. 다른 것들이 있지만 그것들은 가장 큰 IMO입니다.

현재 WiX는 "스크립팅"이 아닙니다. 그것을 이해하면 EXE를 호출하지 않는 이유를 이해할 수 있습니다.

+0

내 프로젝트의 종속성을 압축 한 파일이 있습니다. 해당 파일을 실행하면 해당 종속성이있는 디렉토리에 종속됩니다. 대안으로 무엇을 제안합니까? – Aelphaeis

0

EXE를 지연된 동작으로 실행 중이므로 SYSTEM 계정의 컨텍스트에서 실행됩니다. 이 오류는 시스템 계정이 파일 시스템 http://support.microsoft.com/kb/834484에 대해 필요한 권한을 가지고 있지 않기 때문입니다.

-RunAs 스위치를 사용하여 exe를 실행하기 위해 PowerShell을 사용하여이 문제를 해결할 수는 있지만 다소 불쾌합니다. 그것은 정말로 모든 것이 정확히 최고의 행동 과정에 대한 exe에서 무엇을하는지에 달려 있습니다. 저는 Painter 씨와 함께 EXE를 사용하는 것이 최후의 수단이되어야합니다.

또 다른 옵션은 사용자가 앱을 처음 실행할 때 실행되도록 exe 설치 코드를 이동하는 것입니다.

+0

Execute 속성에 다른 옵션을 넣었습니다. 작동하지 않습니다. – pawelek