2012-06-25 122 views
3

执行EXE文件我尝试从维克斯MSI文件执行一个EXE文件,但这样做InitializeSetup当我1603错误。在维克斯

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 Script有什么问题?

<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)它不支持回滚。还有其他人,但那些是最大的国际海事组织。

顺便说一句,WiX不是“脚本”。理解这一点,你就会明白为什么不叫EXE了。

+0

我有一个压缩了我的项目的依赖关系的文件。执行该文件将这些依赖关系放入它所在的目录中。这是否也被认为是不好的做法?你有什么建议作为替代? – Aelphaeis

0

因为你正在运行的exe作为递延行动,它运行在系统帐户的上下文。此错误是由于系统帐户在文件系统http://support.microsoft.com/kb/834484上没有所需的权限。

有可能使用PowerShell来执行使用-RunAs切换的exe来解决这个问题,但是这是一个有点讨厌。这完全取决于你在EXE中所做的最好的行动。我与Painter先生一起使用EXE应该是最后的选择。

另一种选择是,这样它运行用户运行的应用程序的第一次移动的exe设置代码。

+0

我被放在Execute属性的其他选项中,不起作用。 – pawelek