2009-05-18 5 views
0

환경에서 쉴드 2009 프리미어 사용자 지정 작업의 문제를 설치 : 설치 쉴드 2009 프리미어, 비스타 (홈/프리미엄, 얼티밋)비스타 홈/프리미엄/궁극

난에 설치 사용자 지정 작업을 설치하는 동안 해고 쉴드 2009 . setup.exe가 잘 실행되었지만 Vista에서 MyApplication.msi를 실행할 때 (다른 OS에서는 사용자 정의 작업이 올바르게 작동 함을주의하십시오) 사용자 정의 작업을 실행하는 중에 예외가 표시됩니다. 사용자 지정 작업은 명령 줄 인수를 사용하여 exe를 실행하는 것입니다.

그 exe는 해당 OS에서 개별적으로 잘 실행됩니다. 그러나 MyApplication.msi가 실행하려고 할 때 예외가 표시됩니다.

내 생각에 : MyApplication.msi는 해당 사용자 지정 작업 (.exe 파일)과 함께 실행할 적절한 권한 (관리)을 제공 할 수 없습니다. 그러나 setup.exe는 가능합니다.

어떻게 해결할 수 있습니까? "인 - 스크립트 실행"값 내 사용자 지정 작업에 대한 사용자 지정 작업 마법사에서


, 나는 "시스템 컨텍스트에서 이연 실행"당신은 상태하지 않았다

답변

1

을 선택했다, 그러나 당신의 설정 같은 소리 .exe에는 관리자 권한이 필요한 매니페스트가 있습니다 (setup.exe를 시작할 때 UAC 프롬프트가 표시되는 경우). 또한 사용자 지정 동작에서 실행하려고하는 exe가 비슷한 관리 권한 요구 사항을 가지고있는 것 같습니다. MSI의 exe 사용자 지정 동작은 승격 할 수없는 CreateProcess를 사용합니다.

액션이 UI 시퀀스에서 실행되는 경우 ShellExecute 또는 ShellExecuteEx를 사용해야합니다. LaunchApplication을 플래그 LAAW_OPTION_USE_SHELLEXECUTE 또는 ShellExecuteEx를 직접 호출하는 C++를 사용하여 InstallScript 사용자 지정 액션으로 수행 할 수 있습니다.

동작이 실행 시퀀스에서 실행되는 경우 "시스템 컨텍스트에서 지연됨"으로 표시해야 상승 된 컨텍스트에서 시작됩니다. 다른 방법으로 표시되는 추가 UAC 프롬프트를 피할 수 있으므로 일반적으로이 기능이 사용자 경험 측면에서 선호됩니다. 그러나 지연된 작업에는 제한이 있습니다 (예 : 최소한의 속성 액세스). 자신을 숙지해야 할 수도 있습니다.

+0

안녕 마이클, 감사합니다 4 정보. 네, InstallShield에 새로운 기능입니다. 내 사용자 지정 작업은 실행 시퀀스에서 실행됩니다. 그것의 속성과 같다 : 반환 처리 : 동기 (종료 코드 확인) 스크립트 실행에 : 즉시 실행 실행 일정 : 시퀀스를 실행하여 설치합니다 : <첫 번째 액션> 실행를 설치하십시오 항상 UI 순서를 설치 을 실행 조건 : 설치되지 않았으며 패치되지 않음 설치 중에 "스크립트 실행"속성이 "지연된 시스템 실행"으로 설정된 경우 XP 및 Vista에서도 예외가 표시됩니다. 이제 어떻게해야할까요? – Samir

+0

아, 지연된 작업의 또 다른 한계는 InstallInitialize와 InstallFinalize 사이에서 예약해야한다는 것입니다. 실제로 첫 번째 액션이 필요한 경우에는 UI 시퀀스 메서드 (UI 시퀀스를 표시하지 않아야하므로 실행 시퀀스에서 나쁘다)로 되돌아 가야합니다. –

+0

Micheal에게 감사드립니다. 그것은 작동합니다. Vista에서 작동하지 않더라도 해당 사용자 지정 작업에 대한 매니페스트 파일을 추가했습니다. – Samir

관련 문제