2

我需要创建一个新的事件源,以便我的 office 插件可以将事件记录到事件日志中。这需要管理员权限,所以我需要在安装时执行此操作。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);   
    }
}
4

1 回答 1

2

明白了(我认为)!

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

现在,最后一步(感谢Why won't my Setup Project Perform my Custom Registration Process for the bit on Custom actions)是右键单击设置项目,选择查看->自定义操作,右键单击顶层自定义Actions->Add Custom Action...,然后选择带有安装程序的程序集(在我的情况下是控制台应用程序 .exe)

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

于 2013-02-27T22:38:30.887 回答