Есть ли способ определить версию установки из продукта?
Итак, здесь ситуация здесь.
У меня есть 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 ответа
Определите "глобальную" версию установки. Вы говорите, что каждый патч обновляет некоторые, но не все сборки, и, следовательно, версия какой-либо одной сборки или даже какой-либо сборки вообще может не отражать последний установленный патч?
3 варианта:
- Сохраняйте информацию о глобальной версии в каждом файле конфигурации и каждый раз отправляйте обновления для каждой конфигурации каждого установленного компонента (не рекомендуется).
- Предоставьте общий файл конфигурации или ссылки из других конфигураций на "основную" конфигурацию, на которую можно ссылаться из любого исполняемого проекта, и убедитесь, что конфигурация обновляется каждый раз.
- Поддерживайте раздел реестра, содержащий глобальную версию пакета программного обеспечения.
Из трех я бы выбрал последний, поскольку установка и исправления распространяются на несколько областей системы, но каждая область ДОЛЖНА иметь возможность считывать раздел реестра программного обеспечения (если не обновлять его). Процесс не сложный; вы можете ссылаться на статический объект System.Win32.Registry, чтобы получить базовые ключи для LocalMachine, CurrentUser и т. д., и оттуда вы можете перемещаться по дереву, перемещаясь по объектам RegistryKey (или создавая его с нуля с помощью пути ключа). Вы можете указать путь к ключу с помощью AppSetting в различных файлах web и app.config; это не должно меняться почти так же часто, как значение самого ключа.
Если вы устанавливаете несколько пакетов из одного MSI, то лучше, чтобы MSI был указан в ARP, и тогда версия этой "глобальной настройки" будет легко доступна для будущих MSI. Не зная, какую технологию вы используете для создания своих настроек, трудно дать более твердый совет, но в WiX (Windows Installer XML) вам просто нужно включить элемент обновления, который позаботится об этом автоматически. У большинства технологий должен быть способ проверить текущую версию установки.