C# Visual Studio安装程序UI集成

C# Visual Studio安装程序UI集成,c#,visual-studio-2013,windows-installer,C#,Visual Studio 2013,Windows Installer,是否可以为Visual Studio 2013安装程序项目()提供自定义UI? setup.exe和.msi之间有什么不同? 有没有一个很好的例子来解释VS安装程序 任务是创建类似VS2013的安装程序,从web下载最新文件(URL是硬编码的)。据我所知,setup.exe应该从web上获取最新的.msi文件,下载并运行它?因此,setup.exe需要以某种方式进行自定义。这可能吗?如果此扩展实际上与VS2010安装程序项目具有相同的功能,那么这种UI扩展性就不存在 进行简单定制的能力非常有限,

是否可以为Visual Studio 2013安装程序项目()提供自定义UI? setup.exe和.msi之间有什么不同? 有没有一个很好的例子来解释VS安装程序


任务是创建类似VS2013的安装程序,从web下载最新文件(URL是硬编码的)。据我所知,setup.exe应该从web上获取最新的.msi文件,下载并运行它?因此,setup.exe需要以某种方式进行自定义。这可能吗?

如果此扩展实际上与VS2010安装程序项目具有相同的功能,那么这种UI扩展性就不存在

进行简单定制的能力非常有限,但实际上非常有限


如果您需要一个好的UI,那么您应该有一个在安装后运行的程序,以便与执行安装的人进行交互。

在VS setup world中,setup.exe是一个引导程序,它安装先决条件,然后运行MSI。如果没有先决条件,则不需要setup.exe

还有其他一些工具可以让你定制UI——只是VS不支持。WiX和(完整)InstallShield等工具允许您在MSI对话框的功能范围内构建自己的UI。在只有一个MSI文件被安装的情况下,人们通常只会这么做

请注意,MSI对话框与.NET对话框或控件无关-这就是为什么它们非常基本的原因。里面没有C#,只有MSI内部支持的控件和对话框。你根本不能使用自己的C#对话框

如果有多个MSI文件要像单个产品一样安装(我相信是SQL Server、Office、Visual Studio),则需要一个包装器(WiX有Burn bootstrapper,InstallShield有chainer),使其看起来像单个安装。如果是这种情况,或者您希望拥有完全定制的C#对话框UI,那么您可以编写自己的——或者在WiX框架上构建,就像下面这些家伙一样:

该体系结构基于此:

和MsiSetExternalUIRecord。基本上,您编写代码来安装一个或多个MSI,而Windows Installer在安装过程中为每个事件回拨代码。这是您拥有自己的启动对话框的地方,Windows Installer将返回进度消息供您显示,以及错误、使用情况中的文件等。使用WiX这样的工具更容易,因为它提供了大部分框架


所以这取决于自定义对话框的含义。如果你只是说“不像VisualStudio”或“我需要一个对话框来输入VS不提供的内容”,并且你有一个MSI要安装,那么WiX、InstallShield、Advanced Installer和其他工具都会这样做。如果你的意思是“我想要我自己的完全定制的C#对话框”,那么你需要使用C#interop与MsiSetExternalUIRecord或使用WiX boostrapper编写自己的对话框,我相信这是唯一的一个,如果这是错误的,请纠正我

很抱歉问了这么多问题,我是C#/VS新手,缺乏基础。Visual Studio 2013不再有安装程序项目。确切地说,您询问的安装程序是哪种类型的。@JohnsUnders更新了我的问题。@JohnsUnders Visual Studio安装程序项目模板不再随Visual Studio一起提供。您可以使用XCopy/MS Deploy进行web部署。要创建安装程序包,可以使用InstallShield。我想知道Microsoft是如何使用VS安装程序的。我看到它使用WiX,但免费版本功能有限。WiX是开源软件。。完整的功能就在那里。Microsoft创建了自己的自定义引导程序应用程序来驱动VS安装的UI。这与WiX无关。