Из 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 .
Хорошо, хорошо говоря кто-то еще, где мне помогают меня, находит решение проблемы.
Мы добавили свойство REINSTALLMODE
и установили его на amus
. Что это означает?
По умолчанию свойство установлено на omus
, что означает: Переустановите, если файл отсутствует или более старый, реестр перезаписи для машины и пользовательской крапивницы, переустановите ярлыки. Изменение этого к amus
в основном говорит: Переустановите все файлы.
Так, не 100%, уверенных, чем причина была - который я подозреваю, возможно, были странные блокировки, или что-то, но устанавливающий на amus
не делает быть ни на каких отрицательных воздействиях, таким образом, мы будем придерживаться этого.
спасибо за предложения.
(Кроме того, больше деталей об этом свойстве может быть найдено здесь: MSDN: Свойство
REINSTALLMODEНа основе последовательности пользовательских действий по умолчанию установщик Windows определяет, какие файлы необходимо установить / перезаписать перед удалением любых существующих версий программного обеспечения. Установщик Windows использует значение свойства REINSTALLMODE, чтобы указать, как принимать решения о том, когда следует перезаписывать файлы. Если REINSTALLMODE содержит «o», то он будет устанавливать файлы только в том случае, если версия отличается или файл еще не существует; не версионные файлы будут установлены только в том случае, если Дата изменения файла <= Дата создания (т. е. файл не изменен). Если REINSTALLMODE содержит «a», он всегда будет устанавливать файл, независимо от информации о версии или дате, прикрепленной к существующим файлам.
То, что происходит в вашем сценарии, скорее всего следующее:
Конечным результатом является отсутствие нескольких файлов. после обновления программного обеспечения. Установка REINSTALLMODE = amus вместо omus, скорее всего, решит вашу проблему, но вы должны убедиться, что знаете, как это повлияет на остальную часть вашей установки. Если есть какие-либо файлы, которые вы не хотите перезаписывать, вам нужно пометить эти компоненты как "
На что Ваш <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>