2016-11-03 4 views
1

Я пытаюсь сделать пакет с двумя целями, и у меня проблемы с обновлением.пакет с двумя целями и MajorUpgrade

по умолчанию являются моей собственностью ALLUSERS=2 и MSIINSTALLPERUSER=1

в диалоговом readyToInstall, если «установить для всех пользователей» установлен, я использую SetProperty поставить ALLUSERS=1 и MSIINSTALLPERUSER={} (просто чтобы быть уверенным).

эта часть работает нормально, реестр установлен в HKLM и файлы в Program Files.

во upgdrade однако ... У меня есть пользовательские действия, которые проверяют после AppSearch, если ключи в HKLM он установлен ALLUSERS=1 и MSIINSTALLPERUSER={}.

Если я сделаю небольшое обновление, файлы будут обновлены правильно.

если я крупное обновление, реестры еще в HKLM, но файлы переключиться на LocalAppData (следует значение по умолчанию на самом деле), не обращая внимания на то, что я вынудит ALLUSERS 1 после AppSearch. (Я даже пытаюсь заставить его после состояния мигрирования просто имитировать пользовательский интерфейс, но он тоже не сработал).

есть ли способ сделать крупное обновление с пакетом с двумя целями?

ответ

0

На основе следующего отрывка, кажется, что вы столкнулись сценарий B:

Основные обновления может потерпеть неудачу
При использовании кода Обновление функции установщика Windows, чтобы выполнить крупное обновление обнаружение существующего программного обеспечения завершится неудачей, если: (a) оригинальное программное обеспечение было установлено с ALLUSERS=””, а новое программное обеспечение имело ALLUSERS=1 в его таблице свойств или передано по команде или (b) оригинальное программное обеспечение было установлено с ALLUSERS=1 и новое программное обеспечение имеет ALLUSERS=”” или ALLUSERS не определено в таблице свойств или в командной строке.

Для получения дополнительной информации:https://shieldmaster.wordpress.com/2012/05/03/understanding-per-user-or-per-machine-context-for-application-setup-packages/