0

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

4

1 回答 1

1

您无法更改 msiexec 退出代码 - 它返回一个 Windows 值,而不是您可以自定义的值。

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

我不知道在命令行中显示错误的确切含义,但是静默安装确实是静默安装,并且安装不会显示任何内容。您希望以何种方式进行静默安装,同时显示一条消息,使其非静默?/qb 选项是否会起作用,以便您查看进度和错误?

于 2017-05-30T19:31:47.627 回答