2

好的,我相信我正在遵循 Wix3.5 中的在线示例来执行安静的命令,但我似乎无法引用我的命令来执行。

<Component Id="MapObjectsRuntime' Guid='*'>
  <File Id = 'Mo23rtEXE' Name='Mo23rt.exe' Source='....' KeyPath="yes"/>
<Component>

<Property Id = "QtExecCmdLine" Value="Mo23rt.exe" />

// I've tried single & double quotes, and double double quotes around Mo23.

<CustomAction Id = "InstallMapObjects" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="check" />

<InstallExecuteSequence>
  <Custom Action="InstallMapObjects" After="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>

我确实收到了构建 wix 项目的警告:文件 Mo23rtEXE 不是字体,它的版本不是伴随文件参考。

我还需要为 mo23rt.exe 命令分配命令行参数,但我首先只是想让它工作。

正如谷歌所揭示的那样,很多人似乎也在为此苦苦挣扎。

忘记添加正在运行的 setup.exe /l*v install.log 有:

MSI Doing action: InstallMapObjects
.
.
Property Change: Deleting QtExeCmdLine property.  Its current value is 'Mo23rt.exe'.
CAQuitExec: Command string must begin with quoted application name.
CAQuietExec: Error 0x80070057 invalid command line property value
4

3 回答 3

2

您将自定义操作安排为立即执行,但您尝试运行应由安装程序安装的文件。冲突来了:在安装文件之前立即运行 CA,因为这是按延迟顺序发生的。

我建议您首先熟悉Windows Installer文章中自定义操作的安装阶段和脚本内执行选项。

于 2011-02-18T20:04:23.290 回答
0

我曾尝试过“”mo23rt.exe”和“mo23rt.exe”,我为没有尝试“mo23rt.exe”而感到羞耻。还有其他问题,但可能是上面提到的,或者可能是我正在尝试运行一些试图建立状态栏对话框的东西,但并不是那么安静。

于 2011-02-18T20:35:58.663 回答
0

我将其更改为常规自定义操作副 CAQuiet。

<CustomAction Id="InstallMapObjects" FileKey="Mo23rtEXE" ExeCommand="/ACDJKLM" Execute="commit"/> 

followed by 

<InstallExecuteSequence>
  <Custom Action="InstallMapObjects" Before="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>
于 2011-03-03T18:52:16.970 回答