感谢安德烈在这里的回答:
使用 WIX 安装程序安装 .NET Framework 4.7.2(如果需要)
我检查是否安装了 .NETFramework 4.7.2 并安装它。不过,我还有一个小问题……我的主应用程序有一个安装后操作来启动该应用程序。在安装 4.7.2 并且系统重新启动之前,无法启动该应用程序。我可以简单地从我的应用程序安装程序中删除此安装后操作代码,但如果它确实启动了应用程序,如果 4.7.2 已经安装并且没有理由重新启动,那就太好了。
如何从我的应用程序安装程序“查看”我的 Bootstrapper 项目并查看是否刚刚安装了 .NET Framework?然后我可以有条件地运行安装后操作。如果刚刚安装了 4.7.2,我相信它会提示要求重新启动,这是完美的。
欢迎提出其他解决问题的方法的建议。我想另一种处理方式是在 .NET 安装后强制重启,并在重启后安装我的应用程序。但我认为最好安装所有内容然后重新启动。我认为这是一个非常普遍的问题,但我没有找到任何解决它的方法。也许问题太简单了!我是 WIX 新手,不清楚如何将变量和信息从一个项目共享到另一个项目。特别是从主应用程序安装程序获取引导程序信息。让我知道我是否可以提供澄清或更详细的信息。
谢谢!
安装后操作如下所示:
<CustomAction Id="PostInstallAction"
Return="check"
Execute="immediate"
BinaryKey="MyAppInstaller.CustomActions.CA.dll"
DllEntry="PostInstallAction" />
<InstallExecuteSequence>
<Custom Action="PreInstallAction" Before="InstallValidate" />
<Custom Action="PostInstallAction" After="InstallFinalize" />
</InstallExecuteSequence>
// follow function abbreviated (no logging and try/catch).In file customactions.cs
public static ActionResult PostInstallAction(Session session)
{
if (!Process.GetProcessesByName(MyAppLauncherFileName).Any())
Process.Start(ConfigurationManager.AppSettings[MyAppLauncherExePath]);
return ActionResult.Success;
}
跟进:如果安装 4.7.2 所需的重新启动自动发生,而不是提示用户,那也很好。有没有办法做到这一点,或者是硬编码到 4.7.2 中。网络安装程序?