Итак, у меня есть служба Windows, которая может иметь несколько экземпляров, установленных на одном сервере. Установщик должен иметь возможность обновить один экземпляр. Установщик использует Instance Transforms, но я не уверен, как получить основные обновления, которые мне бы хотелось.
Для серьезного обновления для работы, я понимаю, что я должен изменить код продукта, поэтому экземпляры определены в этой форме:
<Instance ProductCode="*"
UpgradeCode="{SOMEGUID}"
ProductName="Instance 1"
Id="Instance1"/>
msi можно запустить, чтобы установить новый экземпляр:
msiexec.exe /i "installer.msi" TRANSFORMS=:Instance1 MSINEWINSTANCE=1
Однако после многократного поиска единственным способом, который я нашел для запуска обновления на конкретном экземпляре, является этот формат:
msiexec.exe /i "installer.msi" /n {PRODUCTCODE} REINSTALL=ALL REINSTALLMODE=vamus
Проблема с этим заключается в том, что код продукта автогенерируется для основных обновлений, тогда я не знаю, что это такое, поэтому я не могу перейти к аргументам команды.
Есть ли способ запустить обновление с использованием экземпляра UpgradeCode или InstanceID или ProductCode? Так как оба они останутся статичными. В качестве альтернативы, могу ли я запустить msi без аргументов, выбрать существующий экземпляр (через проверку реестра) в диалоговом окне пользовательского интерфейса и установить соответствующие свойства, чтобы заставить msi перейти в режим обновления для этого экземпляра?