среда, 2 ноября 2011 г.

Завершаем создание инсталляционного комплекта

После того как все файлы инсталлятора упакованы в один файл и UAC не задает лишних вопросов при установке, добавим последний завершающих штрих – на последней странице программы установки добавим галочку “Запустить программу”.К сожалению, стандартные средства Setup Project не позволяют это сделать.

Возможности Visual Studio по созданию и настройке программы установки сильно ограничены. Custom Actions или классы, расширяющие возможности сценария инсталляции, которые можно подключить через графический интерфейс могут вызываться непосредственно перед установкой или сразу после. Visual Studio не позволяет изменить дизайн последней страницы мастера установки или добавить дополнительные страницы на этом шаге.

Однако возможность изменить поведение программыу установки все-таки есть. Ведь файл MSI – это база данных, и все что отображает на экране Windows Installer в процессе установки – генерируется динамически на основе информации из этой БД. Для того изменить поведение программы установки, создаваемой из Visual Studio, нужно внести в базу данных MSI необходимые изменения. В частности, для добавления переключателя “запустить программу”:

  1. Добавить на последнюю страницу мастера установки галочку “запустить программу”
  2. Добавить Custom Action действие “запустить программу”. В качестве параметра передать путь к запускаемому файлу. Также необходимо указать, что это действие должно выполняться после показа последней страницы, и в качестве условия запуска – добавленный нами переключатель должен быть установлен.

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

Такая техника изменения программы установки с целью добавления новой функциональности хорошо описана в блоге Аарона Стебнера (Aaron Stebner’s Weblog). В частности, он предлагает уже написанный сценарий JScript, реализующий описанную выше функциональность. Для использования этого сценария нужно лишь изменить в нем название программы, поместить в папку с проектом и добавить в PostBuildStep строку:

cscript.exe "$(ProjectDir)EnableLaunchApplication.js" "$(BuiltOuputPath)"

После этого собрать проект – и вуаля!

image

2 комментария:

  1. а программа запускается с ограниченным токеном?

    ОтветитьУдалить
  2. а вот в этом, честно говоря, не уверен. Скорее всего наследуется контекст инсталлятора т.е. если инсталлятор запускается от имени админа, то, скорее всего и программа запустится от имени админа

    ОтветитьУдалить