Windows Installer 설명서 Part33 WiX Bundle

7994 단어 installerWiXToolset
이전 글로 이동 디렉토리로 이동 다음 글
여러 MSI 형식의 설치 프로그램을 하나로 병합할 수 있음
WiX Toolset에는 Wix Bundle로 불리는 exe 형식의 설치 프로그램을 제작하는 기능이 있습니다.기능상 한 번에 여러 개의 MSI 파일(제품)을 설치할 수 있는 이미지가 아니라 여러 개의 MSI 파일을 하나의 제품으로 설치할 수 있는 이미지다.WiX Toolset 문서를 보면서'이런 기능도 있구나'생각하면서 맞춤형으로 만들면 발표 후 골치 아픈 일이 생기기 쉬워 사실상 어려운 구조다.또 온라인으로 검색해도 미세하게 조정하기 어렵다는 인상을 준다.설치 프로그램의 창조자로서 피하려는 기술이지만 어쩔 수 없이 와이즈번들을 사용하는 경우도 드물기 때문에 제가 설명해 드리겠습니다.
WiX Bundle 만드는 법
구조를 설명하기 전에 WiX Bundle 제작 방법을 간단히 설명합니다.원본 파일, candle을 XML 형식으로 기술합니다.exe로 컴파일,light.exe를 통해 연결된 곳은 MSI와 제작 방법이 같다."Visual Studio에 Wix Toolset Visual Studio 20 x Extension이 포함된""새 프로젝트 만들기""에서 WiXv3 for Bootstraper Project를 선택하면 다음 템플릿이 생성됩니다."
Bundle.wxs
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Bundle Name="Part33_01" Version="1.0.0.0" Manufacturer="" UpgradeCode="9b276dae-7f0b-4550-9de4-71a24ef630d7">
        <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
        <Chain>
            <!-- TODO: Define the list of chained packages. -->
            <!-- <MsiPackage SourceFile="path\to\your.msi" /> -->
        </Chain>
    </Bundle>
</Wix>
예를 들어 여기서 두 개의 MSI 파일을 동시에 설치하는 Package Bundle을 쉽게 만들 수 있습니다.Bundle 요소 요소에 제품 이름과 버전 등을 설정하고 Chain 요소에 두 개의 MsiPackage 요소만 배치합니다.
Bundle.wxs
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Bundle Name="Part33_01" Version="1.0.0" Manufacturer="tohshima" UpgradeCode="9b276dae-7f0b-4550-9de4-71a24ef630d7">
        <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
        <Chain>
            <MsiPackage Id="msipkg_a" SourceFile="Part33_a.msi"/>
            <MsiPackage Id="msipkg_b" SourceFile="Part33_b.msi"/>
        </Chain>
    </Bundle>
</Wix>
설치 마법사의 모양을 결정하는 B ootstrapperApplication Ref 요소의 Id에 지정된 문자열은 다음 페이지에 설명되어 있습니다.
Working with WiX Standard Bootstrapper Application
집필할 때는 예시의'Wix S t a n d a rd BootstraperApplication.Rtflicense'와 함께 5가지를 선택할 수 있다.이 기사에서는 UI의 사용자 정의 설정에 손대지 말고 먼저 대화를 나눕니다.
부모 설치 프로그램은 '응용 프로그램 및 기능' 에 등록될 것이다
이전 예제의 설치 프로그램을 사용하여 설정된'응용 및 기능'에 모 설치 프로그램Part33_01만 표시하고 자 설치 프로그램Part33_aPart33_b은 표시하지 않는다. 등록표를 확인한 후 Part33_aPart33_b의 항목이 있지만 표시하지 않는다.그것을 표시하기 위해 모 설치 프로그램을 설정할 수 있습니다.MsiPackage 요소에 속성Visible="yes"을 추가하면 가 표시됩니다.
<Chain>
    <MsiPackage Id="msipkg_a" SourceFile="Part33_a.msi" Visible="yes" />
    <MsiPackage Id="msipkg_b" SourceFile="Part33_b.msi" Visible="yes" />
</Chain>
설치 후 응용 프로그램 및 기능에 다음 세 항목이 표시됩니다.안타깝게도Part33_aPart33_bPart33_01의 서브루틴이라는 것을 사용자들은 몰랐다.

"Part3301은 거추장스러워요. 숨기세요!"그렇게 생각하면 안 돼1.삭제Part33_01 수단이 없어졌기 때문이다.Part33_aPart33_b를 빼도Part33_01는 등록표에 남는다.설치에 사용된 설치 프로그램이 남아 있으면 마운트 해제를 다시 시작할 수 있지만 사용자 수중에 남은 설치 프로그램이 있을 것이라고 기대할 수 없습니다.
위에서 말한 바와 같이 "응용 및 기능"의 제품 이름이 부적절하게 표시되었기 때문에, 나는 MsiPackage 요소 Visible 는 속성을 추가할 수 없다고 생각한다. (하위 프로그램을 표시할 수 없다.)또 부모님이 프로그램을 설치하는 항목을'앱과 기능'에 표시하지 않으려면 WiX Bundle을 사용해서는 안 된다.
WiX Bundle은 하위 설치 프로그램으로 관리되는 MSI를 공유할 수 있음
아마도 이것은 WiX Bundle을 사용하는 가장 강력한 동기일 것이다.설치 프로그램에서 같은 MSI를 가진 두 제품을 설치했을 때 한 제품을 마운트 해제해도 다른 제품이 있다면 그 MSI는 마운트 해제되지 않습니다.실제로 해볼게요.다음 그림과 같이 구성된 두 제품을 준비하세요.두 제품은 Part33입니다.a.msei를 공유하고 있습니다.

설치 서브루틴은 다음 그림과 같이 응용 프로그램 및 기능에 표시될 수도 있습니다.

여기, Part3301을 제거한 후 다음 그림과 같습니다.

공유된 Part33a가 아직 안전하다는 것을 확인할 수 있습니다.Part3302 를 제거할 경우 Part33a、Part33_c 둘 다 삭제되었습니다.

반복적으로 실험을 위해'응용과 기능'에 하위 프로그램을 표시했지만 제품은 하위 프로그램을 표시해서는 안 된다.
이전 글로 이동 디렉토리로 이동 다음 글
Bundle 요소의 ParentName 속성을 지정하면 WiX Bundle에서 만든 제품 항목이 적용 및 기능에 의해 숨겨집니다.WiX 문서에는 여기에 설정된 이름이 제품명에 추가된다는 설명이 담겼다. 

좋은 웹페이지 즐겨찾기