문제

다음 구성 요소를 사용하는 응용 프로그램의 P & D 용 표준 MSI 설치 프로그램을 만들었습니다.

  • Windows 서비스로 호스팅되는 WCF 서비스.
  • 해당 서비스와 통신하는 GUI 응용 프로그램.
  • 쉘 확장 DLL.

설치 프로그램은 문제없이 매우 잘 작동합니다. 사용자가 MSI 설치 프로그램을 사용하여 기존 응용 프로그램을 통해 응용 프로그램을 다시 설치하려고 할 때 문제가 발생합니다. 현재 "수리"및 "제거"옵션이있는 화면이 있습니다. 이 두 옵션은 모두 작동하지 않으며 관리 된 응용 프로그램을 손상시킵니다.

내가 원하는 것은이 화면을 건너 뛰고 응용 프로그램이 이미 설치되어 있다는 메시지 상자와 같은 것을 보여주는 것입니다. 사용자에게 수리 옵션을 제공 해야하는 것은 필수적이지 않습니다. 그리고 최소한 수리 옵션을 숨기거나 어떻게 든 제공 할 수 있어야합니다.

저를위한 도움이나 제안이 있습니까? 그래서, 나는 Orca add notrepair 속성 등을 사용하는 것과 같은 많은 것을 시도했지만 그중 어느 것도 효과가 없었습니다.

도움이 되었습니까?

해결책

살펴보십시오 Windows 설치 프로그램 가이드 이 두 속성에 대한 MSDN에서 :

다른 팁

대답은 설치 경험이 많지 않은 사람에게 몇 가지를 남깁니다.

이렇게하려면 .NET 설치 빌드로 작성된 후 .MSI를 편집해야합니다. 이 작업을 수행하는 쉬운 Microsoft는 쉬운 방법입니다 범고래. 당신은에서 ORCA를 설치할 수 있습니다 .NET Framework SDK. 이미 SDK가 있다고 생각하지만 시작 메뉴에 ORCA가 없다고 생각하면 "orca.exe"또는 "orca.msi"를 검색하십시오.

ORCA가 설치되면 그냥 실행하십시오. Orca UI를 사용하여 MSI 파일을 엽니 다. 왼쪽에는 "테이블"목록이 표시됩니다. 테이블을 선택하십시오 재산. 오른쪽 창에서 마우스 오른쪽 버튼을 클릭하고 추가하십시오. 이름이 지정된 노드를 추가하십시오 ARPNOREPAIR. 값을 빈 문자열로 설정했는지 확인하십시오. "". 또한 노드를 추가하십시오 ARPNOMODIFY 변경 옵션이 프로그램의 Windows에 표시되기를 원하지 않는 경우.

이 문제는 지금까지 몇 년이 걸렸다는 사실을 깨닫지 만 나 같은 사람들은 여전히이 문제에 여전히 들어가고 있다고 생각합니다. Sumeet은 허용 된 솔루션에 대한 주석으로 사용자가 여전히 "수리"및 "제거"옵션으로 화면에 도달 할 수 있다고 언급합니다.

실제로 사용자가 응용 프로그램의 설치 프로그램에 액세스 할 수있는 세 가지 방법이 있습니다.

하나 : 이미 대답했듯이 Arpnomodify 및 ArpnorePair가 추가 제거 프로그램에서만 문제를 해결하고 "orca.exe"로 수행 할 수 있습니다.

둘 : MSI의 설치 프로그램을 마우스 오른쪽 버튼으로 클릭하여. 안타깝게도 이것은 모든 MSI 파일에 대해 컴퓨터 전체를 조정하지 않고 두 옵션을 모두 피할 수없는 것 같습니다.

3 : 설치 프로그램을 두 번 클릭하면 이미 설치된 경우 라디오 버튼이 "수리"및 "제거"가있는 화면이 있습니다.

아래 에서이 깔끔한 적응을 찾았습니다. http://us.generation-nt.com/there-way-disable-remove-repair-option-through-orca-project-properties-49010162.html. 수리 옵션을 허용하는 선택을 그래픽으로 제거합니다. 폴 브런 (Paul Brun) 이이 사실에 감사드립니다.

  1. orca.exe로 msi-file을 열 수 있습니다.
  2. '속성'테이블로 이동하십시오.
  3. 값으로 'Arpnomodify'키를 추가하십시오 1.
  4. 값으로 'ArpnorePair'키를 추가하십시오 1.
  5. 'MaintenanceForm_Action'의 속성 값을 변경하십시오. Repair 에게 Remove.
  6. '컨트롤'테이블로 이동하십시오.
  7. Dialog_ 'MaintenanceForm'및 'BodyText'를 제어하여 항목을 찾으십시오.
  8. '텍스트'속성을 이것으로 변경하십시오.{\VSI_MS_Sans_Serif13.0_0_0}Select "Finish" to remove [ProductName]
  9. Dialog_ 'MaintenanceForm'및 'RepairRadiogroup'을 제어하여 항목을 찾으십시오.
  10. 'control_next'속성을 변경하십시오 CancelButton 에게 FinishButton.
  11. Dialog_ 'MaintenanceForm'및 'RepairRadiogroup'을 제어하여 항목을 찾고 제거하십시오.

위의 단계를 수행하는 것과 관련하여 한 번만 단계를 수행하여 MSI를 조정하는 프로세스를 자동화하는 것일 수 있습니다. 수행 방법에 대한 자세한 내용은 여기를 참조하십시오. ORCA를 사용하여 명령 줄에서 MSI를 편집 하시겠습니까?

나는 Henrik에 동의하지만 내 경우에는 마지막 단계

Dialog_ 'MaintenanceForm'및 'RepairRadiogroup'을 제어하여 항목을 찾고 제거하십시오.

2814 오류 원인.
그래서 제 제안은 : 수리 구조화 그룹을 보이지 않게 만드십시오. 그냥 설정하려면 s 기인하다 0까지

제어 세트 속성 업데이트 속성 = 0 여기서 컨트롤 = 'RepairRadiogroup'

ISM 파일을 편집하기 위해 InstallShield를 통해 가면 오늘은 훨씬 쉽습니다. 비활성화하려면 Change 그리고 Repair 프로그램 화면 추가/제거 버튼 아래 설정을 Yes ~에 Installation Designer 탭> Installation Information 탐색 창의 노드> General Information 탐색 창의 노드> Add or Remove Programs 세부적으로 섹션

  1. Disable Change Button
  2. Disable Repair Button

enter image description here

두 번째 문제를 처리하려면 간단히 내장을 수정할 수 있습니다. MaintenanceWelcome InstallShield의 대화 화면.

  1. 환영 메시지 레이블의 텍스트를 일부 오류 메시지로 변경합니다. 예를 들어 "이 제품의 다른 버전이 이미 설치되어 있습니다. 설치가 계속 될 수 없습니다."
  2. 클릭의 행동에서 Next 버튼 만 추가하십시오 EndDialog 이벤트. 실행 조건을 설정하십시오 1 항상 실행되도록합니다. 설정 Value 에게 Exit
  3. 텍스트를 변경하십시오 Next "마무리"로 버튼을 누릅니다.
  4. 비활성화하거나 숨 깁니다 Cancel 원하는 경우 버튼을 누릅니다.

당신 준비 다 됐어요!

exe 파일 내에 setup.exe와 msi를 마무리했습니다. 클릭하면 파일을 추출하고 setup.exe를 트리거합니다. 해당 EXE에서 응용 프로그램이 이미 시스템에 설치되어 있는지 확인하기위한 코드를 추가했습니다. 설치된 경우 사용자에게 프롬프트 및 종료됩니다. 이런 식으로 응용 프로그램이 이미 설치된 경우 MSI가 시작되지 않으므로 화면을 수리하고 제거하지 않습니다. 화면 추가/제거 버튼과 관련하여 "Chegueverra"가 제공 한 솔루션을 사용했습니다. 고마워.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top