代码之家  ›  专栏  ›  技术社区  ›  Ian manuel aldana

不带[RunInstaller]的Windows服务

  •  0
  • Ian manuel aldana  · 技术社区  · 14 年前

    Installer 并装饰有 [RunInstaller] .

    没有 [运行安装程序] 装饰,我不能安装服务使用 .

    为什么通过在MSI中使用ServiceInstall表部署服务,MSI能够在没有 装饰?

    <ServiceInstall Id="RegistryReaderInstall" DisplayName="Registry Reader Service" Name="Registry Reader" ErrorControl="critical" Start="auto" Type="ownProcess"/>
    
    2 回复  |  直到 14 年前
        1
  •  3
  •   Christopher Painter    14 年前

    四年前我写了一篇博客文章:

    MSI vs .NET

    基本上,专家级的答案是,安装程序类自定义操作是由.NET社区发明的一种邪恶的反模式。它们是RegSvr32模式的扩展,不适合MSI表驱动的声明性设计,因此不应使用。

    服务控制管理器是一个非托管API(Advapi32.dll),它早于.NET framework。在.NET出现之前,WindowsInstaller在90年代就已经对SCM提供了很好的支持。后来.NET创建了一种编写托管服务的模式,虽然从ServiceBase继承以免费获得大部分管道是一件好事,但InstalUtil的使用却不是。

        2
  •  1
  •   Sean Fausett    14 年前

    基本上WiX并没有调用ProjectInstaller;它只是使用MSI表。

    如果您真的需要调用ProjectInstaller(因为它设置了其他东西),那么您需要使用 WiX custom action . 注意这不是最好的选择( WiX-users ).