我在我的C#项目中使用wix。我有一个用于设置的引导程序。这个引导程序安装:
我的问题是系统管理对象2014依赖于CLR类型2014.当我的设置执行时,安装SQL服务器,然后CLR类型2014,当安装必须安装系统管理对象2014时,我有一条错误消息&# 34;需要CLR类型"。如果我取消设置并重新启动它可以正常工作。
如何编写Bundle.wxs来检测以前的安装(或重启设置)?
有我的代码:
false
答案 0 :(得分:1)
如果您的SQLCLRTypes安装需要重启,它将通知引导程序应用程序需要一个,但引导程序引擎将决定注意需要重新启动,然后继续安装其他软件包,直到安装结束,然后最后一页将显示重启页面而不是完成页面,并将有一个重启按钮。
引导程序还支持在安装过程中重新启动,然后在机器重新启动后继续安装。我们可以使用此功能,因为下游程序包依赖于SQLCLRTypes,并且由于最有可能使用的文件导致重启,因此不会完全存在。
由于您使用的是C#,我假设您使用的是托管引导程序。
您需要在每个包完成后引发的OnExecutePackageComplete事件中添加一个处理程序。
它可能看起来像这样
private void ExecutePackageComplete(object sender, ExecutePackageCompleteEventArgs args)
{
if (e.Restart == ApplyRestart.RestartRequired && (e.PackageId == "SQLCLRTypesx86" || e.PackageId == "SQLCLRTypesx64"))
{
e.Result = Result.Restart
}
}
这将导致您的引导程序在安装SQLCLRTypes后显示重新启动页面,而不是继续尝试安装SMO。机器重新启动后,安装将自动重新启动并从中断处继续。当SQLCLRTypes需要重新启动时,您可能希望用一些其他文本表明安装程序将在重新启动后重新启动,这将在引导程序的重新启动页面上重新启动。