2016-08-22 7 views
2
에 윅스와 함께 작업

I이 제거에 배치 파일을 실행하기위한 내 .wxs 파일에서 다음 XML :배치 파일을 실행하는 스케줄 제거

<InstallExecuteSequence> 
    <Custom Action="uninstall_action" After="InstallInitialize">Installed AND NOT UPGRADINGPRODUCTCODE</Custom> 
</InstallExecuteSequence> 

<Fragment> 
    <CustomAction 
    Id   ="uninstall_action" 
    Directory ="INSTALLDIR" 
    ExeCommand ="&quot;[INSTALLDIR]uninstallTester.bat&quot;" 
    Execute ="deferred" 
    Impersonate="no" 
    /> 
</Fragment> 

그래서 설치 디렉토리에있는 배치 파일을 실행해야합니다. 내 배치 파일은 다음과 같습니다

schtasks /Create /F /SC ONCE /ST 22:05 /TN exampleUninstall /TR "echo hello" 2> batch_log.log 

나는이 (가) batch_log.log 내부에 다음을 얻을 제거 프로그램을 실행하면 :

ERROR: No mapping between account names and security IDs was done. 
(40,4):UserId: 

단지 새로운 예약 된 작업을 만드는 특별히에 문제가있는 것 왜냐하면 예약 된 작업을 제거하기 위해 일괄 처리를 변경하면 오류없이 실행되기 때문입니다. 그래서 내 질문은 : 어떻게이 일회성 작업을 실행하도록 예약 할 수 있습니까? 또한 배치 파일을 단독으로 실행하면 제거 프로그램에서 호출 할 때 문제가 발생합니다.

나는 또한 운이 좋지 않은 특정 오류로 인해 인터넷 검색을 시도했습니다.

실용 사례를 단순화하여 schtasks 명령을 설치 프로그램의 ExecCommand로 옮길 수는 없으며 배치 파일 내에 있어야합니다 (실제로는 실행 파일 내에 있습니다. 그러나이 배치 예제가 더 쉽습니다)

+1

/RU "SYSTEM"을 cmd에 추가 할 수 있습니다. 나는 schtasks를 실행 한 적이 없지만 작동할까요? 시스템에 로그인 한 사용자와 시스템 컨텍스트에서 작업을 실행하는 사용자간에 혼란이있는 것 같습니다. –

+0

@BrianSutherland 트릭을하는 것처럼 보였습니다. 답변으로 게시하면 받아 들일 것입니다. –

답변

1

/RU "SYSTEM"을 cmd에 추가 할 수 있습니다. 나는 schtasks를 실행 한 적이 없지만 작동할까요? 시스템에 로그인 한 사용자와 시스템 컨텍스트에서 작업을 실행하는 사용자간에 혼란이있는 것 같습니다.