【问题标题】:Running msi installer command line运行 msi 安装程序命令行
【发布时间】:2017-10-30 15:51:48
【问题描述】:

我正在使用 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 版本无效”并在命令行中显示相同的内容。 ?

【问题讨论】:

    标签: c# wix windows-installer wixsharp


    【解决方案1】:

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

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

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

    【讨论】:

    • 我是安装新手,我的问题可能是错误的。 /qb 选项打开一个单独的对话框并显示 session.Message() 值。我想在没有任何对话框的命令行中显示相同的内容。是否有任何选项可以返回 INSTALL_MESSAGE_ERROR 以便它可以被批处理脚本捕获。?而且,我在 .NET 中使用 WixSharp 库来创建安装程序。
    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 2011-06-04
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多