【发布时间】:2010-08-08 08:36:34
【问题描述】:
下面是用nant生成msiexec命令的:
> "<exec program="msiexec"
> timeout="1800000" verbose="true">
> <arg line="/i "${server.msi}"" />
> <arg line="TARGETDIR="${server.target.path}""
> />
> <arg line="INSTALLDIR="${server.target.path}""
> />
> <arg line="ALLUSERS=1" />
> <arg line="/quiet" />
> <arg line="/log "${path::combine(log.path,
> 'Installation.Server.log')}"" />"
</exec>
生成的命令是: msiexec ( /i "S:\Work\Sources\Installation\Setup\LastBuild\WiseSetup Server.msi" TARGETDIR="C:\Program Files\MyProgs\Server" INSTALLDIR="C:\Program Files\MyProgs\Server" ALLUSERS =1; /quiet /log "C:\Projects\P3450\Environment\Logs\Installation.Server.log")
当删除 /quiet(或 /qn)时,此命令无法执行,它运行成功。否则它会给出错误: 外部程序失败:msiexec(返回码为 1619)
请注意,“(”和“)”已被删除,并且 /quiet 在那里运行成功!
【问题讨论】:
-
从 cmd 窗口运行以下命令,查看 errorlevel 是否确实为 0 msiexec /i "S:\Work\Sources\Installation\Setup\LastBuild\WiseSetup Server.msi" TARGETDIR="C:\Program Files\MyProgs\Server" INSTALLDIR="C:\Program Files\MyProgs\Server" ALLUSERS=1 /quiet /log "C:\Projects\P3450\Environment\Logs\Installation.Server.log" echo %errorlevel% if error level 为 0,然后从 nant 使用硬编码参数运行相同的命令,它必须也能正常工作。然后开始用变量替换参数并在每次更改后运行 nant。
标签: xml nant windows-installer