以下用于生成带有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在那里运行成功!
答案 0 :(得分:0)
使用/ l * v命令而不是仅仅/ log启用详细日志记录,打开msi日志文件(“Installation.Server.log”),然后搜索“返回值3”直接跳转到设置的位置安装程序失败如果需要,您还可以使用Windows安装程序详细设置日志分析器来分析日志文件。
答案 1 :(得分:0)
根据documentation,错误代码1619表示无法打开包。
这通常意味着,当nant尝试执行msiexec时,其他东西在文件上打开了锁 - 如果有人将Windows资源管理器打开到{{1在你的例子中,它可能只是试图生成一个缩略图。
在执行此nant任务之前坚持超时/等待,看看是否有帮助,如果有,那么其他东西对你的文件有一个保留 - 这也可以解释为什么它在你手动运行命令时成功,锁已经那个时候发布了。