내가 설치가 롤백하고 이전에 설치 한 버전을 복원, 업그레이드하는 동안 오류가 발생하면윅스 사용자 지정 작업
<MajorUpgrade Schedule="afterInstallInitialize"
DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." />
이있는 윅스 설치가 있습니다. 그러나 사용자 지정 작업을 통해 만들어진 예약 된 작업은 손실되고 결코 복원되지 않습니다.
내가 작업의 생성/제거/롤백 사용하고 사용자 지정 작업
은 다음과 같습니다CreateScheduledTask
-action는
NOT Installed
의 조건을 가지고
<InstallExecuteSequence>
<Custom Action="CreateScheduledTask_Rollback" Before="CreateScheduledTask"></Custom>
<Custom Action="CreateScheduledTask" Before="InstallFinalize"></Custom>
<Custom Action="RemoveScheduledTask" Before="RemoveFiles">
<![CDATA[(REMOVE="ALL")]]>
</Custom>
</InstallExecuteSequence>
로 대기하고
<!-- task scheduling -->
<CustomAction Id="CreateScheduledTask" Return="check" Directory="SystemFolder"
ExeCommand=""[SystemFolder]SCHTASKS.EXE" /Create /RU "[TASK_DOMAIN]\[TASK_USERNAME]" /RP [TASK_PASSWORD] /SC DAILY /TN "Maintenance" /TR "[\\]"[SERVICELOCATION]Maintenance.exe[\\]"" /ST [TASK_TIME]"
Execute= "deferred"/>
<!-- rollback in case something went wrong -->
<CustomAction Id="CreateScheduledTask_Rollback" Execute="rollback" Return="ignore" Directory="SystemFolder" ExeCommand=""[SystemFolder]SCHTASKS.EXE" /Delete /TN "Maintenance" /F" />
<!-- removal of task -->
<CustomAction Id="RemoveScheduledTask" Return="ignore" Directory="SystemFolder" ExeCommand=""[SystemFolder]SCHTASKS.EXE" /Delete /TN "Maintenance" /F" Execute= "immediate"/>
하는 테스트 목적으로 제거했습니다.
업그레이드 설치가 롤백 될 때 작업을 다시 만들려면 누구에게 말해야합니까? P .: 나는 원래 작업이 생성 된 도메인, 사용자 이름 또는 암호에 대한 액세스 권한이 없습니다.
그건 내가 두려워했던거야. 예제와 설명을 해주셔서 감사합니다. 보안상의 이유로 자격 증명을 저장하지 않을 것입니다. 실패한 업그레이드에도 추가 조사가 이루어지기 때문에 (그리고 성공적인 업그레이드가 가능할 수 있음) 이로 인해 사소한 불편을 겪을 수 있습니다. – urbanhusky