运行msi安装程序命令行

时间:2017-05-30 08:54:18

标签: c# wix windows-installer msiexec wixsharp

我正在使用wixsharp构建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安装程序返回自定义错误代码和自定义错误消息,例如"操作系统版本无效"并在命令行中显示相同的内容。 ?

1 个答案:

答案 0 :(得分:1)

您无法更改msiexec exitcode - 它会返回Windows值,而不是您可以自定义的值。

自定义错误消息通常通过使用INSTALLMESSAGE_ERROR调用MsiProcessMessage的自定义操作完成,并且它们也会进入MSI日志。

我不知道在命令行中显示错误的确切含义,但静默安装确实是静默安装,安装不会显示任何内容。你想以什么方式进行静默安装但是还要显示一条消息,使其无声? / qb选项是否有效以便您看到进度和错误?