【问题标题】:Call Installer base methods for multiple custom actions?为多个自定义操作调用安装程序基本方法?
【发布时间】:2016-11-22 19:44:05
【问题描述】:

有一个现有的 Visual Studio 安装项目(MS VS 扩展),它通过自定义操作安装 Windows 服务。

现在我正在添加用于填充 InstallLocation 字段的操作(Visual Studio 安装项目创建的 msi 将其留空,请参见此处:http://www.mikebevers.be/blog/2010/01/setup-project-product-installlocation-in-registry-is-empty/)。

对我来说,有两种方法可以合并这些操作:

  1. 将其他操作集成到现有的自定义操作中 安装服务的实现
  2. 为其他操作创建单独的类库并将它们添加为第二个自定义操作项(这将允许在所有项目中重复使用此类,而不会创建冗余代码)

对于(1)没有问题。


备选方案 (2) 是关于这个问题的:

我是否必须在所有自定义操作中调用 base.* 方法?

我没有从 MSDN 文档中得到它,如果基本方法仅与特定的自定义操作相关,或者它们与全局安装程序操作相关,例如。 g.:https://msdn.microsoft.com/en-gb/library/system.configuration.install.installer.install(v=vs.110).aspx

如果这被描述得太混乱:我是否必须只调用一次 System.Configuration.Install.Installer.Install() 或每次自定义操作?

提前致谢!

【问题讨论】:

    标签: c# visual-studio custom-action


    【解决方案1】:

    我花了一些时间才达到这一点,但现在我可以尝试了 - 它适用于调用基本方法的两个自定义操作(这意味着下面的 sn-ps 在 @987654321 的两个自定义操作实现中@和Commit()

    public override void Install(IDictionary stateSaver)
    {
        base.Install(stateSaver);
    
        // custom stuff ...
    }
    
    public override void Commit(IDictionary savedState)
    {
        base.Commit(savedState);
    
        // custom stuff ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多