Вставить URL-адрес сервера в MSI - PullRequest
1 голос
/ 15 декабря 2009

У меня есть сервер ASP.NET, который предоставляет своего клиента для загрузки MSI (аналогично CCNet / CCTray). Может быть больше одного сервера (например, для разработки / тестирования / производства, но могут быть разные производственные экземпляры).

Таким образом, клиент должен знать URL сервера. Я не могу попросить у пользователей URL, потому что он не имеет для них особого смысла, они все равно не знают ни о каких других серверах. Поэтому в MSI должен быть включен URL-адрес сервера.

Теперь я могу предварительно собрать разные версии MSI для разных сред (поскольку в любом случае уже есть отдельные этапы сборки для этих dev / test), но это не решает вопрос о нескольких продуктах, где продукт уже собран.

Так что я думаю, что сервер должен изменить MSI и добавить правильный URL-адрес перед его обслуживанием. Возможно ли это без восстановления MSI? Какой самый простой способ добиться этого?

Ответы [ 3 ]

2 голосов
/ 15 декабря 2009

Обычно MSI-файл - это просто база данных, используя API установщика Windows, вы можете запустить произвольный SQL для этой базы данных ... например:

Dim installer, database, view, result
Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase ("setup.msi", 1)
Set view = database.OpenView ("INSERT INTO Property (Property, Value) VALUES ('URLPROPERTY', 'http://some.server/blah/service')")
view.Execute
database.Commit
Set database = nothing

Просто используйте этот скрипт в процессе пост-сборки или предварительной загрузки, и вы будете отсортированы:)

Для получения дополнительной информации и дополнительных (более качественных) примеров сценариев см. Windows SDK

0 голосов
/ 15 декабря 2009

Изменение файла MSI на веб-сервере перед его обслуживанием не является хорошей идеей. Что если кто-то запросит файл, пока вы все еще обновляете его?

Вам лучше изменить процесс сборки, чтобы получить набор файлов MSI, соответствующих рабочим веб-сайтам. Каждый веб-сайт будет иметь свой собственный файл MSI.

0 голосов
/ 15 декабря 2009

Я не знаю, как изменить сам MSI, но вы можете заставить сервер записать URL-адрес в известный файл на клиенте и прочитать проект MSI (и удалить его). Таким образом, вы можете иметь одну сборку MSI для всех серверов.

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