用wix安装包

时间:2016-12-12 15:26:26

标签: c# wix

我在我的C#项目中使用wix。我有一个用于设置的引导程序。这个引导程序安装:

  • SQL server 2014
  • CLR类型2014
  • 系统管理对象2014 (这三个来自微软网站)
  • 我的申请

我的问题是系统管理对象2014依赖于CLR类型2014.当我的设置执行时,安装SQL服务器,然后CLR类型2014,当安装必须安装系统管理对象2014时,我有一条错误消息&# 34;需要CLR类型"。如果我取消设置并重新启动它可以正常工作。

如何编写Bundle.wxs来检测以前的安装(或重启设置)?

有我的代码:

false

1 个答案:

答案 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需要重新启动时,您可能希望用一些其他文本表明安装程序将在重新启动后重新启动,这将在引导程序的重新启动页面上重新启动。