Есть ли способ определить версию установки из продукта? - PullRequest
0 голосов
/ 08 сентября 2010

Итак, вот такая ситуация.

У меня есть 2 сайта asp.net + несколько приложений winform, которые устанавливаются вместе с настройкой.Все они представлены как модули слияния в проекте установки.

В настоящее время, когда мы хотим обновить глобальную версию приложения, мы должны обновить все версии на веб-сайтах asp.net и прочее.Я знаю, что можно определить версию в информации о сборке приложения asp.net, что довольно просто.Сложность заключается в том, чтобы определить «глобальную» версию установки.(скажем, здесь веб-сайт версии 1.5, но сама глобальная установка - версии 3.4).

В какой-то момент я предполагаю, что если я найду файл setup.exe / setup.msi, я смогу просмотреть его с отражением, ноэто не совсем лучшее решение.Мы храним каждую настройку для каждой версии на сервере в отдельной папке (например, c: \ Setups \ Product 1.0 \ Setup.exe, c: \ Setup \ Product 1.5 \ Setup.exe и т. Д.)

Есть предложения?

Ответы [ 2 ]

1 голос
/ 09 сентября 2010

Если вы устанавливаете несколько пакетов из одного MSI, то лучше, чтобы MSI был указан в ARP, и тогда версия этой «глобальной настройки» будет легко доступна для будущих MSI.Не зная, какую технологию вы используете для создания своих настроек, сложно дать более твердый совет, но в WiX (Windows Installer XML) вам просто нужно включить элемент обновления, который позаботится об этом автоматически.У большинства технологий должен быть способ проверить текущую версию установки.

1 голос
/ 09 сентября 2010

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

3 варианта:

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

Из трех я бы выбрал последний, поскольку установка и исправления распространяются на несколько областей системы, но каждая область ДОЛЖНА иметь возможность считывать раздел реестра программного обеспечения (если не обновлять его).Процесс не сложный;вы можете ссылаться на статический объект System.Win32.Registry, чтобы получить базовые ключи для LocalMachine, CurrentUser и т. д., и оттуда вы можете перемещаться по дереву, перемещаясь по объектам RegistryKey (или создавая его с нуля, используя путь ключа).Вы можете указать путь к ключу с помощью AppSetting в различных файлах web и app.config;это не должно меняться почти так же часто, как значение самого ключа.

...