Wix Toolset - идентичный MSI не переустанавливается - PullRequest
0 голосов
/ 07 мая 2018

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

Почти все работает нормально, за исключением переустановки идентичной MSI. При выполнении msiexec того же msi, который установлен в данный момент (но, возможно, других свойств командной строки msiexec), программа установки запускается и завершает работу, но ничего не делает и не отображает ошибку в журналах.

Обновления и понижения работают нормально (при указании 'AllowDowngrades = "yes"'). Переустановка также происходит правильно, когда я собираю новую версию MSI с той же версией, которая установлена ​​в данный момент. Я также попытался установить AllowSameVersionUpgrades вместо AllowDowngrades, но без удачи.

Любые подсказки о том, как мои wxs должны быть настроены, чтобы позволить переустановить тот же файл MSI? В настоящее время мой MajorUpgrade выглядит так:

<MajorUpgrade AllowDowngrades="no" AllowSameVersionUpgrades="yes" Disallow="no" DowngradeErrorMessage="Not allowed to downgrade." IgnoreRemoveFailure="yes" MigrateFeatures="yes" />

То, что я вижу в выводе msiexec как разницу между обычной переустановкой и той же ошибкой установки msi; это начало установщика с упоминанием «FindRelatedProducts. Возвращаемое значение0 ':

Action 14:12:52: INSTALL. 
Action start 14:12:52: INSTALL.
Action 14:12:52: FindRelatedProducts. Searching for related applications
Action start 14:12:52: FindRelatedProducts.
Action ended 14:12:52: FindRelatedProducts. Return value 0.
Action 14:12:52: AppSearch. Searching for installed applications
Action start 14:12:52: AppSearch.
AppSearch: Property: NETFRAMEWORK45, Signature: NetFramework45
Action ended 14:12:52: AppSearch. Return value 1.
Action 14:12:52: LaunchConditions. Evaluating launch conditions
Action start 14:12:52: LaunchConditions.
Action ended 14:12:52: LaunchConditions. Return value 1.
Action 14:12:52: ValidateProductID. 
Action start 14:12:52: ValidateProductID.
Action ended 14:12:52: ValidateProductID. Return value 1.
Action 14:12:52: CostInitialize. Computing space requirements

При успешном обновлении / понижении версии журнал msiexec выглядит следующим образом:

Action 18:27:21: INSTALL. 
Action start 18:27:21: INSTALL.
Action 18:27:21: FindRelatedProducts. Searching for related applications
Action start 18:27:21: FindRelatedProducts.
FindRelatedProducts: Found application: {014FD491-292B-4BFC-BCFB-87121C11BCE9}
Action ended 18:27:21: FindRelatedProducts. Return value 1.
Action 18:27:21: AppSearch. Searching for installed applications
Action start 18:27:21: AppSearch.
AppSearch: Property: NETFRAMEWORK45, Signature: NetFramework45
Action ended 18:27:21: AppSearch. Return value 1.
Action 18:27:21: LaunchConditions. Evaluating launch conditions
Action start 18:27:21: LaunchConditions.
Action ended 18:27:21: LaunchConditions. Return value 1.
Action 18:27:21: ValidateProductID. 
Action start 18:27:21: ValidateProductID.
Action ended 18:27:21: ValidateProductID. Return value 1.

Я довольно новичок в Wix, поэтому любые советы о том, как это исправить или что я могу попробовать, приветствуются.

Приветствие.

Пояснение: Я не хочу, чтобы несколько экземпляров одной и той же msi / программы были установлены одновременно, однако я хотел бы принудительно выполнить полную переустановку после повторного выполнения той же самой msi, без предварительного ручного удаления. Это позволяет перенастроить программное обеспечение через свойства msiexec cli и пользовательское действие.

Ответы [ 2 ]

0 голосов
/ 10 июля 2018

Моя проблема была решена с помощью комментария от Дэниел Ли - спасибо за это! Использование параметров / переключателей msiexec REINSTALL и REINSTALLMODE действительно позволяет чистую переустановку идентичного файла msi, используя REINSTALL = all и REINSTALLMODE = a.

ПЕРЕУСТАНОВИТЕ

REINSTALL_MODE

0 голосов
/ 07 мая 2018

Наиболее вероятной причиной этого является то, что вы не можете установить один и тот же идентичный MSI более одного раза. Продукт идентифицируется по его ProductCode, и если этот продукт уже установлен, то нет «установить его снова». Установленный продукт перейдет в режим обслуживания, и это, как правило, ремонт (при отсутствии возможности добавлять или удалять функции).

Если вы действительно хотите (скажем), чтобы 10 идентичных продуктов устанавливались бок о бок, то каждый из них должен быть различным продуктом (как указано в ProductCode). Существуют общие проблемы множественных идентичных записей в программах и функциях, возможные множественные идентичные ярлыки, проблемы с объектами, которые могут использоваться только один раз (например, названия служб), и вам может потребоваться подумать о том, как поддерживать несколько продуктов в одной системе в отношении исправления, обновления и так далее.

Если ваша цель заключается в обновлении установленного продукта (обычно это означает, что вы обновили файлы), то вам необходимо серьезное обновление с использованием элемента MajorUpgrade. Это установит более новую версию и автоматически удалит предыдущую версию. Однако это может быть «тот же» MSI, если в вашем основном обновлении указано AllowSameVersionUpgrades = yes и вы изменили ProductCode и PackageCode, так что на самом деле нет способа переустановить тот же MSI - он может иметь те же файлы и другое содержимое, но он нуждается в новых значениях кода продукта и пакета с серьезным обновлением.

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