Я не знаю, почему действие отката не работает в процессе обновления, но он работает в процессе установки, я пробовал почти весь метод, который я нашел в google, я действительно надеюсь, что смогу найти ответ здесь, так что мой вопрос: 1.Мы должны определить два пользовательских действия: один отложен, другой - откат, а откат должен быть до отложенного? , но мое действие отката просто хочет перезапустить службу при сбое обновления,, так что это необходимо сделать, и я пробовал этот метод, он не работает, но он работает в установке, что я только что определил действие отката, вы можно видеть, как следуют :(откат действий находится между в InstallInitialize и InstallFinalize)Wix rollback custom action not work in upgrade cancel
1.in InstallExecuteSequence
<Custom Action="StartAllServicesWhenRollBack" After="InstallInitialize">1</Custom>
<Custom Action="UninstallMysqlOdbcDriver" After="StartAllServicesWhenRollBack">1</Custom>
2.in Фрагмент
<CustomAction Id="StartAllServicesWhenRollBack" BinaryKey="StartAllServicesWhenRollBackScript" VBScriptCall="" Execute="rollback" Return="check"/>
<Binary Id="StartAllServicesWhenRollBackScript" SourceFile="startInstall.vbs" />
<CustomAction Id="UninstallMysqlOdbcDriver" BinaryKey="UninstallMysqlOdbcDriverScript" VBScriptCall="" Execute="immediate" Return="check"/>
<Binary Id="UninstallMysqlOdbcDriverScript" SourceFile="UninstallMysqlOdbcDriver.vbs" />
будет откатить в установке, но не работает в обновлении, другой метод:
<Custom Action="StartAllServicesWhenRollBack" Before="StopAllServicesa">1</Custom>
<Custom Action="StopAllServicesa" After="InstallInitialize">1</Custom>
<CustomAction Id="StartAllServicesWhenRollBack" BinaryKey="StartAllServicesWhenRollBackScript" VBScriptCall="" Execute="rollback" Return="check"/>
<Binary Id="StartAllServicesWhenRollBackScript" SourceFile="startInstall.vbs" />
<CustomAction Id="StopAllServicesa" BinaryKey="StopAllServicesaScript" VBScriptCall="" Execute="deferred" Return="check"/>
<Binary Id="StopAllServicesaScript" SourceFile="stopService.vbs" />
этот метод не работает в обновлении, так что им запутать об этом, StopAllServicesa будет выполнять, но откат действия оленьей кожи выполнить, кажется, действие отката, не записанное в сценарии отката, Как я могу найти скрипт отката в журнале?
Возможно, вам потребуется уточнить вопрос. Основное обновление - это установка и удаление. Вы не сказали, где запланировано ваше обновление. Вы также не сказали, где происходит сбой обновления, потому что сама установка обновления может выйти из строя, прежде чем удалять старый продукт в результате действия RemoveExistingProducts, или удаление старого продукта может привести к сбою и переустановить себя и отменить обновление. Сценарий отката не входит в журнал, но полный подробный журнал всего обновления имеет информацию в любом случае, потому что это журнал действий скрипта. – PhilDW
ОК, THX, это серьезное обновление, потому что основное обновление будет удалять старый продукт, поэтому мое действие отката должно работать в новой версии, верно ли это, что означает, что основное обновление имеет два этапа, если я нажму кнопку отмены кнопку при удалении старой версии, мое действие отката не работает, потому что у старшего продукта нет откатного действия, но если я отменяю при установке новой версии, мое откатное действие будет работать. Итак, это мой результат теста. Так что я сказал правильно ? Это мое понимание. Я не знаю, правильно или неправильно. –
Вы все еще не сказали, где ваше основное обновление упорядочено, что имеет значение. Кроме того, основное обновление происходит во время единственного индикатора выполнения (при условии, что вы выполняете нормальное обновление), поэтому вы уверены, что знаете, какой этап обновления отменяется? – PhilDW