2008-09-24 4 views
0

우리는 최근에 우리 자신의 설치를 압도함으로써 InstallShield 2008로 다시 돌아 왔습니다. 그래서 나는 그것에 대해 학습 곡선을 얻으려고 아직도 노력 중이다.Installshield에서 설치 제거시에만 설치하지 않고 응용 프로그램을 시작하는 데 가장 좋은 이벤트는 무엇입니까?

우리는 훌륭한 msi 설치 솔루션을 찾을 수 없다는 이유로 Firebird와 USB 드라이버를 사용하고 있습니다. 그래서, 우리는 조용히 firebird와 USB 드라이버를 조용히 설치하기위한 cmd 라인을 가지고있다.

이 코드를 이벤트 처리기 DefaultFeatureInstalled에 넣었습니다. 이것은 처음 설치할 때 정말 잘 작동합니다. 그러나 제거를 수행하면 파이어 버드 설치 프로그램을 다시 시작하려고 시도하므로 DefaultFeatureInstalled 이벤트를 다시 보내야합니다.

다른 이벤트가 사용 중이거나 DefaultFeatureInstalled 이벤트에서 설치 또는 제거 여부를 감지하는 방법이 있습니까?

답변

0

제품이 이미 설치되어 있거나 제거가 수행 중인지 여부를 알려주는 MSI 속성이 있습니다. 제품이 이미 있으면 Installed 속성이 true가되므로 불리언 표현식 (예 : 설치되지 않음)에서 사용할 수 있습니다. 제거가 발생하면 REMOVE 속성은 "ALL"로 설정됩니다. MsiGetProperty 기능을 사용하여 검색 할 수있는 이러한 등록 정보에서 Firebird 설치 논리를 조정할 수 있습니다.

참고 : 속성 이름은 대소 문자에 따라 다른 의미이므로 위의 경우를 사용해야합니다.

IS 온라인 도움말 또는 Google에서 DefaultFeatureInstalled 이벤트에 대한 참조를 찾을 수 없습니다. InstallShield 프로젝트가 기본 MSI입니까, 아니면 InstallScript입니까?

0

저는 InstallScript 프로젝트를하고 있습니다.

이벤트를 두 번 확인했는데 사용중인 기능에 밑줄이있는 DefaultFeature_Installed가 있습니다. 나는 그물과 IS의 웹 사이트를 수색했으나 그것에 대한 언급은 발견했지만 정의가 없다. 나는이 개발자에게이 이벤트에 코드를 처음으로 옮긴 사람을 물었고 코드를이 이벤트로 옮긴 이유와 이유를 기억할 수 없다.

오늘 아침 MsiGetProperty를 살펴 보겠습니다. 포인터 주셔서 감사.

0

당신은 DefaultFeature_Installed 이벤트에이 코드를 추가 할 수 있습니다

string sRemove; 
number nBuffer; 

nBuffer = 256; 
if (MsiGetProperty(ISMSI_HANDLE, "REMOVE", sRemove, nBuffer) = ERROR_SUCCESS) then 
    //do something 
endif; 

참고 : 함수 이름은 대소 문자를 구분합니다. ISMSI_HANDLE 값은 InstallShield 설치 엔진의 핸들입니다. sRemove가 "ALL"과 같으면 제거가 진행 중임을 나타내며 Firebird 설치를 건너 뛸 수 있습니다.

1

Chris, MsiGetProperty를 전혀 작동시키지 못했습니다. 그냥 가지고 코드를 추가

string sRemove; 
number nBuffer; 

nBuffer = 256; 
if (MsiGetProperty(ISMSI_HANDLE, "REMOVE", sRemove, nBuffer) = ERROR_SUCCESS) then 
    //do something 
endif; 

나는 "정의되지 않은 식별자"를 얻을. 저는 IS가 성공하지 못하게하기 위해 여러 가지 시도를했습니다. 좀 더 파고 들자 IS가 처음에 제거 할 때 함수를 호출하지 않는다는 것을 깨달았습니다. 나는 또 다른 기능을했다. 나는 같은 것을 부르고 있다고 생각한다. 그걸 정리 한 후에 나는 처음에 기대했던 결과를 얻고있었습니다.

따라서 정답은 제거시 DefaultFeature_Installed 이벤트의 코드에 대해 아무 것도하지 않아도된다는 것입니다.

0

InstallScript 또는 InstallScript MSI 프로젝트를 사용하는 경우 OnFirstUIBefore 이벤트를 처리해야합니다. 설치 프로그램이 처음 실행될 때 호출됩니다. 설치 관리자가 다시 시작되면 OnMaintUIBefore 이벤트가 발생합니다.