c# - 不理解 RunInstaller 属性

标签 c# .net installation vsto

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

If a class that inherits from Installer is marked with the RunInstallerAttribute set to >true, Visual Studio's Custom Action Installer or the InstallUtil.exe will be invoked when >the assembly is installed.

现在我正在使用标准的 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);   
    }
}

最佳答案

明白了(我想)!

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

现在,最后一步(感谢Why won't my Setup Project Perform my Custom Registration Process关于自定义操作的部分)是右键单击安装项目,选择“查看”->“自定义操作”,右键单击顶级自定义操作->“添加自定义操作” ...,然后使用安装程序选择程序集(在我的例子中是控制台应用程序 .exe)

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

关于c# - 不理解 RunInstaller 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15100519/

相关文章:

java - 编写升级工具的通用方法是什么

C# NetworkStream 数据丢失

c# - 正则表达式查找 3 个括号之间包含的字符串

c# - 动态控件不显示

c++ - 如何使用指定的编译器(例如 GCC)安装 Boost

visual-studio-2008 - 如何通过 VS2008 设置和部署向注册表 Run 键添加条目

c# 子字符串找不到字符串

c# - 我可以在同一个 ASP.NET MVC 网站上使用一个程序集的两个版本吗?

c# - 我的通用类型是一个列表,还是只是一个项目?

c# - 如何在 C# 中做标志