2017-05-30 435 views
0

我正在使用wixsharp構建msi安裝程序,並使用命令行進行靜默安裝,但沒有任何用戶界面。爲了檢查先決條件,我有許多類似於以下的自定義操作方法。如果不符合先決條件,我想警告用戶。運行msi安裝程序命令行

var project = new Project("ProductName", 
    new ManagedAction(new Id("OSVersion"), Check.CheckOSVersion, Return.check, When.Before, Step.InstallInitialize, Condition.NOT_Installed)); 

如果條件不滿足,自定義操作方法將返回ActionResult.Failure。

我的批處理腳本低於

start /wait msiexec /i Installer.msi /qn /l*v installerlog.log 

if "%errorlevel%" == "1013" goto err 
if "%errorlevel%" == "1603" goto err 

:err 
echo "Error: Msiexec failed with errorlevel = %errorlevel%" 
pause 
exit /b %errorlevel% 

是否有可能作出這樣「操作系統版本無效的」 MSI安裝程序返回的自定義錯誤代碼和自定義錯誤消息,並顯示在命令行中的相同。 ?

回答

0

您無法更改msiexec exitcode - 它會返回一個Windows值,而不是您可以自定義的值。

自定義錯誤消息通常是使用INSTALLMESSAGE_ERROR調用MsiProcessMessage的自定義操作完成的,他們也會進入MSI日誌。

我不知道在命令行中顯示錯誤的確切內容,但無提示安裝實際上是靜默安裝,安裝不會顯示任何內容。您希望以什麼方式進行無提示安裝,但是還要顯示一條消息,使其無聲?/qb選項是否工作,以便您看到進度和錯誤?

+0

我是新來的安裝人員,我的問題可能是錯誤的。/qb選項打開一個單獨的對話框並顯示session.Message()值。我想在沒有任何對話框的情況下在命令行中顯示相同的內容。是否有任何選項可以返回INSTALL_MESSAGE_ERROR,以便可以通過批處理腳本捕獲它。另外,我使用.NET中的WixSharp庫創建安裝程序。 –