2011-02-08 2 views

답변

2

InstallValidate 동작에 의해 프롬프트가 자동으로 표시되므로 동작을 수정할 수 없습니다. 대신 InstallValidate 전에 응용 프로그램을 닫는 사용자 지정 작업을 사용하여 응용 프로그램을 차단할 수 있습니다.

일반적으로 주 응용 프로그램 창에 WM_CLOSE를 전송하여이 작업을 수행합니다 (응용 프로그램에서이 작업을 수행하려면이 메시지를 처리해야합니다).

Windows Installer가 실행중인 응용 프로그램을 감지하지 못하기 때문에 다른 응용 프로그램 (Outlook, Firefox 등)도 프롬프트에 표시됩니다. 기본적으로 파일 종속성을 검사합니다 (예 : 여러 응용 프로그램이 동일한 DLL 또는 런타임을 사용하는 경우). 오 탐지 (false positives)가 발생할 수 있습니다.

+0

"Uninstall"아래에 사용자 지정 작업이 있지만 실행중인 응용 프로그램과 함께 프롬프트가 실행 된 후 실행됩니다 ... 어떻게 넣어야합니까? – Marin

+0

예를 들어 CostFinalize 후에 InstallValidate 전에 이동해야합니다.설치 제거 중에 만 REMOVE = "ALL"조건을 사용하여 실행하는지 확인하십시오. –

1

MSI는 재부팅 시나리오를 사용하여 잠긴 파일을 자동으로 처리합니다. 응용 프로그램을 닫으려고하면 다시 부팅하지 못하게 할 수 있습니다. 재부팅을 억제 할 수는 있지만 재부팅 후까지 파일이 실제로 대체되지 않습니다.

찾고있는 동작이 정확히 무엇입니까? 거기에서

FilesInUse Dialog

이 InstallValidate 및 시스템 재부팅에 대한 링크를 따르

BTW, 독서를 권장합니다.

+0

설치 프로그램이 자동으로 실행중인 응용 프로그램을 무시하거나 실행중인 응용 프로그램을 평가하기 전에 응용 프로그램을 끝내기를 원합니다 - 사용자 지정 작업으로 시도한 후 @Cosmin에 대한 주석 참조 – Marin

+0

번호가 50 이하인 installexecutesequnce에 내 사용자 지정을 적용 해봤습니다. , 그러나 그것은 실행되지 않습니다. 그것은 조건이 2, 맞을 것입니다? – Marin

+0

무시하면 어떻게 되나요? –

0

mrnx가 여기에 쓴 것처럼이 응용 프로그램 실행 확인은 InstallValidate 동안 발생합니다. 하지만 응용 프로그램을 중지하기 전에 중지하는 것이 좋습니다. 다른 검사는 실패 할 수 있으며 MSI는 실행중인 응용 프로그램을 포함하여 MSI를 실행하기 전의 상태로 시스템을 복구 할 수 있어야합니다.

게다가 이러한 검사는 "지연"이 아닌 "즉시"로 실행됩니다. 응용 프로그램을 중지하는

IMO 사용자 지정 작업을 실행해야합니다 그냥 "RemoveFiles를"전에하고 관리자로 실행 확인 "를 연기"로. 이제

사용할 수 있습니다 다음과 같은 특성을 보여주는에서 대화를 방지하기 위해 :

<Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable" /> 

나의 이해에서 여전히 RemoveFiles 동안 FilesInUse 대화 상자로 다시 그들은 여전히 ​​사용해야 떨어질 것 그 시간에.

관련 문제