2017-05-30 432 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库创建安装程序。 –