我已经阅读了互联网上的许多例子,但我无法弄清楚出了什么问题。我有一个WiX安装程序,可以在安装时将所有MySQL服务器文件复制到某个位置。然后我想在安装结束之前运行MySQLInstanceConfig.exe。
<CustomAction Id="CAConfigureMySqlInstance"
Directory="dir96BE76D0898DC48E62BC8465D43A5949"
Impersonate="no"
Execute="commit"
ExeCommand="[dir96BE76D0898DC48E62BC8465D43A5949]MySQLInstanceConfig.exe"
Return="check"
/>
<InstallExecuteSequence>
<Custom Action='CAConfigureMySqlInstance' After='InstallFiles' />
<!-- See this for Before/After sequence moments: http://msdn.microsoft.com/en-us/library/windows/desktop/aa371199(v=vs.85).aspx -->
</InstallExecuteSequence>
我认为After='InstallFiles'
确实是在安装程序将所有文件放在正确的位置之后。现在我看到进度条在安装程序中的“复制新文件”中。然后我收到一条消息“无法运行此安装所需的程序”。当我查看日志文件时,我看到了:
MSI(54:94)[14:14:32:886]:注意:1:1721 2:CAConfigureMySqlInstance 3:C:\ Program Files(x86)\ MyCompnay \ MySQL \ MySQL Server 5.5 \ bin \ 4:C:\ Program Files(x86)\ MyCompany \ MySQL \ MySQL Server 5.5 \ bin \ MySQLInstanceConfig.exe
每当我在'Run(Windows + R)'中复制该路径时,都会运行MySQL配置程序!所以路径是正确的。因此我得出结论,在错误发生的那一刻,文件已经被复制到该位置!错误代码是1721。
每当我将ExeCommand
更改为C:\Windows\Explorer.EXE C:\SomeDirIKnow
时,Windows Explorer都会启动......所以自定义操作似乎正确...
如何解决此问题?
答案 0 :(得分:5)
我将其作为
运行<CustomAction Id="CAConfigureMySqlInstance"
Directory="dir96BE76D0898DC48E62BC8465D43A5949"
Impersonate="no"
Execute="deferred"
ExeCommand='"[dir96BE76D0898DC48E62BC8465D43A5949]MySQLInstanceConfig.exe"'
Return="check"
/>
<InstallExecuteSequence>
<Custom Action='CAConfigureMySqlInstance' Before='InstallFinalize' />
<!-- See this for Before/After sequence moments: http://msdn.microsoft.com/en-us/library/windows/desktop/aa371199(v=vs.85).aspx -->
</InstallExecuteSequence>
请注意使用的引号ExeCommand='"
=&gt;这是单,双,exe的位置,双,单。
荒谬!花了超过1个小时!