代码之家  ›  专栏  ›  技术社区  ›  ispiro

什么启动Windows Service Installer的安装?

  •  2
  • ispiro  · 技术社区  · 6 年前

    我使用创建了一个服务 Microsoft's walkthrough

    它起作用了。但我不明白怎么做。这个 Main() 方法似乎没有调用 ProjectInstaller 构造函数(看起来像是安装服务的内容)。事实上 项目安装工 未在解决方案中的任何位置引用(我使用 转移 + F12层 )。

    那么它是如何执行的呢?

    编辑

    我没有使用 installutil Program Main() 呼叫 ManagedInstallerClass.InstallHelper(args);

    1 回复  |  直到 6 年前
        1
  •  4
  •   ispiro    6 年前

    用于安装该服务的程序( installutil.exe )检查部件并运行安装程序。如its中所述 documentation :

    Installutil。exe使用反射检查指定的程序集 并查找具有 系统组件模型。RunInstallerAttribute属性设置为true。

    这个 工具然后执行安装程序。安装或 安装程序。卸载安装程序类型的每个实例上的方法。 Installutil。exe以事务方式执行安装;那个 如果其中一个程序集未能安装,它将回滚 所有其他组件的安装。卸载不是事务性的。

    更新:您说过您不使用 installutil 而是使用 ManagedInstallerClass.InstallHelper .阅读本课程的文档:

    此API支持产品基础架构,不打算 直接从代码中使用。

    处理Installutil的功能。exe(安装工具)。

    因此,首先,您不应该使用它,其次,它的作用与 installutil (与此问题相关-使用反射检查程序集并运行安装程序)。我想 installutil 该工具实际上只调用此方法。请注意,您必须在中传递程序集的路径 args 属于 ManagedInstallerClass。InstallHelper ,这就是它知道使用反射检查哪个程序集并运行安装程序的方式。