1

我已经阅读了互联网上的许多示例,但我无法弄清楚出了什么问题。我有一个 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 (s) (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

每当我在“运行(Windows + R)”中复制该路径时,MySQL 配置器就会运行!所以路径是正确的。所以我得出结论,在错误发生的那一刻,文件已经被复制到那个位置!错误代码为 1721。

每当我将 更改为ExeCommandC:\Windows\Explorer.EXE C:\SomeDirIKnowWindows Explorer就会启动......所以自定义操作似乎是正确的......

我该如何解决这个问题?

4

1 回答 1

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='"=> 即单、双、exe 的位置、双、单。

荒谬的!在这上面花了1个多小时!

于 2013-02-06T13:37:43.343 回答