Передача REINSTALLMODE в файл MSI - PullRequest
       30

Передача REINSTALLMODE в файл MSI

7 голосов
/ 22 декабря 2009

Я использую VisualStudio2005 и vdproj для создания простого файла MSI. Мне нужно передать свойство REINSTALLMODE при запуске.

Я знаю, что это можно сделать из командной строки, вот так: msiexec.exe /i foo.msi REINSTALLMODE=amus

Однако, если пользователь решит щелкнуть msi напрямую (запустив мастер), свойство не будет передано. Возможно ли это сделать через VS и vdproj?

Некоторые варианты, которые я исследовал:

  • Когда я собираю MSI через VS, он также создает файл setup.exe. Есть ли способ передать свойство REINSTALLMODE через это возможно?
  • Я установил Orca, что позволяет мне просматривать / редактировать таблицу свойств MSI. Я мог бы добавить это таким образом, но тогда я должен был бы добавлять это каждый раз, когда я делаю сборку MSI.

Спасибо за любой совет.

Ответы [ 2 ]

7 голосов
/ 23 декабря 2011

Я нашел более автоматизированный способ сделать это.

Создайте скрипт с именем add_reinstall_prop.vbs (пример) со следующим:

set objArgs = WScript.Arguments
set o_installer = CreateObject("WindowsInstaller.Installer")
set o_database = o_Installer.OpenDatabase(objArgs(0), 1)
s_SQL = "INSERT INTO Property (Property, Value) Values( 'REINSTALLMODE', 'amus')"
set o_MSIView = o_DataBase.OpenView( s_SQL)
o_MSIView.Execute
o_DataBase.Commit

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

add_reinstall_prop.vbs $(BuiltOuputPath)

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

4 голосов
/ 22 декабря 2009

К сожалению, я не могу найти способ установить другие свойства MSI прямо в VStudio.

Тем не менее, один метод, который должен работать, это:

  1. Используйте Orca для создания преобразования (MST), которое изменяет только свойство REINSTALLMODE. (Короче говоря, вы редактируете свойство и сохраняете его как новое преобразование, а затем используете команду «Создать преобразование» для создания MST.)
  2. Это преобразование можно применить непосредственно к вашему MSI с помощью команды MSITRAN.EXE (доступно в том же SDK установщика Windows, в котором вы обнаружили Orca).
  3. Вы можете либо: (а) найти способ, чтобы Visual Studio всегда запускала команду MSITRAN сразу после сборки MSI, или (б) просто запустите MSITRAN вручную (из пакетного файла или около того) после сборки, но перед тестированием.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...