Visual Studio Installer UI集成

是否可以为Visual Studio 2013安装程序项目( https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d )创建自定义UI? setup.exe和.msi有什么不同? 是否有一个很好的例子来解释VS安装程序?

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

如果此扩展实际上具有与VS2010安装程序项目相同的function,则此类UI扩展性不存在。

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

如果你需要一个漂亮的用户界面,那么你应该有一个在安装后运行的程序,以便与进行安装的人进行交互。

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

还有其他工具可以让您自定义UI – 只是VS不支持它。 像WiX和(完​​整)InstallShield这样的工具允许您在MSI对话框的function中构建自己的UI。 如果只安装了一个MSI文件,那通常就是人们所做的一切。

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

如果您要安装多个MSI文件,就好像它是单个产品(我相信SQL Server,Office,Visual Studio)那么您需要一个包装器(WiX具有Burn引导程序,InstallShield有一个chainer)来制作它看起来像一个单一的设置。 如果是这种情况,或者您希望自己拥有完全自定义的C#对话框UI,那么您可以自己编写 – 或者像这些人一样构建WiX框架:

http://www.wrightfully.com/part-1-of-writing-your-own-net-based-installer-with-wix-overview/

http://bryanpjohnston.com/2012/09/28/custom-wix-managed-bootstrapper-application/

该架构基于以下内容:

https://msdn.microsoft.com/en-us/library/windows/desktop/bb309215(v=vs.85).aspx

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

所以它取决于你的自定义对话框的意思。 如果你的意思是“不喜欢Visual Studio”或“我需要一个对话框来输入VS不提供的东西”并且你有一个MSI要安装,那么WiX,InstallShield,Advanced Installer和其他工具就可以做到这一点。 如果你的意思是“我想要我自己的完全自定义的C#对话框”那么你需要使用C#interop和MsiSetExternalUIRecord编写自己的,或者使用WiX boostrapper,我认为这是唯一一个 – 如果那是错的,请纠正我。