다른 컨텍스트에서 MSI (WIX)에서 일반 사용자로 프로세스를 실행합니다.
-
03-07-2019 - |
문제
회사 내에서 사용하는 일부 소프트웨어에 대한 설치 프로그램을 구성하려고합니다.
설치 프로그램은 SMS를 통해 대상 기계로 밀고 다음 단계를 수행합니다.
- 현재 앱의 현재 실행중인 인스턴스를 종료합니다 (앱은 유틸리티이므로 사용자에게 영향을 미치지 않습니다).
- 이전 버전을 제거하십시오.
- 업데이트 된 버전을 설치하십시오.
우리가 원하는 것은 3 단계가 완료되면 설치된 실행 파일을 시작하는 것입니다 (SMS 작업이 실행되는 시스템 계정이 아니라 현재 로그인 한 사용자로서).
다음과 같이 사용자 정의 작업을 추가하려고했습니다.
<CustomAction Id="Relaunch" Impersonate="yes" Return="asyncNoWait" FileKey="AppExeFile" Execute="commit" ExeCommand="acm" />
그리고 InstallExecuteSequence
요소 나는 다음과 같습니다.
<Custom Action="Relaunch" OnExit="success" />
그러나 우리가 이것을 시도 할 때, SMS 작업이나 관리자로 실행하는 경우 아무 일도 일어나지 않습니다 (예 : 앱은 다시 시작되지 않습니다).
제안이 있습니까?
해결책 2
불행히도 이것은 이것이 불가능한 것 같습니다 - 나는 코드에 필요한 것을 수행하는 MSI에 대한 확장을 작성하는 옵션이라고 생각합니다. 약간의 보상을위한 많은 작업처럼 보입니다.
우리가 결정한 것은 SMS를 사용하여 사슬 패키지를 보내는 것입니다. 첫 번째 패키지는 응용 프로그램을 실행하는 기본 패키지입니다.
이것이 다른 사람을 돕기를 바랍니다 :)
다른 팁
제가 생각해 낸 솔루션은 로그인시 실행 레지스트리 키를 사용하여 유틸리티를 시작하고 현재 사용자가 "시스템"인 경우 설치 중 유틸리티 시작을 방지하는 것입니다. 전개. 그러나 일부 고객은 SMS를 사용하고 있으며 이는 SMS를 사용하는 솔루션이었습니다.
Vista/Server 2008 UAC와 유사한 문제, 제가 생각해 낸 유일한 신뢰할 수있는 솔루션은 사용자가 유틸리티에 로그인 할 때 올바른 사용자 컨텍스트에 따라 유틸리티에 다시 로그인 할 수 있도록 재부팅을 예약하는 것입니다.
나는 상당한 연구를하고 MSI 문서를 살펴 보았으며 다른 사용자로서 배경 유틸리티를 시작하는 것이 실제로 불가능한 것으로 보인다.