2014-01-20 2 views
2

WIX를 사용하여 응용 프로그램 설치 프로그램을 만듭니다. 응용 프로그램을 제거하는 동안 DLL 파일이 DLL 파일에 포함 된 파일을 삭제하기 전에 DLL 파일에서 함수를 호출하고 싶습니다. 계속 진행하려면 this post과 같은 다른 관련 게시물을 확인했습니다.제거 중 WIX의 사용자 지정 작업

<CustomAction Id="UnRegister" 
       FileKey="mydll.dll" 
       DllEntry="cleanup" 
       Execute="immediate" 
       Return="ignore"/> 

다음 InstallExecuteSequence 태그 : 나는 응용 프로그램을 제거하려고 할 때

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

문제는, 파일을 먼저 한 후 제거되어 다음과 같이

은 내가 CustomAction를 생성 설치 프로그램은 DLL에서 cleanup() 함수를 호출합니다. 오류가 발}하면 설치 제거 롤백되고 실패합니다.

어떻게 기능을 먼저 호출하고 제거하는 동안 파일을 삭제하도록 WIX 설치 프로그램을 구성 할 수 있습니까?

감사합니다.

+0

즉시 조치가 실행 된 후에 파일이 제거되므로 파일이 시스템에있을 때 사용자 지정 작업을 실행해야합니다. 설치 제거 루틴에 대한 자세한 로그를 게시하여 파일 삭제를 트리거하는 내용을 정확히 볼 수 있습니까? –

+0

로그 : 오류 1723.이 Windows Installer 패키지에 문제가 있습니다. 이 설치를 완료하는 데 필요한 DLL을 실행할 수 없습니다. 지원 담당자 또는 패키지 공급 업체에 문의하십시오. 작업 등록, 항목 : AddInfo, 라이브러리 : C : \ Program Files (x86) \ testApp \ mydll.dll. 그러나이 로그는 설치에 사용한 기능을 실행하려고 함을 나타냅니다. "Register"라는 유사한 CustomAction이 있습니다. <사용자 정의 Action = "등록"전에 = "InstallFinalize"/> – Ali

+0

사용자 지정 작업을 실행하지만 실패합니까? 그렇다면 관리자 권한이 없어서 사용자 지정 작업을 가장하지 않고 지연된 상태로 실행하도록 설정할 수 있습니다. –

답변

3

감사합니다. Bogdan. 로그에 따르면, 설치 프로그램은 설치시에만 실행되기를 원하는 CustomAction을 실행하려고했습니다. 이를 위해 설치 중에 만 실행해야하는 사용자 지정 작업에 "NOT Installed"를 추가해야합니다. 같은 다음

<Custom Action="Register" Before="InstallFinalize">NOT Installed</Custom> 
+0

고맙다. 나는 이런 것을 찾고 있었다. :) –

0

당신이 특정 문제를 해결 한 이후이 댓글 더 ...

당신은 밖으로 별도의 응용 프로그램 라이브러리에서 로직을 설치해야합니다. 실행하는 모든 사용자 지정 작업 동작은 자체적으로 설치되지 않은 파일에 구현되어야합니다. 한 가지 이유는 파일이 누락되어 설치 제거가 실패 할 수 있기 때문입니다.

자체 등록 메커니즘을 사용하고있는 것으로 보입니다. 이는 Windows Installer가 피하도록 설계된 안티 패턴입니다. 레지스트리 항목의 경우 WiX의 레지스트리 항목 선언을 사용하여 레지스트리 항목을 만들고 제거 할 수 있습니다. 응용 프로그램에서 만든 파일과 폴더에서도 마찬가지입니다.

그러나 제거시 컴퓨터를 깨끗이 지우는 것은 바람직하지 않습니다. 제거해야 할 항목과 남아 있어야하는 항목에 대한 많은 회색 영역이 있습니다. 한쪽 끝에는 응용 프로그램 바이너리 (사라져야 함)가 있습니다. 다른 쪽 끝에는 응용 프로그램을 통해 사용자가 만든 문서가 있습니다. 사용자가 개인적으로 선택한 설정은 가운데에있는 다른 많은 것들 중 하나입니다 (재설치 후 나중에 사용할 수 있도록 유지할 수 있음).

관련 문제