代码之家  ›  专栏  ›  技术社区  ›  Tom Wright

这段代码会在安装时创建一个事件日志吗?

  •  0
  • Tom Wright  · 技术社区  · 15 年前

    advice of Henk

    不幸的是,我通常无法访问使用UAC的操作系统。下次我这样做,我希望安装会顺利进行。

    考虑到这一点,下面的代码中是否有明显错误的地方?

    using System;
    using System.Diagnostics;
    
    namespace EventLogCreator
    {
        class Program
        {
            static void Main(string[] args)
            {
                switch (args[0])
                {
                    case "-i":
                        if (!EventLog.Exists("SSD Log"))
                        {
                            Console.WriteLine("Log not found, creating.");
                            EventLog.CreateEventSource("setup", "SSD Log");
                        }
                        break;
                    case "-u":
                        if (EventLog.Exists("SSD Log"))
                        {
                            Console.WriteLine("Log found, removing.");
                            EventLog.Delete("SSD Log");
                        }
                        break;
                }
    
            }
        }
    }
    

    此项目的输出被吸入到安装项目中。然后我有两个自定义操作:

    1. 以“-i”作为参数安装时
    2. 以“-u”作为参数进行卸载时

    我不希望有免费的代码审查,但我冒险进入未知的这里,所以我很感激一个头部,如果我驼峰的垃圾位错误。

    PS我特别关心的是,我指定的是实际的日志名,而不是实际的源。这有关系吗?

    2 回复  |  直到 8 年前
        1
  •  2
  •   Schalk    15 年前

    最好使用“System.Diagnostics”程序集中的“EventLogInstaller”。

    当您创建一个自定义组件,然后将事件日志组件添加到设计图面,填写组件的属性,然后单击属性窗口中的“添加安装程序”链接/命令时,您可以看到这一点的实现。这将添加一个项目安装程序组件,其中将包含一个事件日志安装程序组件。

    还可以查看以下内容:

    EventLogInstaller Class

    安装工具(Installutil.exe)-msdn.microsoft.com/en-us/library/50614e95(VS.80).aspx

        2
  •  1
  •   Henk Holterman    15 年前

    但你测试这个不带UAC的应该没问题。如果成功了,就成功了。setup.exe以管理员身份运行