我有一个简单的C#应用程序,我需要为其创建一个静默安装程序。我正在使用Visual Studio Installer(基于MSI)。由于它是C#应用程序,因此安装程序必须安装.NET框架作为先决条件。
我的解决方案中的安装项目产生了两个文件:setup.exe
和app.msi
,一个引导程序和MSI文件。
另外:安装总是处于提升权限之下,这是一个安全的假设。
因此,我尝试以安装完全静默的方式启动setup.exe
和app.msi
,以防安装和未安装.NET。
msiexec /i app.msi /qn
这在安装了.NET的计算机上静默运行,并且在没有安装.NET的计算机上静默失败。
其他组合非静默地工作或显示一些弹出窗口。
那么可以使这样的安装过程保持沉默吗? 或者,至少,让.NET安装显示弹出窗口,但应用程序本身必须是静默的(此外,应该没有其他弹出窗口,如“安装程序正在初始化组件”等,与.NET安装无关)
答案 0 :(得分:1)
引导程序的目的是安装一个包链,通常是一组先决条件(有条件地安装)然后是主包。你的没有安装先决条件。
一种廉价的方法是使用脚本(甚至像批处理文件一样简单)作为引导程序:检测.NET,如果不存在则运行.NET安装程序包,然后运行主程序包安装:
@echo off
rem this key/value is how WiX detects .NET 4.0 Full installation
reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full" /v InstallPath >NUL 2>&1
rem sets ERRORLEVEL==0 if present, ERRORLEVEL==1 if absent
rem if .NET not found, install it:
if ERRORLEVEL 1 dotNetFx40_Full_setup.exe
rem now install main program
msiexec /i app.msi /qn
注意事项: