C# — Установщик


Программа установки службы

Любая служба должна конфигурироваться в системном реестре. Все службы размещаются в разделе HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services. Просматривать содержащиеся в системном реестре записи можно с помощью утилиты regedit. Здесь содержатся сведения о типе службы, ее отображаемом имени, пути к ее исполняемому файлу, конфигурации запуска и т.д.. На рисунке для примера показано, как в системном реестре выглядит конфигурация службы W3SVC:

Подобная конфигурация может обеспечиваться с помощью классов установщиков из пространства имен System.ServiceProcess.

Чтобы добавить к службе программу установки, необходимо переключиться на представление визуального конструктора в Visual Studio и выбрать в контекстном меню пункт Add Installer (Добавить установщик). В результате создается новый класс ProjectInstaller, а также экземпляры классов ServiceInstaller и ServiceProcessInstaller.

Класс Installer

Класс ProjectInstaller унаследован от System.Configuration.Install.Installer. Этот класс является базовым для всех специальных установщиков. С помощью класса Installer можно создавать процедуры установки, основанные на транзакциях. В случае неудачного завершения такой процедуры становится возможным откат до предыдущего состояния и отмена всех изменений, которые были проведены после начала процедуры.

Внутри конструктора класса ProjectInstaller вызывается метод InitializeComponent():

Классы ProcessInstaller и ServiceInstaller

Внутри кода реализации InitializeComponent() создаются экземпляры классов ServiceProcessInstaller и ServiceInstaller. Оба этих класса унаследованы от ComponentInstaller, который, в свою очередь, унаследован от класса Installer.

Классы, унаследованные от ComponentInstaller, могут использоваться для настройки процесса установки. Не следует забывать о том, что процесс службы может предусматривать запуск более чем одной службы. Класс ServiceProcessInstaller может применяться для настройки процесса, который будет отвечать за определение значений для всех запускаемых внутри данного процесса служб, а класс ServiceInstaller — для настройки каждой из этих служб, т.е. для каждой службы должен применяться отдельный экземпляр ServiceInstaller. При наличии трех запускаемых внутри процесса служб потребуется добавить, соответственно, три экземпляра ServiceInstaller.

Здесь видно, что ServiceProcessInstaller производит установку программы, которая реализует класс ServiceBase. Класс ServiceProcessInstaller имеет свойства, предназначенные для всего процесса. Ниже приведено краткое описание этих свойств, к которым предоставляется доступ всем службам внутри процесса:

Username, Password

Указывает, от имени какой учетной записи пользователя должна запускаться служба в случае установки свойства Account в ServiceAccount.User.

Account

Позволяет указывать тип учетной записи службы.

HelpText

Представляет собой доступное только для чтения свойство, которое возвращает справочный текст относительно установки имени пользователя и пароля.

Процесс, применяемый для запуска службы, может быть определен в свойстве Account класса ServiceProcessInstaller с использованием перечисления ServiceAccount. Ниже приведено краткое описание всех значений, которые могут устанавливаться для свойства Account.

ServiceInstaller — это класс, который необходим всем службам. Для каждой службы внутри процесса он поддерживает следующие свойства: StartType, DisplayName, ServiceName и ServicesDependedOn. Краткое описание этих свойств приведено ниже:

LocalSystem

Установка этого значения указывает, что служба должна использовать высоко привилегированную учетную запись пользователя в локальной системе и выступать в роли компьютера в сети.

NetworkService

Подобно LocalService, это значение указывает, что учетные данные компьютера должны передаваться удаленным серверам, но в отличие от LocalSystem, оно подразумевает, что в локальной системе служба должна действовать от имени непривилегированной учетной записи пользователя. Как нетрудно догадаться по названию, это значение должно применяться только для тех служб, которые нуждаются в доступе к сетевым ресурсам.

LocalService

Это значение указывает, что любому удаленному серверу должны предоставляться анонимные учетные данные и служба должна обладать в локальной системе теми же привилегиями, что и служба NetworkService.

User

Установка для свойства Account значения ServiceAccount.User означает, что пользователь может определять учетную запись, которая должна использоваться в данной службе.

StartType

Свойство StartType указывает, должна служба запускаться вручную или автоматически. Возможные значения: ServiceStartMode.Automatic, ServiceStartMode.Manual, ServiceStartMode.Disabled. В случае установки для этого свойства значения ServiceStartMode.Disabled служба запускаться не будет. Такой вариант может быть удобен для тех служб, которые не должны запускаться в системе. Например, установка данного свойства в Disabled может потребоваться, если какой-то аппаратный контроллер не доступен.

DelayedAutoStart

В случае если для свойства StartType установлено не Automatic, это свойство игнорируется. Оно указывает, должна ли служба запускаться не сразу же после загрузки системы, а немного позже. Это свойство появилось в .NET 4 и поддерживается, начиная с Windows Vista.

DisplayName

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

ServiceName

Это свойство указывает, как должно вообще выглядеть имя службы. Его значение должно совпадать со значением ServiceName внутри класса ServiceBase в программе службы. Именно с его помощью конфигурация ServiceInstaller будет ассоциироваться с требуемой программой службы.

ServicesDependentOn

Это свойство указывает, какой набор служб должен запускаться перед запуском данной службы. Благодаря ему, при запуске службы сначала будут автоматически запускаться указанные зависимые службы и только потом сама служба.


Изменив имя службы в унаследованном от ServiceBase классе, не забудьте изменить и значение свойства ServiceName в объекте ServiceInstaller!

На стадии тестирования лучше устанавливать для свойства StartType значение Manual. Тогда при невозможности остановить службу (например, из-за присутствия в ней дефекта) перезапустить систему все равно будет получаться. В случае установки для StartType значения Automatic служба будет автоматически запускаться снова даже после перезагрузки системы. Удостоверившись, что служба действительно работает корректно, значение этого свойства можно будет легко поменять.

Класс ServiceInstallerDialog

Еще одним классом установщика в пространстве имен System.ServiceProcess.Design является ServiceInstallerDialog. Этот класс можно применять, если необходимо, чтобы во время установки службы системный администратор вводил имя пользователя и пароль учетной записи, которая должна для нее использоваться. Если установить свойство Account класса ServiceProcessInstaller в ServiceAccount.User, а свойства Username и Password — в null, то во время процесса установки на экране будет отображаться диалоговое окно Set Service Login (Установить регистрационную информацию для службы). В этом окне также есть возможность отменить процесс установки.

Утилита installutil

После добавления классов установщиков в проект с помощью утилиты installutil.ехе можно попробовать установить и удалить службу. Эта утилита позволяет производить установку любой сборки, которая имеет класс Installer. Для выполнения установки он вызывает метод Install() класса, унаследованного от Installer, а для удаления ранее установленной сборки — соответственно, метод Deinstall().

Команды, которые можно использовать для установки и удаления рассматриваемой примера службы, выглядят следующим образом:

Глава 10. Создание дистрибутива для Windows приложения в Visual Studio 2005

Создание дистрибутива для Windows приложений это начальный этап процесса развертывания (распространения готового приложения или компонента на другие компьютеры).

В Visual Studio развертывание приложений основано на использовании технологии установщика Microsoft Windows, включающего и средства для создания загружаемых файлов.

Существует две возможности создания проектов установки:

Параграф 1. Создание связанного проекта установки

После создания Windows приложения (далее использован проект решения с именем Hello), создадим установочные файлы для его инсталляции на компьютере. Для этого, в контекстном меню проекта (верхний узел в дереве Solutation Explorer), в окне Solution Explorer выбираем пункты Add и New Project (Рис.1.).

Рис.1. Добавление установочного проекта к решению

В левой части мастера Add New Project (Рис.2.), в окне Projeсt Types, выбираем папку Other Project Types\Setup and Deployment, а в правой части — Setup Project. Задаем имя проекта и его размещение (например, HelloSetup — имя не должно совпадать с именем проекта приложения). На данном этапе можно воспользоваться и Setup Wizard (правда, он позволяет сделать далеко не все, что часто требуется). Для большего понимания, пройдем все шаги без использования Setup Wizard.

Рис.2. Добавление установочного проекта к решению

Нажимаем OK. Будет создан установочный (Setup) проект (Рис.3.).

Рис.3. Установочный проект

Среди свойств проекта (Рис.4.): AddRemoveProgramsIcon, Author, Description, DetectNewerInstalledVersion, Keywords, Localization, Manufacturer, ManufacturerUrl, ProductCode, ProductName, RemovePreviousVersions, SearchPath, Subject, SupportPhone, SupportUrl, Title, UpgradeCode, Version. Большинство из них понятны, и могут быть заданы автором программы, исходя из принятых в организации требований. В данном проекте установлено: Manufacturer — Private, ProduktName — HelloSetup, Title — Hello. Свойство AddRemoveProgramsIcon — позволяет установить иконку для описания программы в панели Установка и удаление программ (Пуск\Панель управления\Установка и удаление программ).

Для установки иконки можно выбирать в выпадающем списке AddRemoveProgramsIcon — Browse, затем в окне Icon вновь Browse, в окне Select Item in Project, в его выпадающем списке Look in, выбрать Application Folder. Далее, кнопочкой Add File, вызвав диалог Add File, выбрать любую иконку для Application Folder из имеющихся в файловой системе. Но это можно сделать и по другому, что позволит использовать иконку exe файла приложения (посмотреть установленную иконку приложения или установить новую можно на вкладке Application\Resurses\Icon — контекстное меню приложения — пункт Properties). Как использовать иконку приложения поговорим чуть позже.

Рис.4. Свойства установочного проекта

А пока вернемся к Рис.3. — в левой части окна представлены папки файловой системы компьютера, в одну из которых будет установлено приложение, и, в которые, будет возможно добавить ссылки на папку с установленной программой (пока все папки пусты).

Далее, выделяем папку Application Folder (сюда будет установлен проект). Папки могут быть добавлены при использовании контекстного меню узла File System on Target Machine. Обычно приложения устанавливается в Application Folder. Выбираем пункты Add и Project Output (это же можно сделать и через контекстное меню узла Application Folder).

Рис.5. Добавление приложения Windows в проект установки

Далее, в диалоговом окне Add Object Output Group (Рис.5.) выбираем проект Hello и опцию Primary Output. После нажатия OK в папке Appliсation Folder появится пункт, означающий, что в проект установки добавлены требуемые файлы из проекта Hello (Рис.6.).

PS: На данном этапе в проект можно добавлять папки, файлы и сборки. Например, программа работает с запасом картинок, который должен быть размещен в директории Images. При отладке мы поместим эту директорию с файлами в Debug или Release, но инсталляционная программа ее не подхватит. В этом случае, мы и добавим к установочному проекту директорию Images через пункт Add\Folder, а затем наполним ее файлами — Add\File...

Рис.6. Добавление приложения Windows в проект установки

Добавим ссылки на папку, куда будет установлено приложение (у нас в C:\Programm Files\Privat\Hello), в меню Пуск\Программы, и на рабочий стол Windows. Рассмотрим данный процесс на примере добавления папки на рабочий стол (он полностью аналогичен процессу добавления папки в меню Пуск\Программы). Для добавления ссылки необходимо:

1. В свойствах узла Users Desktop установить свойство AlwaysCreate в true. Это всегда необходимо, когда shortcut добавляется к специальной папке (Рис.7.).

2. В контекстном меню редактора выбрать Create New ShortCut. В окне Properties для Shorcut to Users Desktop (Рис.8.) нажимаем кнопочку с тремя точками в свойстве Target. В появившемся окне Select Item In Project (Рис.8.) выбираем узел Application Folder и нажимаем кнопку OK.

Рис.7. Создание ярлыка для папки приложения на рабочем столе Windows

Рис.8. Создание ярлыка для папки приложения на рабочем столе Windows

Как результат, в окне Select Item In Project появится ссылка Shortcut to Primary output from Hello (Active).


После нажатия кнопки OK эта ссылка будет перенесена в окно редактора.

Далее можно изменить предложенное длинное имя «Shortcut to Primary output from Hello (Active)» — на то, под которым мы хотим видеть иконку ссылки на папку программы на рабочем столе (например, Hello). Если на данном этапе выполнить Rebuild решения и, далее, установить его, то на рабочем столе появится ссылка на папку, куда будет установлена программа, но у ссылки пока не будет иконки (вернее, будет стандартная иконка).

Цукерберг рекомендует:  Создаем свой первый to do list на JavaScript

Создадим иконки для ссылок на рабочем столе, в меню Пуск\Программы, а также, для записи об установленной программе в окне Пуск\Панель управления\Установка и удаление программ (стандартная запись в окне Установка и удаление программ — один из результатов работы программы установки).

Добавление иконок для всех перечисленных случаев, во многом аналогично по последовательности действий. Отличие заключается лишь в том, что для записи о программе в окне Установка и удаление программ, перечисленные ниже действия выполняются для узла проекта установки и свойства AddRemoveProgramsIcon, а для остальных папок, для свойств Icon имен ссылок (у нас, имен ссылок Users Desktop и Users Programm Menu — Hello). Добавление иконок показано на Рис.9. и Рис.10.

Для установки иконки, в выпадающем списке соответственно перечисленных выше свойств, выбираем — Browse (Рис.9.), затем в окне Icon вновь Browse, в окне Select Item in Project, в его выпадающем списке Look in, выбираем Application Folder. Установив Files of Type в All Files выбираем Primary Output From Hello (Active), нажимаем OK. Иконка будет извлечена из ресурса приложения (Рис.10., справа) и, по нажатию кнопки OK, добавлена как иконка для записи или папки.

Для добавления иконки в другие папки, от момента выбора в выпадающем списке пункта Browse, как для рабочего стола, так и для Пуск\Программы в свойстве Icon (а не AddRemoveProgramsIcon для записи в Установка и удаление программ), все повторяется без единого отклонения.

Рис.9. Создание иконок для папок и записи в окне Установка и удаление программ

Рис.10. Создание иконок для папок и записи в окне Установка и удаление программ

В окне Select Item In Project, после выбора Application Folder можно также использоать и любой файл .ico, нажав кнопку Add File, как мы об этом говорили выше.

Вновь перекомпилируем проект (в контекстом меню Solution Explorer узла HelloSetup пункт Rebuild Solutation). В папке Release для HelloSetup будут созданы файлы setup.exe, hellosetup.msi. Это инсталляционные файлы приложения.

После запуска файла setup.exe будет выполнена установка приложения — для приложения появится отдельная запись в Пуск\Панель управления\Установка и удаление программ, а ссылка на папку приложения, в виде выбранной иконки — на рабочем столе и в меню Пуск\Программы.

Параграф 2. Создание разделенного с проектом решения проекта установки

Обратим внимание на то, что предыдущий способ установки приложения не позволяет создать ссылку на непосредственно exe файл — его пока нет — он будет создан при компиляции. И, хотя это, не столь важно, ссылки на рабочий стол могут вытащить и школьники, но другой недостаток предыдущего способа — хранить два проекта вместе — во многом говорит о необходимости отдать предпочтение способу, описанному ниже.

Создадим новый проект, как показано на Рис.11. и Рис.12.

Рис.11. Создание установочного проекта

Рис.12. Создание установочного проекта

Свойства проекта, созданные папки мы рассматривали выше, поэтому не будем аовторять изложенное выше. Установим режим компиляции проекта Release. В этом режиме в папке bin\Release, будет сформирован exe файл, перенесены необходимые библиотеки при их использовании и исключена отладочная информация. Исходный проект (Hello) также должен быть скомпилирован в режиме Release.

Свойства самого проекта пока нового ничего нам не дают (Рис.13.).

Рис.13. Свойства установочного проекта

Добавим исполняемый файл Hello.exe в папку Application Folder (не забудем перед этим установить свойство папки AlwaysCreate в true). Для добавления файла, в контекстном меню папки Application Folder, выбираем пункт Add\File и находим файл Hello.exe из папки bin\Release решения Hello (C:\SamplesC#\Hello\bin\Release\). После выбора найденного файла и нажатия кнопки OK, имя файла появляется в окне Name (Рис.14.).

Рис.14. Добавление исполняемого файла в проект установки

Аналогично перенесем все файлы из директории \bin\Release\ в папку (если он там не один).

После этого можно приступить к созданию ссылок и иконок.

Иконка для установочной записи в Установка и удаление программ выбирается точно также, как описано выше (свойство AddRemoveProgramsIcon, в качестве ресурса в Application Folder в окне Select Item In Project выбираем Hello.exe файл Рис.9. и Рис.10.).

Добавление ссылок на рабочий стол и в меню Пуск\Программы немного отличается от предыдущего способа. В контекстном меню файла Hello.Exe дважды выбираем пункт Create Shortcut to Hello.Exe. В окне Name появятся два имени ссылок. Сразу в окне Properties для ссылок переименуем их имена на те, с которыми мы хотим их видеть на рабочем столе и в меню Пуск\Программы. Ссылки созданы, осталось перетащить эти ссылки на соответствующие папки (Рис.15., Рис.16.).

Рис.15. Добавление ссылок на рабочий стол и в меню Пуск\Программы

Рис.16. Добавление ссылок на рабочий стол и в меню Пуск\Программы

Осталось повторить, то, что мы делали. Установить свойства папок AlwaysCreate в true, и снабдить ссылки иконками.

Откомпилируем проект (в контекстом меню Solution Explorer узла HelloSetup — пункт Rebuild Solutation). В папке Release для HelloSetup будут созданы файлы setup.exe, hellosetup.msi. Это инсталляционные файлы приложения. После запуска файла setup.exe будет выполнена установка приложения — для приложения появится отдельная запись в Пуск\Панель управления\Установка и удаление программ, а ссылка на exe файл приложения Hello, в виде иконки приложения — на рабочем столе и меню Пуск\Программы.

Молчанов Владислав 26.08.2004г.

Адаптировано к VS 2005 29.11.2006г.

Создайте программу установки для приложений С# и включите установщик .NET Framework в настройку

Я закончил свое приложение С#, но у меня есть небольшая проблема:

Когда я пытаюсь запустить приложение на другом ПК, мне всегда нужно установить .NET Framework 4.0.

Есть ли что-то сделать, чтобы заставить его работать без установки рамки из Интернета?

Я пробовал до InnoSetup для приложения VB6, но я не уверен, что он будет работать для .NET 4.0!

Используйте проект установки Visual Studio. Проект установки может автоматически включать установку .NET Framework в ваш установочный пакет:


Вот мой шаг за шагом для применения форм Windows:

Создать настройку проекта. Вы можете использовать Мастер настройки.

Выберите тип проекта.

Откройте настройки проекта.

Решил включить .NET Framework.

Сборка проекта настройки

Примечание. Проекты установщика Visual Studio больше не упакованы с Visual Studio. Однако в Visual Studio 2013 вы можете загрузить их, используя:

Вам нужно создать установщик, который будет проверять, требовал ли пользователь .NET Framework 4.0. Вы можете использовать WiX для создания установщика. Он очень мощный и настраиваемый. Также вы можете использовать ClickOnce для создания установщика — он очень прост в использовании. Это позволит вам с одним щелчком мыши добавить требование для установки .NET Framework 4.0.

Включите в свой проект проект установки ( New Project > Other Project Types > Setup and Deployment > Visual Studio Installer ). В нем есть варианты включения установщика фреймворка. Ознакомьтесь с этим Руководство по развертыванию MSDN.

WiX — это путь для новых инсталляторов. Если WiX один слишком сложный или недостаточно гибкий для GUI, рассмотрите возможность использования SharpSetup — он позволяет вам создавать GUI установщика в WinForms WPF и имеет другие приятные функции, такие как переводы, autoupdater, встроенные предварительные условия, улучшенное автозаполнение в VS и многое другое.

(Отказ от ответственности: я являюсь автором SharpSetup.)

Как создать установщик для .net службы Windows с помощью Visual Studio — c#

Как создать установщик для Windows Service, который я создал с помощью Visual Studio?

    3 4
  • 12 окт 2020 2020-10-12 11:05:37
  • Kelsey

4 ответа

классы InstallUtil (ServiceInstaller) считаются анти-шаблонами сообществом установщика Windows. Это хрупкий, из процесса, изобретающий колесо, который игнорирует тот факт, что установщик Windows имеет встроенную поддержку служб.

Проекты развертывания Visual Studio (также не высоко оцененные и устаревшие в следующей версии Visual Studio) не имеют встроенной поддержки служб. Но они могут потреблять модули слияния. Поэтому я хотел бы взглянуть на эту статью в блоге, чтобы понять, как создать модуль слияния с помощью XML-установщика Windows, который может выразить службу, а затем использовать этот модуль слияния в вашем решении VDPROJ.

  • 12 окт 2020 2020-10-12 11:05:39
  • Christopher Painter

Nor Kelsey, а также решения Brendan для меня не работают в Visual Studio 2015 Community. Ниже приведены мои шаги, как создать сервис с установщиком:

  • Запустите VS, File- > New- > Project
  • Выберите .NET Framework 4 в разделе «Поиск установленных шаблонов» «Сервис»
  • Выберите «Служба Windows». Введите имя и местоположение. Нажмите OK.
  • Дважды щелкните Service1.cs, щелкните правой кнопкой мыши в дизайнере и выберите «Добавить установщик»
  • Дважды щелкните ProjectInstaller.cs. Для serviceProcessInstaller1 откройте вкладку «Свойства» и измените значение свойства «Учетная запись» на «LocalService». Для serviceInstaller1 измените «ServiceName» и установите «StartType» в «Automatic».

Двойной щелчок serviceInstaller1. VS создает событие «serviceInstaller1_AfterInstall». Введите код:

Построить решение. Щелкните правой кнопкой мыши по проекту и выберите «Открыть папку в проводнике файлов». Перейдите в binDebug.

  • Создайте файл install.bat с текстом:
    1. Создайте файл uninstall.bat(изменение в строке предварительного просмотра /i в/u)
    2. Чтобы установить и запустить сервис, запустите install.bat, чтобы остановить и удалить run uninstall.bat


    • 12 окт 2020 2020-10-12 11:05:38
    • Alexey Obukhov

    Я выполняю первый шаг Kelsey, чтобы добавить классы установщика в мой сервисный проект, но вместо создания установщика MSI или setup.exe я делаю сам процесс установки/деинсталляции службы. Здесь немного пример кода из одной из моих служб, которую вы можете использовать в качестве отправной точки.

    • 12 окт 2020 2020-10-12 11:05:38
    • Brendan Leber

    В сервисном проекте сделайте следующее:

    • В проводнике решений дважды щелкните файл services.cs. Он должен отобразить экран, который является серым, и говорит о перетаскивании материала из панели инструментов.
    • Затем щелкните правой кнопкой мыши по области серого и выберите добавить установщик. Это добавит файл проекта установщика в ваш проект.
    • Тогда у вас будет 2 компонента в проекционном представлении ProjectInstaller.cs(serviceProcessInstaller1 и serviceInstaller1). Затем вы должны настроить свойства по мере необходимости, такие как имя службы и пользователя, которые должны выполняться как.

    Теперь вам нужно создать проект установки. Лучше всего использовать мастер установки.

    Щелкните правой кнопкой мыши по вашему решению и добавьте новый проект: Добавить > Новый проект > Проекты установки и развертывания > Мастер установки

    а. Это может незначительно отличаться для разных версий Visual Studio. б. Visual Studio 2010 находится в: Установка шаблонов > Другие типы проектов > Установка и развертывание > Установщик Visual Studio

    На втором шаге выберите «Создать установку для приложения Windows».

  • На третьем шаге выберите «Первичный вывод из. «
  • Нажмите «Готово».
  • Затем отредактируйте установщика, чтобы убедиться, что правильный выход включен.

    • Щелкните правой кнопкой мыши проект установки в своем обозревателе решений.
    • Выберите «Просмотр» > «Пользовательские действия». (В VS2008 это может быть View > Editor > Custom Actions)
    • Щелкните правой кнопкой мыши действие «Установка» в дереве пользовательских действий и выберите «Добавить пользовательское действие. «
    • В диалоговом окне «Выбрать элемент в проекте» выберите «Папка приложения» и нажмите «ОК».
    • Нажмите «ОК», чтобы выбрать опцию «Первичный выход из. «. Необходимо создать новый node.
    • Повторите шаги 4-5 для фиксации, отката и удаления.

    Вы можете изменить имя выхода установщика, щелкнув правой кнопкой мыши проект установщика в своем решении и выберите «Свойства». Измените «Имя выходного файла:» на все, что вы хотите. Выбрав проект установщика и просмотрев окна свойств, вы можете отредактировать Product Name , Title , Manufacturer и т.д.

    Установка программ для программирования на языке C# (sharp)

    Для того, чтобы начать писать программы на языке C# (sharp) потребуется специализированное программное обеспечение. Такой инструмент предоставляет небезызвестная компания Microsoft и называется он Visual Studio.

    О Visual Studio

    Это профессиональная среда разработки, она обладает колоссальным инструментарием для разработки программ и позволяет писать код на различных языках (C/C++, C#, Python и другие). Не стоит пугаться слова «профессиональная», если Вы начнёте свой путь на дороге программирования с этой среды разработки, то в будущем у Вас будет большой шанс выйти в свет как толковый программист.

    Цукерберг рекомендует:  Почему WordPress лучше чем Joomla

    Visual Studio также имеет сокращённое название в виде двух латинских букв VS.

    Данный продукт для написания и обслуживания кода используется тысячами IT-компаний и умение обращаться с VS будет достойным плюсом для начинающего разработчика.

    Установка Visual Studio

    Так как это мощный продукт он стоит не дёшево, но к нашему всеобщему счастью существует бесплатная версия под названием Visual Studio Community, её и будем использовать в дальнейшем. Не беспокойтесь, в данной урезанной версии присутствует всё, что потребуется для освоения языка программирования C#.

    1. Удостоверьтесь, что у Вас есть свободными около 50 гигабайтов памяти, среда объёмная по содержанию и наполнению;
    2. Стандартно скачайте инсталлятор (установщик, по-нашему) по ссылке: https://www.visualstudio.com/ru/thank-you-downloading-visual-studio/?sku=Community&rel=15. Вас перебросит на другую страницу (скачивание начнётся автоматически, если нет, то действуйте согласно инструкции на странице);
    3. Убедитесь, что Вы подключены к сети интернет, это потребуется для успешной установки;
    4. После его успешной загрузки на компьютер запустите установщик от имени администратора (щёлкните правой клавишей мыши по иконке -> запуск от имени Администратора);
    5. Откроется обычный мастер установки, следуйте инструкции;
    6. Запустите установку и не трогайте компьютер, установка будет долгой. На сколько долго зависит от Вашего ПК, чем он мощнее, тем меньше времени потребуется (я занимаюсь разработкой профессионально, поэтому у меня стоит Enterprise версия, установка заняла около часа);
    7. После успешной установки появится соответствующий ярлык VS на рабочем столе и в меню пуск;


    На этом установка всего необходимого для программирования на языке C# закончена.

    Таким нехитрым образом мы разобрались с «установка программ для программирования на языке C# (sharp)»!

    Создаем службу (сервис) на C#

    Приветствую всех сегодня рассмотрим тему касающуюся создание служб на C# под Windows.

    Службы Microsoft Windows (NT-Services) – это процессы, выполняющиеся в фоновом режиме, не имеющие пользовательского интерфейса и работающие в отдельном сеансе. Службы могут запускаться автоматически при загрузке компьютера, даже если пользователь не вошел в систему.

    Для мониторинга и управления службами Windows можно применять доступную в консоли ММС оснастку Services (Службы), которая находится в узле Computer Management (Управление компьютером).

    Запустить Службу компонентов, можно выбрать Пуск>Средства администрирования>Служба компонентов

    Перед вами запуститься консоль управлением службами установленными у вас системе:

    Службу компонентов можно так же запустить другим способом, открыть консоль win+r и ввести services.msc

    Создание службы:

    Для этого запустите Visual Studio выберите Фаил>Создать проект>Служба Windows

    В этом примере я покажу как программно создать службу без использования конструктора:

    После запуска проекта, переходим в код программы, в моем случаи он выглядит так:

    Обратите внимание, мы работаем в файле Service1.cs наследуемый от System.ServiceProcess.ServiceBase. а не в Program.cs

    ServiceBase — базовый класс для службы, которая будет существовать в рамках служебного приложения. При создании нового класса службы, его необходимо унаследовать от класса ServiceBase.

    Теперь зададим логику нашей программы, к примеру наша служба будет сохранять в фаил время запуска компьютера и время завершения работы.

    Для этого мы переопределили метод который выполняется при получении события изменения от сеанса сервера терминалов. При возникновении события, происходит вызов метода, и проверка условий, включения или выключения компьютера.

    Основной класс у нас готов, теперь нужно создать класс установщик. Так как п еред запуском службы Windows ее необходимо установить при этом служба будет зарегистрирована с помощью диспетчера управления службами. В проект можно добавить установщики, которые обрабатывают сведения о регистрации.

    Для этого выберите наш проект и нажмите правую кнопку мыши, выберите добавить компонент, перед вами откроется окно в котором вам нужно выбрать Класс установщик, как показано ниже:

    Настройки произвел в конструкторе студии таким образом:

    Перейдем к коду этого класса, в нем я так же рассмотрел способ того как можно программно включить опцию :

    Вход в систему: С системой учетной записью и установил программно галочку Разрешить взаимодействие с рабочим столом. Хотя судя из документации говориться что это сделать не возможно. Но я так понял что данная возможность была упразднена и в windows 10 от нее толку нет.

    Раньше данная опция позволяла взаимодействовать с пользователем, делать скриншот экрана, и даже перехватывать нажатие клавиш.

    Создание служб Windows с помощью C#

    Служба Windows – это специальная служебная программа, которая запускается операционной системой автоматически при загрузке вне зависимости от статуса пользователя или вручную (в зависимости от настроек).

    Службы работают в фоновом режиме и, как правило, выполняют различные технологические задачи.

    Также, в отличие от «обычных» программ, службы не имеют графического интерфейса и управляются при помощи специального диспетчера.

    Мы не станем вдаваться в подробности работы служб Windows как таковой потому, что она достаточно подробно описана в литературе по работе с Windows.

    В этой статье мы рассмотрим пример создания службы Windows с использованием языка программирования C#.

    Создание службы

    Для того, чтобы создать проект службы необходимо в окне создания нового проекта выбрать пункт «Служба Windows ».

    После этого Visual Studio создаст новый проект с «каркасом» службы.

    К сожалению, в отличие, например, от Windows Forms или консольного приложения данный «каркас» не самодостаточен. То есть, установить в систему и запустить в работу такую «пустую» службу нельзя. Необходимо дописать рабочий функционал и логику установки в систему.

    В качестве примера создадим службу, которая будет каждую секунду записывать в текстовый файл текущее время.

    Во избежание возможных проблем в будущем, настоятельно рекомендуется рабочий функционал выносить в отдельный класс.

    Ниже представлен такой класс для нашей службы.

    Путеводитель по системам для создания инсталляторов


    Clickteam Install Creator 2

    Компания Clickteam выпускает простые и дружелюбные продукты для разработчиков: например, Clickteam Fusion, The Games Factory, Multimedia Fusion. В этом же ряду находится программа Install Creator. Основное преимущество продукта — быстрое создание дистрибутива при помощи пошагового мастера.

    Разделы настроек расположены в такой строгой последовательности в виде вкладок. Вначале указываются данные (Files), текстовое содержание диалогов (Wizard Text), формат окна (Window), дополнительные настройки (Options), настройки деинсталлятора (Uninstaller), размер дистрибутива (Build). После нажатия на Build запускается компиляция инсталлятора, остается лишь указать место его расположения.

    Инсталлятор занимает 65 КБ, с учетом деинсталлятора это 105 КБ. Вдобавок к этому, в Install Creator применяется один из двух алгоритмов компрессии (zipper/ differentiator), оптимальный вариант определяется автоматически. При необходимости, данные можно поместить в пакет отдельно от инсталлятора.

    Функциональность Clickteam Install Creator унифицирована, отсутствуют некоторые важные опции. Так, мультиязычность не поддерживается, русский язык в перечне локализаций и вовсе отсутствует. Интеграция со сторонними решениями не предусмотрена, поэтому работа с большими проектами (подразумевающими множество связей в системе) будет неудобной. Программа не позволяет создавать обновления, патчи. Впрочем, в последнем случае, можно использовать Patch Maker — разработку Clickteam.

    В незарегистрированной версии Install Creator присутствует реклама. Профессиональная версия, помимо снятия этого лимита, позволяет включать в дистрибутив несколько редакций, устанавливать лицензионное ограничение для пользователя инсталлятора.

    Резюме. Возможности Install Creator будут востребованы при работе с несложными проектами. Получаемые инсталляторы содержат базовый набор пользовательских опций, среди которых нет выбора языков или профиля установки. Определенно, это максимально простое решение среди всех упомянутых в обзоре инсталляционных комплексов.

    Actual Installer

    Actual Installer — программа для создания достаточно сложных установщиков Windows Installer без использования сценариев. В базовый набор возможностей входят мультиязычность, эффективная компрессия, детальная настройка интерфейса, командная строка и прочие функции, перечисляемые ниже.

    Использование пошагового мастера не предполагается, но доступно окно параметров для нового проекта. Определив базовые сведения продукта, можно перейти в главное окно программы. Опции расположены в 5 секциях — «Общее», «Установка», «Диалоги», «Система» и «Реестр».

    В разделе General (Общее) указывается информация о проекте, здесь же настраивается внешний вид мастера установки. В процессе установщик может проверять системные требования (такие как версия ОС, привилегии пользователя) и зависимости (Microsoft .NET Framework, Internet Explorer, Adobe Reader, Java, SQL Server и прочие). При отсутствии указанных компонентов, инсталлятор потребует от пользователя скачать и установить их.

    В Installation («Установка») — расположение файлов и папок, расположение исполнимого файла, настройки процессов установки, обновления и деинсталляции. Оба процесса могут осуществляться в тихом режиме, не требуя вмешательства пользователя. В довесок к установщику, может использоваться мастер обновлений (Actual Updater).

    Dialogs («Диалоги») предоставляют доступ к «начинке» разделов, включая текст лицензионного соглашения, readme файла, в том числе в формате RTF. Здесь же — выбор языков локализации, причем русский язык числится в списке. Ненужные разделы установщика легко отключить.

    System («Система») — настройка системных изменений, вносимых при инсталляции: ярлыки, ключи реестра, переменные и пользовательские команды.

    Register («Реестр») — установка файловых ассоциаций, переменных окружения, библиотек.

    После выставления нужных опций достаточно нажать на кнопку Build Project — инсталлятор готов к запуску. В случае, если при создании инсталлятора была пропущена важная опция, при компиляции Actual Installer даст об этом знать и укажет на ошибку.

    Резюме. Actual Installer включает в себя практически все стандартные параметры и опции проекта. Это «промежуточный» вариант между очень простыми (вроде Clickteam Install Creator) и более тяжеловесными решениями, о которых также пойдет речь.

    CreateInstall

    CreateInstall — инструментарий для создания установщиков. В его основу заложено две особенности — контроль над процессом установки и неограниченная расширяемость. Обе возможности реализованы благодаря языку программирования Gentee, применяемому для написания сценариев.

    Интерфейс CreateInstall разбит на 3 вкладки — «Проект», «Скрипт установки» и «Скрипт деинсталляции». Первый раздел позволяет задать общие настройки инсталлятора: информация о продукте, поддерживаемые языки, пути, внешний вид. Дополнительно, инсталлятор можно защитить цифровой подписью и установить пароль.

    «Проект» — не равноценная замена двух последующих разделов, т. е. для создания дистрибутива нужно тщательно настроить скрипты установки и деинсталляции. Соответствующие параметры отображаются в виде групп, можно отобразить их единым списком.

    Дополнением для CreateInstall служит утилита Quick CreateInstall. Она значительно упрощает создание инсталлятора, предоставляя только базовые настройки проекта. Из Quick CreateInstall в дальнейшем проект можно импортировать в CreateInstall.

    Код проекта не предназначен для самостоятельного редактирования, переноса в IDE-среду, экспорта. Хотя язык Gentee имеет отличный потенциал: как минимум, это переменные и функции, условные выражения и синтаксис, базирующийся на C, C++ и Java.

    Существует 3 редакции программы — полная, light (простая) и бесплатная. Список различий между ними опубликован здесь. По большей части, отсутствующие функции бесплатной редакции программы видны при навигации по группам настроек скриптов.

    Интерфейс и справка доступны на русском языке.

    Резюме. CreateInstall — функциональная и доступная для понимания среда. Инструментарий CreateInstall не так уж и беден и позволяет обходиться собственными средствами. Но к недостаткам все же следует отнести замкнутость программы «в себе», подразумевая функции импорта и экспорта.

    Advanced Installer

    Advanced Installer основывается на технологии Windows Inslaller, позволяя создавать msi-, exe- и других видов дистрибутивов. Этому способствует продуманный интерфейс и работа с проектами. В Advanced Installer можно обнаружить немало возможностей, которых нет в других подобных комплексах, о чем ниже.

    Примечательно, прежде всего, разнообразие проектов: сюда входят инсталляторы, Java-установщики, обновления, дополнения, модули слияния и другие. В разделе меню Installer собраны команды импорта проектов из Visual Studio, RAD Studio, Real Studio, Visual Basic. Здесь раскрывается потенциал Advanced Installer во взаимодействии с IDE-средами.

    Для каждого из выбранных типов проекта предусмотрен детальный мастер настройки. Есть общие шаблоны — Simple, Enterprise, Architect или Professional. Большая часть проектов доступна только для определенных типов лицензии, общедоступные проекты обозначены как None в графе License Required.

    Как уже сказано, при создании проекта можно воспользоваться пошаговым мастером, где, в частности, доступен выбор способа распространения пакета, языков локализации, настройка пользовательского интерфейса, ввод текста лицензии и другие опции. Advanced Installer позволяет выбрать вариант распространения программы — оставить данные без компрессии, разделить на CAB-архивы, сохранить в MSI и др., добавить цифровую подпись, потребовать ввод серийного номера и т. д.

    Главное окно Advanced Installer (редактор проекта), в простом режиме отображения (Simple), содержит несколько секций:

    • Product Information (Информация о продукте) — ввод сведений о продукте, параметры установки.
    • Requirements (Требования) — указание аппаратных и системных требований, зависимостей ПО. Также имеется возможность создания пользовательских условий.
    • Resources (Ресурсы) — редактор ресурсов (файлов и ключей реестра).
    • Deployment (Развертывание) — выбор типа распространения продукта. Это может быть MSI, EXE или веб-инсталлятор. Для MSI, EXE ресурсы можно поместить отдельно от инсталлятора.
    • System Changes — переменные среды.
    Цукерберг рекомендует:  Обучение - помогите, браузер не выполняет действия

    При выборе ресурсов могут использоваться файлы, ключи реестра, переменные окружения, конфигурационные ini, драйверы, базы данных и переводы. С помощью модулей объединения можно добавить и другие ресурсы, такие как сервисы, разрешения, ассоциации и др.

    Для выполнения более сложных задач позволяется использовать пользовательские действия, EXE, DLL или скрипты, написанные на C, C++, VBS или JS. Для создания сценариев предусмотрен удобный редактор.

    Однако следует отметить, что в режиме Simple доступна лишь малая часть разделов. Работая с Advanced Installer в ознакомительном режиме, есть смысл зайти в настройки и переключиться в другой режим работы с проектом. После этих действий становятся доступны новые подразделы редактора.

    Резюме. Благодаря различным редакциям продукта (включая бесплатную), возможностям импорта, множеству шаблонов и схем, редактору проектов — Advanced Installer будет интересен широкой аудитории.


    BitRock InstallBuilder

    InstallBuilder — кроссплатформенная среда для создания инсталляторов. В перечень поддерживаемых систем входят: Windows ME — Windows 8, Mac OS X, FreeBSD, OpenBSD, Solaris (Intel & Sparc), AIX, HP-UX, IRIX, Linux (Intel x86/x64, Itanium, s390 & PPC). Инсталляторы доступны как для настольного, так и сетевого ПО. В первой части путеводителя уже рассматривался продукт IzPack, но для InstallBuilder характерна поддержка языков написания, включая не только Java, но и PHP, Perl, Python, Ruby, C/C++ и .NET/Mono.

    Интерфейс программы доступен на русском языке. Для работы с проектом используется очень простая графическая оболочка. Присутствуют следующие секции с настройками:

    • Product Details («Информация о продукте») — информация о проекте.
    • Files («Файлы») — проводниковый интерфейс для добавления файлов
    • Advanced («Расширенные настройки») — наиболее интересный раздел, где, пожалуй, и раскрывается вся мощь BitRock Installer. Для работы с проектами используется формат XML (см. обзор WiX в первой части), возможна совместная работа, ручная настройка проектов с поддержкой сценариев. Встроенные действия позволяют автоматизировать процессы установки и объединять задачи, делая их доступными в несколько кликов. Таким образом можно проверять зависимости, добавлять переменные окружения, изменять реестр и файловую систему и прочее. Для редактирования сценариев используется встроенный, очень простой, XML-редактор.
    • Customization («Настройка») — настройка пользовательского интерфейса инсталлятора, переменных окружения, пост-установочных действий, платформ, разрешений и компрессии. Для сжатия применяется ZIP/LZMA-компрессия. Можно создать тихий установщик, работающий в текстовом режиме.
    • Packaging («Упаковка») — для отслеживания ошибок имеется встроенный дебаггер. При построении легко создать кроссплатформенный инсталлятор. На выходе он использует «родную» среду ОС (это относится к графическим системам Windows, KDE и Gnome).

    Резюме. BitRock InstallBuilder рекомендуется, прежде всего, для создания кроссплатформенных продуктов. Сценарий, основанный на XML-спецификациях, удобен в обращении, проект легко импортировать и экспортировать для редактирования во внешней среде. Таким образом, на основе данного XML-сценария можно быстро генерировать инсталляторы для всех требуемых платформ.

    InstallMate

    InstallMate представляет собой инструментарий для создания дистрибутивов на основе Windows Installer. Основные особенности: интуитивная графическая среда, широкий выбор элементов установки, проверка зависимостей, детальная настройка внешнего вида инсталлятора, поддержка компонентов, локализаций и расширений. Дистрибутивы, созданные с помощью InstallMate, отличаются компактностью и скоростью работы.

    Мастер создания нового проекта позволяет выбрать существующий шаблон и указать начальные параметры — языки локализации (один или несколько), имя продукта.

    Можно импортировать созданный проект или воспользоваться редактором InstallMate. Кстати говоря возможности импорта не впечатлили: поддерживаются продукты компании Tarma и проекты Visual Basic.

    Главное окно программы содержит разделы с параметрами, разделенные, условно, на три секции:

    • Общие настройки: детальная информация о проекте, программные зависимости, системные требования, компоненты, а также опции инсталлятора. В боковой панели Package можно также указать тип инсталлятора, компрессии, ссылку на скачивание (в случае с веб-инсталлятором), пароль на установку. В один инсталлятор можно добавить несколько пакетов.
    • Компоненты: включение в дистрибутив элементов и связей: это файлы и папки, ключи реестра, ini-конфиги, переменные среды, файловые ассоциации, COM-классы, сервисы.
    • Опции инсталлятора: с помощью редактора можно отредактировать текст диалогов. Предусмотрена гибкая настройка локализаций, InstallMate поддерживает 19 языков по умолчанию. Можно создать один дистрибутив с несколькими локализациями либо несколько проектов с одним языком. В этом же разделе доступны пользовательские действия, а также переменные — включая 250 предустановок. Расширить функциональность пакета можно с помощью расширений и DLL-библиотек.

    Как было отмечено, при создании инсталлятора можно использовать шаблоны. Помимо шаблонов проектов, возможно создание пакетов на основе компонентов, определяя группы элементов. Из других опций стоит отметить скрытую и тихую установку и деинсталляцию, два типа сжатия (Deflate или LZMA).

    Полный список функций представлен здесь.

    Резюме. Профессиональная среда для создания инсталляторов с действительно удобным интерфейсом и быстродоступным инструментарием: можно оперативно переключиться с одного языка локализации на другой при создании дистрибутива, протестировать проект. Не хватает функционального пошагового мастера настройки, возможностей импорта. Сильная сторона — наличие всех стандартных функций, работа с переменными и действиями.

    Установщик для приложения C #

    Я занимаюсь разработкой приложения на C # с открытым исходным кодом. Некоторое время я использовал базовый установщик .NET, который я сам написал. Однако, с недавним изменением, это больше не практично для меня, так как я должен был бы добавить большое количество файлов в установщик — и они могут меняться с каждым выпуском. ZIP-файл также не практично.

    Я проверил некоторые онлайн-проверки, я вижу много MSI, ClickOnce, самораспаковывающихся ZIP-архивов и (самое перспективное, на мой взгляд) систему NSIS. Кажется, ни один из них не соответствует моим потребностям, поэтому я ищу совет, какую систему использовать.

    Фактическая установка моей программы очень проста. По сути, мне просто нужно скопировать каталог bin \ Release (и все его подкаталоги) на компьютер клиента. Я достиг этого в некотором роде, внедряя каждый файл в мой установщик .NET и поддерживая таблицу файлов того, что и где.

    К сожалению, я только что локализовал свое приложение. Теперь у меня есть 30+ .resx файлов (которые скомпилированы в dll и помещены в БОЛЕЕ подкаталоги Visual Studio), и, очевидно, нецелесообразно добавлять более 30 папок и DLL в мой установщик. Следовательно, почему я нахожусь в этом поиске.

    Есть также несколько других требований:

    • Установщик должен искать в предопределенных каталогах указанный .exe. (Мое приложение предназначено для замены). Если файл .exe не найден, он должен запросить его местоположение.
    • Установщик должен убедиться, что «OldApp.exe.bak» существует. Если нет, он должен переименовать «OldApp.exe» в «OldApp.exe.bak»
    • Установщик должен обновить файлы. То есть, если «Culture.de.dll» не изменился, установщик оставит его в покое.
    • Установщик должен работать со всеми версиями Windows всех IDE .NET (VS, SharpDevelop, Mono и т. Д.), Но не должен работать на других платформах.
    • Когда я создаю решение, установщик должен автоматически обновляться. Другими словами, он должен быть запущен в разделе «Пост-сборка».
    • Генератор установщика должен быть в состоянии добавить к репозиторию исходного кода. Это сделано для того, чтобы любой, кто загружает исходный код моего приложения, мог также скомпилировать установщик.

    Извините за длинный пост, я подумал, что лучше размещать больше, чем меньше.

    Отладка C # Пользовательских Классов Установщика

    Я написал класс установки, который расширяет Installer и переопределяет afterInstall, но я получаю исключение нулевого указателя. Как я могу отладить мой класс?

    14 ответов

    Что-то, что удобно для трудной отладки разделов кода, —

    Сгенерирует точку останова, пойманную любым установленным отладчиком (VStudio, WinDbg, Удаленный отладчик и т. д.).

    Используйте его для отладки действительно сложных областей, в которых обычные F5 + Go или «Присоединение к процессу» трудно или невозможно выполнить, некоторые примеры включают в себя:

    • недолговечные процессы
    • чувствительные ко времени процессы
    • разбиение на порожденные подпроцессы
    • монтажники
    • остановка /запуск службы
    • распределенные системы

    Лучший способ, который я нашел, — это написать модульный тест, а также обновить и инициализировать ваш класс установщика из вашего модульного теста:

    По крайней мере, тогда он лучше использует инструменты IDE. Это особенно полезно для очень больших инсталляторов с большим количеством компонентов. Затем вы также можете создавать заказанные модульные тесты и запускать их последовательно, чтобы имитировать ваш установщик во время отладки или ваших автоматических сборок.

    Еще один совет — общие принципы программного обеспечения SOLID /GRASS . развивайтесь аккуратно и тонко, сохраняя простую логику вашей программы установки «настраиваемых действий», и вместо этого обращайтесь к любому имеющемуся у вас материалу API многократного использования, характерному для вашего установщика. (s), как мы привыкли к разработке пользовательского интерфейса. (В любом случае, установщик — это просто еще один пользовательский интерфейс.) Это особенно важно, если ваша цель состоит в том, чтобы использовать определенный интерфейс пользовательского интерфейса для всех установщиков ваших продуктов.

    Удивлен, никто так и не ответил. Поместите MessageBox.Show («hello») в элемент Install () вашего пользовательского действия. Постройте развертывание в конфигурации отладки. Установить. Когда появится MessageBox, зайдите в VS IDE, Debug, Attach Process и найдите экземпляр msiexec, который помечен как «Управляемый». Присоедините отладчик к этому экземпляру msiexec. Теперь вернитесь к источнику своего пользовательского действия и установите точку останова сразу после вызова MessageBox.Show (). Закройте MessageBox, и ваша точка останова будет достигнута, и вы отлаживаете в IDE!

    присоедините процесс установки к Visual Studio в Debug-> Process-> Attach или CTRL + ALT + P установить точку останова, и вы должны быть в состоянии пойти

    В своем методе установки добавьте оператор Debugger.Launch (), который запустит «Отладчик Visual Studio как раз во время», где вы можете присоединить экземпляр Visual Studio и отладить ваш класс установщика (MSI). Это должно работать и в Visual Studio 2010. Но для этого нужно иметь административные права. Если у вас нет административных прав, у вас могут возникнуть проблемы. Итак, войдите как администратор для отладки MSI. Например:

    В Visual Studio 2005 даже Debugger.Break () используется для работы, но почему-то это не работает с Visual Studio 2010.

    Я использую EventLog.WriteEntry («источник», «сообщение») и проверяю EventLog при установке. Может быть, не оптимально, но у меня работает :)

    Вы также можете использовать утилиту installUtil.exe для тестирования вашего установочного компонента.

    Если вы создали сборку класса c # с помощью класса установщика, измените параметры отладки, чтобы запустить внешнюю программу ‘C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ InstallUtil.exe’ и введите соответствующие аргументы командной строки (например, /Args = myargument «путь к сборке»)

    Когда вы в последний раз устанавливали свои точки останова, нажмите клавишу f5, и вы настроены на отладку кода. —paralax

    Я использую следующий класс для записи простого журнала в целевой каталог. На мой взгляд, это проще, чем пытаться использовать отладчик Visual Studio.

    Для целей ведения журнала (в 3.5) как насчет использования:

    Напишите следующий код в начале метода, который вы хотите отлаживать

    Поэтому, когда ваш метод вызывается, приведенный выше код будет обработан, и вы сможете присоединить отладчик к процессу (ctrl + alt + p), используя вышеуказанный идентификатор процесса. Возможно, вам придется запустить VS с повышенными разрешениями.

    Ничто из вышеперечисленного не помогло мне. Это то, что на самом деле работает. Обратите внимание, что вам нужно поставить вставки «обе» строки.

    создайте виртуальную машину, установите Visual Studio, сделайте ее копию (или создайте разностный виртуальный жесткий диск) и запустите программу установки под отладчиком под виртуальной машиной.

    Я бы так и сделал (но я не эксперт).

    Вы можете автоматизировать отладку проектов установщика, добавив следующий раздел в файл .csproj или .csproj.user:

    Используйте файл проекта, если вы хотите, чтобы другие разработчики извлекли выгоду из этого изменения, и файл .user, если вы хотите использовать его самостоятельно.

    Это то, что на самом деле работало для меня.

    Затем щелкните правой кнопкой мыши по проекту установщика и нажмите «Установить»

    Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих