2011-04-29 3 views
0

내 응용 프로그램에는 기본 설치에서 제공되는 바로 가기를 대체하는 바로 가기가있는 선택 구성 요소가 포함됩니다. 이 옵션이 설치되어 있지 않으면 기본 단축키 만 설치하는 방법을 알아낼 수 없습니다. 아니면 가장 좋은 이름과 희망을 둘 다 제공해야합니까? 이것은 일반 단추뿐만 아니라 사용자 정의 설치 트리를 통해 작업해야합니다.MSI : 다른 구성 요소가 설치되지 않은 경우에만 구성 요소를 설치하는 방법

작동 방식을 확인하십시오. 설치시이 항목을 별도로 선택하면 주 응용 프로그램의 시작 메뉴 바로 가기가 대신이 항목을 가리켜 야하므로 필요할 때 바로 주 메뉴가 열립니다.

InstallShield 2011 Professional을 사용하고 있습니다.

EDIT : 명확히하기 - 나는 main, main의 단축키와 단축키가있는 addon의 세 가지 구성 요소가 있습니다. addon이 설치되어 있는지 확인하는 방법을 모르겠습니다. 메인 단축키의 조건에 추가 할 수 있습니다. 확실히 변수가 있습니다. 설명서는 매우 스파르타합니다.

답변

0

기본 구성 요소가 설치에 포함되어 있다고 가정하면 '추가 구성 요소'에 대해 구성 요소 조건을 사용할 수 있습니다. 그런 다음이 추가 구성 요소가 다른 구성 요소가 아닌 경우에만 설치되도록 할 수 있습니다. 즉, 상호 배타적이 될 수 있습니다. 이렇게하면 사용자 정의 대화 상자를 훨씬 더 복잡하게 만들 수있는 기능을 사용하지 않아도됩니다.

0

@Stephen : 기능 만 GUI에서 볼 수 있고 사용자가 설치할 항목을 지정할 수 있으므로 기능 사용을 피할 수있는 방법을 알 수 없습니다.

MSI 파일의 내부 일관성 검사기에 따라 유효성을 검사하지 않기 때문에 일반적으로이 종류의 솔루션이 마음에 들지 않지만 EXE를 하나의 구성 요소에 설치 한 다음 다른 바로 가기가있는 두 개의 구성 요소를 각각 가질 수 있습니다 조건은 상호 배타적이다. 그런 다음 사용자 정의 바로 가기를 설치하는 기능을 사용자 정의 바로 가기 구성 요소에 연결합니다. 이 기능은 GUI에 표시되도록 설정해야합니다. 바로 가기는 파일이없는 구성 요소에 있기 때문에 광고하지 않아야합니다. 유지 관리 설치에 적합한 구성 요소를 제거/추가 할 수 있도록 바로 가기 구성 요소에 일시 플래그를 설정해야 할 수 있습니다. 과도기 구성 요소는 유지 보수 설치 중에 지정된 조건이 제거/추가를 트리거하는지 확인하기 위해 구성 요소 조건을 재평가합니다.

1

질문을 올바르게 이해하고 있으면 MAIN.EXE가 MIDDLEMAN.EXE가 설치되지 않는 한 바로 가기를 가져옵니다. MIDDLEMAN.EXE는 바로 가기를 가져옵니다.

이것은 구성 요소의 존재가 다른 구성 요소의 정의를 변경한다는 이상한 문제입니다. 그래도 끝낼 수 있습니다. 방법은 MIDDLEMAN.EXE에 대한 구성 요소를 만들고 바로 가기를 정의하는 것입니다. MAIN.EXE에 대한 다른 구성 요소를 만들고 바로 가기를 정의하지 마십시오.

그런 다음 파일 비용 계산 후에 실행되는 실행 과정에서 실행 순서로 실행되는 사용자 지정 작업을 작성하십시오. MIDDLEMAN.EXE가 설치되어 있지 않고 설치되어 있지 않은지 확인하십시오. 이것이 사실이라면 MAIN.EXE에 대한 ShortCut을 정의하기 위해 ShortCut 테이블에 임시 행을 작성하십시오.

거기에서 바로 가기 서비스를 처리하기 위해 지연된 사용자 지정 작업없이 MSI가 나머지를 처리하도록 할 수 있습니다.

여전히 응용 프로그램의 디자인을 변경하여 단순화 할 수없는 것인지 궁금해 할 수 없습니다. 기본적으로 EXE 수준에서 종속성 주입을 시도하고 DLL 수준에서이 작업을 수행하는 것이 더 쉽습니다.otherwords에서 가기 : 바로 가기 옵션 DLL과

MAIN.EXE

메인 .exe 항상라고하지만 Optional.DLL이있을 때 그는 다르게 동작합니다.