Отключить автоматический откат InstallFiles
Я установил свой первый MSI-установщик сWIX-Toolset 3.6
который включает в себя пользовательские действия дляBackup
, Installation
а такжеRollback
.
Резервное копирование и установка работают нормально, но у меня проблема с моим откатом. Я определил свои пользовательские действия следующим образом:
<!-- Custom actions -->
<CustomAction Id="CA_Install" Return="check" BinaryKey="BIN_CaLibrary" Execute="deferred" DllEntry="CaInstall" />
<CustomAction Id="CA_Rollback" Return="check" BinaryKey="BIN_CaLibrary" Execute="rollback" DllEntry="CaRollback" />
<CustomAction Id="CA_Backup" Return="check" BinaryKey="BIN_CaLibrary" Execute="immediate" DllEntry="CaBackup" />
<CustomAction Id="CA_SetTargetDir" Return="check" BinaryKey="BIN_CaLibrary" Execute="immediate" DllEntry="CaSetTargetDir" />
<CustomAction Id="CA_SetTargetDirAndInstallTypeForInstall" Return="check" Property="CA_Install" Value="InstallType=[INSTALLTYPE];TargetDir=[TARGETDIR]" />
<CustomAction Id="CA_SetTargetDirForRollback" Return="check" Property="CA_Rollback" Value="TargetDir=[TARGETDIR]" />
<!-- Linking custom actions to the install sequence -->
<InstallExecuteSequence>
<Custom Action="CA_SetTargetDir" Before="AppSearch" />
<Custom Action="CA_Backup" After="CA_SetTargetDir" />
<Custom Action="CA_SetTargetDirForRollback" Before="CA_Rollback" />
<Custom Action="CA_SetTargetDirAndInstallTypeForInstall" Before="CA_Install"/>
<Custom Action="CA_Rollback" Before="CA_Install"/>
<Custom Action="CA_Install" Before="InstallFinalize" />
</InstallExecuteSequence>
В моемCA_Backup
Я всегда создаю Backup-Directory со старой версией приложения (даже если установка прошла успешно). Когда мойCA_Install
возникает исключение, когда установщик переходит к моему собственному действию откатаCA_Rollback
, В этом пользовательском действии я удаляю все файлы вTARGETDIR
и воспроизвести файлы из Backup-Directory. Он делает именно то, что должен делать, но послеCA_Rollback
Wix-Installer автоматически откатит другие пользовательские действия, такие какInstallFiles
, И поэтому он удаляет все файлы, которые воспроизводятся из Backup-Directory в моемCA_Rollback
до.
Можно ли отключить автоматический откатInstallFiles
Custom Action? Или есть другое решение для моей проблемы?
Также странно, что ProgressText CA_Rollback - это не то, что я определил, а стандартный текст WiX-Framework.
<ProgressText Action="CA_SetTargetDir">Getting Installation-Type...</ProgressText>
<ProgressText Action="CA_Backup">Creating Backup-Directory...</ProgressText>
<ProgressText Action="CA_Install">Updating Application...</ProgressText>
<ProgressText Action="CA_Rollback">Rollback the Application...</ProgressText>
Таким образом, когда установщик переходит к CA_Rollback, ProgressText НЕ«Откат приложения ...» но в других пользовательских действиях (CA_SetTargetDir, CA_Backup, CA_Install) ProgressText отображается как определено.
РЕДАКТИРОВАТЬ:
Я нашелДействие DisableRollback и я хотел бы использовать это в моемInstallExecuteSequence
:
<DisableRollback After="CA_Rollback" />
Так что я хотел бы запустить свой собственный откатCA_Rollback
, но хотите отключить автоматический откат других пользовательских действий. Но когда я это включаю, отката нет вообще.