2017-02-05 6 views
0

InstallShield 2015 Basic MSI로 설치 프로그램을 만들었습니다.
이 설치 프로그램에서 사용자가 클라이언트 또는 서버를 설치할지 여부를 선택할 수 있다고 가정하면 각 설치 유형 (클라이언트 또는 서버)마다 을 설치할 수있는 몇 가지 기능이 있습니다.
이제 클라이언트 설치를 선택하고 그 아래에 두 개의 기능, 을 포함시킵니다. UI로 설정을 다시 실행하면 유지 관리 모드로 들어가 클라이언트에 더 많은 기능을 추가 할 수 있습니다.InstallShield 명령 줄에서 동일한 MSI를 두 번 설치하는 것을 차단합니다.

내 문제는 명령 줄 (msiexec/I)에서 동일한 설치 프로그램을 다시 실행하고 서버 설치 유형을 설치하려고 할 때 현재 설치가이를 차단하거나 막지 않아 클라이언트 설치가 손상 될 수 있다는 것입니다. 이미 설치되었습니다.

그래서 현재 설정이 설치되어 있는지 확인하고 사용자가 명령 줄에서 실행하려고 시도하고있는 것을 확인하고 차단하지 않으면 (여전히 명령 줄에서 제거 실행을 지원해야하는 CA를 작성해야합니다.).

이 논리가 맞습니까? 명령 줄에서 명령 사용자가 무엇인지 어떻게 알 수 있습니까? 그는 msiexec/I을 실행하고 명령 줄에서 제거하려고하지 않음을 의미합니다.

동일한 MSI를 명령 줄에서 두 번 설치하지 못하도록 InstallShield \ MSI 빌드 방식으로 \ 속성에 포함되어 있는지 궁금합니다.

+0

서버 및 클라이언트 기능을 UI와 명령 줄에서 상호 배타적으로 사용 하시겠습니까? –

+0

올바른지, 사용자가 UI에서 클라이언트 또는 서버를 설치할 수 있습니다. 둘 다 설치하는 것을 막을 수는 있지만 명령 줄에서 실행되지는 않습니다. 사용자가 명령 줄에서 실행중인 작업을 확인하는 방법을 모르겠습니다. 그렇지 않습니다. – Epligam

+0

사용자가 두 개의 충돌하는 기능을 설치하도록 요청했거나 사용자가 설치되어있는 다른 기능과 충돌하는 한 가지 기능을 설치하도록 요청한 경우 설치를 차단하는 유형 19 오류 사용자 지정 작업을 작성했습니다. 조건부 표현식에 기능 요청 및 설치된 상태 연산자를 사용하고 CostFinalize 후에 일정을 예약하십시오. –

답변

0

나는 당신을 이해하는 데 어려움을 겪고 있습니다. 내 대답이 당신의 필요에 부합되기를 바랍니다.

처음 MSI를 실행하면 설치 모드가됩니다. 다시 실행할 때 유지 관리 모드입니다. 설치 프로그램을 작성한 방법에 따라 복구, 변경 또는 제거 버튼이있는 대화 상자가 나타납니다. 변경 버튼을 사용하여 사용자가 추가 기능을 추가하거나 기능을 제거 할 수 있습니다. ADDLOCAL 및 REMOVE 속성을 사용하여 명령 줄에서이 작업을 모두 수행 할 수 있습니다. 특성에는 특성 이름의 구분 된 목록이 있습니다.

사람들이 실수로 사용하는 장소 중 하나가 설치되지 않은 상태 | 사용자 지정 작업에서 REMOVE = "ALL". 이것은 여러 기능을 가지고 유지 관리 모드에서 돌아와 응용 프로그램을 다시 구성 할 수 있다는 사실을 고려하지 않습니다. MSI에는이 작업에 더 적합한 조건에서 사용할 수있는 기능 및 구성 요소 설치 및 작업 상태 평가 기가 있습니다.

업데이트 :

I 블록 설치는 사용자가 설치하는 두 가지 상충되는 기능을 요청하는 경우 또는 사용자가 하나 개의 기능을 요청하는 유형 19 오류 사용자 지정 작업을 작성합니다

를 설치해야하는 또 다른 기능과 충돌 설치되어 있습니다. 조건부 표현식에 기능 요청 및 설치된 상태 연산자를 사용하고 CostFinalize 후에 일정을 예약하십시오.

+0

나는 내 질문을 업데이트했다. 지금은 더 명확 해 졌으면 좋겠다. – Epligam