2017-05-30 20 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% 

を下回っているが、それは、「OSのバージョンが無効です。」のようなMSIインストーラリターンカスタムエラーコードとカスタムエラーメッセージを作成し、コマンドラインで同じことを表示することが可能です。 ?

答えて

0

msiexecの終了コードを変更することはできません。カスタマイズできるものではなく、Windowsの値が返されます。

カスタムエラーメッセージは通常、INSTALLMESSAGE_ERRORを指定してMsiProcessMessageを呼び出すカスタムアクションで実行され、MSIログにも格納されます。

私は、コマンドラインでのエラーの表示が何を意味するのか正確にはわかりませんが、サイレントインストールはサイレントインストールであり、インストールには何も表示されません。どのようにサイレントインストールをしたいのですが、メッセージを表示してサイレントでないようにしますか?進行状況とエラーが表示されるように/ qbオプションが機能しますか?

+0

私はインストーラに新しいです、そして、私の質問は間違っているかもしれません。/qbオプションは別のダイアログを開き、session.Message()値を表示します。私はダイアログボックスなしでコマンドラインに同じものを表示したい。バッチスクリプトでキャプチャできるようにINSTALL_MESSAGE_ERRORを返すオプションはありますか?また、.NETでWixSharpライブラリを使用してインストーラを作成しています。 –

関連する問題