Windows installer 在MSI中安装.NET服务以便其可更新的最佳方法?

Windows installer 在MSI中安装.NET服务以便其可更新的最佳方法?,windows-installer,installshield-2009,Windows Installer,Installshield 2009,我有一个用InstallShield 2009构建的MSI安装,它通过在包含服务exe的组件上将“.NET安装程序类”设置为“是”来安装.NET服务。 此基本安装包含文件,exe安装正常。我创建了一个小的更新MSP,它正在更新原始安装中的服务exe文件。 当我在包含基本安装的系统上运行MSP时,会出现错误1001,因为它正在尝试在小更新MSP安装期间重新安装服务 Flexera对此问题的官方回应是,如果需要更新.NET可执行文件,则应将组件“.NET安装程序类”设置为“否”,并创建自己的自定义操

我有一个用InstallShield 2009构建的MSI安装,它通过在包含服务exe的组件上将“.NET安装程序类”设置为“是”来安装.NET服务。 此基本安装包含文件,exe安装正常。我创建了一个小的更新MSP,它正在更新原始安装中的服务exe文件。 当我在包含基本安装的系统上运行MSP时,会出现错误1001,因为它正在尝试在小更新MSP安装期间重新安装服务

Flexera对此问题的官方回应是,如果需要更新.NET可执行文件,则应将组件“.NET安装程序类”设置为“否”,并创建自己的自定义操作。Flexera还承认,他们没有在任何地方记录,如果将“.NET安装程序类”设置为“是”,则无法创建安装的MSP更新。由于基本安装已经发布,需要针对其创建更新,因此无法返回并更改基本安装。我自己想出了一个解决办法,在MSP更新中包含一个自定义操作,在安装MSP期间卸载服务。这将安装小更新MSP,但此解决方案不适用于从ARP卸载MSP


我需要知道在将来的安装中解决此问题的最佳方法。如何安装.NET服务,以便以后使用小型更新MSP轻松更新服务?

最好的方法是使用MS BITS(Microsoft的后台智能传输服务),它类似于Windows update

当然,您的主应用程序必须能够使用此服务,因此我不确定此答案是否适用于您的场景,除非您卸载当前应用程序并重新安装具有BITS支持的新版本

有关BITS和在.NET中使用BITS的更多信息

http://msdn.microsoft.com/en-us/library/aa362708(VS.85).aspx
http://msdn.microsoft.com/en-us/magazine/cc188766.aspx
http://www.codeproject.com/KB/IP/sharpBITS.aspx

应使用MSI方式安装服务;因为intaller类非常脆弱,但是自写的自定义操作不太可能更好(只是更容易控制)。您可以在组件高级设置下找到服务选项。

我认为这些选项(“控制NT服务”和“安装NT服务”)只适用于NT服务。我过去曾成功地使用这些选项安装NT服务。我正在尝试安装.NET服务。这些选项适用于.NET服务吗?有一些.NET服务不适用于这些服务(通常当它们的安装程序类设置了不相关的依赖项时),但在这种情况下,它应该可以正常工作。菲尔·威尔逊(Phil Wilson)的帖子(第二页第6页)证实了这一点。