不了解RunInstaller属性

时间:2013-02-26 22:21:01

标签: c# .net installer installation vsto

我需要创建一个新的事件源,以便我的办公室加载项可以将事件记录到事件日志中。这需要管理员权限,所以我需要在安装时执行此操作。 msdn文档说:

  

如果继承自Installer的类标记为RunInstallerAttribute设置为> true,则在安装>组件时将调用Visual Studio的自定义操作安装程序或InstallUtil.exe。

现在我正在使用标准的Visual Studio Outlook 2007项目,我认为该项目会创建一个ClickOnce setup.exe文件,该文件可用于安装我的加载项。所以我需要做的就是在我的加载项项目中包含MyEventLogInstaller类(如下所示),setup.exe将检测它并安装日志源?我的setup.exe是否检测到RunInstaller属性并使用“自定义操作安装程序”?我理解代码(下面),但我不明白的是安装程序如何知道在派生的MyEventLogInstaller上实际调用Install方法?

[RunInstaller(true)]
public class MyEventLogInstaller: Installer
{
    private EventLogInstaller myEventLogInstaller;

    public MyEventLogInstaller() 
    {
    myEventLogInstaller = new EventLogInstaller();
    myEventLogInstaller.Source = "Source1";
    myEventLogInstaller.Log = "Log1";

    Installers.Add(myEventLogInstaller);   
    }
}

1 个答案:

答案 0 :(得分:1)

得到它(我想)!

我所做的是在Visual Studio 2010中创建一个新的安装项目。然后我将一个新的控制台应用程序项目添加到总体解决方案中,并将我的MyEventLogInstaller类添加到控制台应用程序项目中。在控制台应用程序的主要方法中,我实例化MyEventLogInstaller并添加一些额外的代码来写入新的事件源。然后我右键单击Setup Project-> Add-> Assembly ...并选择Console Application可执行文件将其添加到安装项目中(我是设置项目的新手,我期待更直观的东西,但我离题了。)

现在,最后一步(感谢Why won't my Setup Project Perform my Custom Registration Process对自定义操作的位)是右键单击安装项目,选择查看 - >自定义操作,右键单击顶级自定义操作 - &gt ;添加自定义操作...,并使用安装程序(在我的示例中为控制台应用程序.exe)选择程序集

完成所有操作后,我可以构建.msi并使用我的管理员帐户安装它,然后当我切换回非管理员帐户并运行控制台应用程序时,它现在可以登录到新创建的源!呼。