Нужен способ добавить одно свойство в таблицу свойств msi в проекте установки в VS2010 - PullRequest
2 голосов
/ 18 ноября 2010

Я использую Orca, чтобы вручную добавлять свойство "REINSTALLMODE" значение "amus" в таблицу свойств msi каждый раз, когда я его строю.

Мне это надоело.Я посмотрел на Wix, но пока не думаю, что стоит его изучать / переключаться на него, хотя он решит эту проблему.Есть ли способ, которым я могу автоматически вставить это одно свойство в msi после завершения сборки?Предпочтительно, он будет использовать только vanilla visual Studio 2010 и не зависеть от сторонних программ или переменных системной среды.

Есть мысли?

Спасибо,

Исаак

Ответы [ 3 ]

5 голосов
/ 18 ноября 2010

использовать vbscript

изменить существующее свойство

set o_installer = CreateObject("WindowsInstaller.Installer")
set o_database = o_Installer.OpenDatabase("path_to_your_msi", 1)
s_SQL = "SELECT Property, Value FROM Property Where Property = 'ReinstallMode'"
Set o_MSIView = o_DataBase.OpenView(s_SQL)
o_MSIView.Execute
Set o_MSIRecord = o_MSIView.Fetch
o_MSIRecord.StringData(2) = "amus"
o_MSIView.Modify 2, o_MSIRecord
o_DataBase.Commit

добавить новое свойство

set o_installer = CreateObject("WindowsInstaller.Installer")
set o_database = o_Installer.OpenDatabase("path_to_your_msi", 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
4 голосов
/ 22 июля 2011

Другой вариант - включить номер версии в папку установки приложения.Установите местоположение по умолчанию для папки приложения:[ProgramFilesFolder] \ [ProductName] \ [ProductVersion]Также установите свойство «RemovePreviousVersions» проекта установки в значение true.Это должно удалить папку старой версии и создать новую папку для новой версии.Не забывайте изменять свойство версии проекта установки каждый раз, когда вы делаете новую версию.

1 голос
/ 18 ноября 2010

Мои честные мысли?Вы начинаете идти по пути «ВДПРОЙ в порядке, за исключением того, что мне также нужно это сделать [х]».Вы найдете способ взломать его, а затем вы будете повторять.Прежде чем вы это узнаете, у вас будет решение Франкенштейна, которое делает все самые странные вещи с вашим MSI, потому что инструмент не раскрывает его или, что еще хуже, реализует его неправильно.Я действительно предлагаю перейти на InstallShield 2010LE / Pro или WiX.

Однако, если все, что вы хотите сделать, это изменить REINSTALLMODE с omus на amus, я рекомендую использовать Orca для создания преобразования один раз, а затем в пост-сборкеШаг примените преобразование к вашему построенному MSI.

cscript WiUseXfm.vbs [path to original database][path to transform file][options]

Примените преобразование

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...