2010-08-08 46 views
1

被用來產生與惡性的msiexec命令以下:Msiexec的無法運行(與NANT生成命令)

> "<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:\工作\源頭\ 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

從cmd窗口運行以下命令並查看errorlevel是否確實爲0 msiexec/i「S:\ Work \ Sources \ Installation \ Setup \ LastBuild \ WiseSetup Server.msi」TARGETDIR =「C:\ Program Files \ MyProgs \ 「C:\ Projects \ P3450 \ Environment \ Logs \ Installation.Server.log」 echo%errorlevel% 如果出現錯誤,請安裝服務器「INSTALLDIR =」C:\ Program Files \ MyProgs \ Server「ALLUSERS = 1/quiet /級別爲0,然後用硬編碼的參數從nant中刪除相同的命令,它也必須工作。然後開始用變量替換參數並在每次更改後運行nant。 – Moisei 2010-08-08 09:38:55

回答

0

使用/ l * v命令而不是僅僅/ log啓用詳細日誌記錄,打開您的msi日誌文件(「Installation.Server.log」),然後搜索「返回值3」以直接跳轉到安裝程序安裝失敗。如果需要,還可以使用Windows安裝程序詳細設置日誌分析器來分析日誌文件。

0

根據documentation,錯誤代碼1619表示無法打開軟件包。

什麼這通常意味着,是別的東西對當時惡性文件開一把鎖正試圖執行MSIEXEC - 一個共同的問題,如果任何人有Windows資源管理器打開在你的榜樣S:\Work\Sources\Installation\Setup\LastBuild\WiseSetup Server.msi,它可能只是試圖產生一個縮略圖。

在執行這個nant任務之前,堅持一個超時/等待,看看是否有幫助,如果是這樣,那麼其他的東西對你的文件有保留 - 這也可以解釋爲什麼當你手動運行命令時它成功了,那時候已經發布了。