Msiexec无法运行(使用NANT生成的命令)

时间:2010-08-08 08:36:35

标签: xml nant msiexec

以下用于生成带有nant的msiexec命令:

> "<exec program="msiexec"
> timeout="1800000" verbose="true">
>             <arg line="/i &quot;${server.msi}&quot;" />
>             <arg line="TARGETDIR=&quot;${server.target.path}&quot;"
> />
>             <arg line="INSTALLDIR=&quot;${server.target.path}&quot;"
> />
>             <arg line="ALLUSERS=1" />
>             <arg line="/quiet" />
>             <arg line="/log &quot;${path::combine(log.path,
> 'Installation.Server.log')}&quot;" />"

        </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在那里运行成功!

2 个答案:

答案 0 :(得分:0)

使用/ l * v命令而不是仅仅/ log启用详细日志记录,打开msi日志文件(“Installation.Server.log”),然后搜索“返回值3”直接跳转到设置的位置安装程序失败如果需要,您还可以使用Windows安装程序详细设置日志分析器来分析日志文件。

答案 1 :(得分:0)

根据documentation,错误代码1619表示无法打开包。

这通常意味着,当nant尝试执行msiexec时,其他东西在文件上打开了锁 - 如果有人将Windows资源管理器打开到{{1在你的例子中,它可能只是试图生成一个缩略图。

在执行此nant任务之前坚持超时/等待,看看是否有帮助,如果有,那么其他东西对你的文件有一个保留 - 这也可以解释为什么它在你手动运行命令时成功,锁已经那个时候发布了。