Будет ли этот код создавать EventLog во время установки? - PullRequest
0 голосов
/ 05 июля 2010

Следуя совету от Henk , я создал проект установки в VS10 с целью добавления настраиваемого действия. Мы надеемся, что это настраиваемое действие добавит EventLog во время работы от имени администратора (т.е. во время установки), а не заставит мое приложение создавать исключение в ОС с UAC.

К сожалению, у меня обычно нет доступа к ОС, которая использует 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 ]

2 голосов
/ 06 июля 2010

Возможно, вам будет лучше использовать EventLogInstaller, найденный в сборке "System.Diagnostics".

Эту реализацию можно увидеть, когда вы создаете пользовательский компонент, затем добавляете компонент журнала событий в область конструктора, заполняете свойства компонента, затем нажимаете ссылку / команду «Добавить установщик» в окне свойств. , Это добавит компонент установщика проекта, который будет содержать компонент установщика журнала событий.

Компонент установщика журнала событий - это то, что вы ищете, в основном это действие установщика Windows, которое можно запустить при создании пакета установщика Windows (MSI). Все, что вам нужно сделать, это указать действие установщика в «Редакторе пользовательских действий» проекта развертывания Visual Studio. В библиотеке MSDN довольно много информации о пользовательских действиях.

Также обратите внимание на следующее:

Класс EventLogInstaller

Средство установки (Installutil.exe) - msdn.microsoft.com/en-us/library/50614e95(VS.80).aspx

1 голос
/ 05 июля 2010

Я не могу вспомнить или получить доступ к деталям прямо сейчас, но иногда в этом (ужасном) пользовательском интерфейсе для setup-проектов должен быть список «стандартных» действий, среди прочего, для создания EventLog.Это был бы самый безопасный способ.

Но вы должны быть в порядке, тестируя это без UAC.Если это работает, это работает.Setup.exe запускается от имени администратора

...