MSI не устанавливает все файлы, когда RemovePreviousVersion выполняется

Из Java 8 и далее нам не нужно напрямую использовать Collections.sort(). Интерфейс List имеет метод по умолчанию sort():

List users = Arrays.asList(user1,user2,user3);
users.sort( (u1, u2) -> { 
return u1.getFirstName.compareTo(u2.getFirstName());}); 

См. http://visvv.blogspot.in/2016/01/sorting-objects-in-java-8. HTML .

14
задан saschabeaumont 20 March 2009 в 00:10
поделиться

3 ответа

Хорошо, хорошо говоря кто-то еще, где мне помогают меня, находит решение проблемы.

Мы добавили свойство REINSTALLMODE и установили его на amus. Что это означает?

По умолчанию свойство установлено на omus, что означает: Переустановите, если файл отсутствует или более старый, реестр перезаписи для машины и пользовательской крапивницы, переустановите ярлыки. Изменение этого к amus в основном говорит: Переустановите все файлы.

Так, не 100%, уверенных, чем причина была - который я подозреваю, возможно, были странные блокировки, или что-то, но устанавливающий на amus не делает быть ни на каких отрицательных воздействиях, таким образом, мы будем придерживаться этого.

спасибо за предложения.

(Кроме того, больше деталей об этом свойстве может быть найдено здесь: MSDN: Свойство

REINSTALLMODE
5
ответ дан 1 December 2019 в 10:04
поделиться

На основе последовательности пользовательских действий по умолчанию установщик Windows определяет, какие файлы необходимо установить / перезаписать перед удалением любых существующих версий программного обеспечения. Установщик Windows использует значение свойства REINSTALLMODE, чтобы указать, как принимать решения о том, когда следует перезаписывать файлы. Если REINSTALLMODE содержит «o», то он будет устанавливать файлы только в том случае, если версия отличается или файл еще не существует; не версионные файлы будут установлены только в том случае, если Дата изменения файла <= Дата создания (т. е. файл не изменен). Если REINSTALLMODE содержит «a», он всегда будет устанавливать файл, независимо от информации о версии или дате, прикрепленной к существующим файлам.

То, что происходит в вашем сценарии, скорее всего следующее:

  1. Установщик Windows определяет, какие файлы устанавливать. Он решает, что некоторые файлы устанавливать не нужно (возможно, потому что они уже существуют и имеют те же или более новые версии, что и в MSI).
  2. Предыдущая версия программного обеспечения удаляется, включая файлы установщика Windows определено, что устанавливать его не нужно.
  3. Установщик Windows устанавливает файлы для новой установки, но не устанавливает файлы, которые, как он определил, не нужно было устанавливать.

Конечным результатом является отсутствие нескольких файлов. после обновления программного обеспечения. Установка REINSTALLMODE = amus вместо omus, скорее всего, решит вашу проблему, но вы должны убедиться, что знаете, как это повлияет на остальную часть вашей установки. Если есть какие-либо файлы, которые вы не хотите перезаписывать, вам нужно пометить эти компоненты как "

18
ответ дан 1 December 2019 в 10:04
поделиться

На что Ваш <RemoveExistingProducts After=""> похож шаг? Могло случиться так, что removeexisting бежит за установкой - и удаляет все файлы, которые были тем же в предыдущих и текущих версиях.

мне установили мой установщик на <RemoveExistingProducts After="InstallInitialize">, чтобы удостовериться, что он сделан перед чем-либо еще. Я не знаю, правильно ли это или нет, но это, кажется, работает.

    <Upgrade Id="$(var.UpgradeCode)">
        <!--Upgrade code found at http://www.nichesoftware.co.nz/blog/200809/upgradable-msi-installations-with-wix -->
        <!-- Detect any newer version of this product-->
        <UpgradeVersion Minimum="$(var.version)" IncludeMinimum="no" OnlyDetect="yes" Language="1033" Property="NEWPRODUCTFOUND" />

        <!-- Detect and remove any older version of this product-->
        <UpgradeVersion Maximum="$(var.version)" IncludeMaximum="yes" OnlyDetect="no" Language="1033" Property="OLDPRODUCTFOUND" />
    </Upgrade>
    <CustomAction Id="PreventDowngrading" Error="Newer version already installed"></CustomAction>
    <InstallExecuteSequence>
        <!-- Prevent Downgrading-->
        <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
        <RemoveExistingProducts After="InstallInitialize" />
    </InstallExecuteSequence>
    <InstallUISequence>
        <!-- Prevent Downgrading-->
        <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
    </InstallUISequence>
3
ответ дан 1 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: