2017-12-12 26 views
0

WIX를 사용하여 Windows Installer MSI를 만들고 있습니다. 각각의 wxs 파일에 작은 코드 덩어리를 가지기 위해 파일을 여러 조각으로 나누고 싶습니다.WIX : 기능 조각 만들기

현재 아래 파일이 있습니다. - Product.wxs에는 Product, Package, MediaTemplate 및 Feature 요소가 포함되어 있습니다. - Directories.wxs에는 사용자에게 사용 권한을 부여하고 제거시 폴더를 제거하는 폴더 구조 및 구성 요소가 포함되어 있습니다.

내가 너무 Product.wxs에서 내 모든 기능을, 그리고 그것을 자신의 파일, Features.wxs를 불렀다 만들려고합니다.

내부 Directories.wxs, 나는 코드의 라인 아래에있다 : 나는 기능 요소에이 구성 요소를 참조하고 있기 때문에, 나는 확신, 위의 코드를 갖는

<Component Id="Component1" Guid="PUT_GUID_HERE" Directory="Subfolder"> 
    <CreateFolder> 
    <util:PermissionEx GenericAll="yes" ChangePermission="yes" Delete="yes" DeleteChild="yes" User="Users"/> 
    </CreateFolder> 
</Component> 

Product.wxs 그디렉토리는입니다.

하지만이 Feature.wxs 파일을 생성하고,이 파일에 코드 라인 아래로 이동할 때 :

<Feature Id="CreateDirectoriesFeature" Title="Feature1" Level="1"> 
    <ComponentRef Id="Component1"/> 
</Feature> 

을 내 제품이 조각/기능을 참조하는 경우 방법/모르겠어요. wxs.

답변

1

FeatureRef 요소가있는 FeatureGroup을 만든 다음 Product.wxs에서 FeatureGroupRef를 사용하여 범위를 가져옵니다.

+0

제품의 단순한 라인으로 충분합니까? Josh

+0

Product 요소를 포함하는 wxs는 "주"wxs 파일입니다. 다른 wxs에서 무언가를 참조하면 wxs 전체가 범위로 ​​가져옵니다. –

+0

한 가지 방법은 https://github.com/iswix-llc/iswix-tutorials/tree/master/web-application/Installer를 참조하십시오. –

0

다른 파일에도 내 지형지 물을 넣었습니다. 지형도 물을 참조해야하는 유일한 것은 지형지 물 ID입니다.

다음은 코드 예제입니다. 여기에 내가 가진 전체 기능 파일입니다 :

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
     <Feature Id="Feature_Name" 
       Level="1"> 
      <ComponentRef Id="Component_Name"/> 
     </Feature> 
    </Fragment> 
</Wix> 

는 그리고 여기에 내가 에 Product.wxs 그것을 참조하는 방법입니다. 나는 그것의 쓴 끝에 당신에게 MajorUpgrade 요소에서 전체 파일을 보여주지 : 그것 뿐이다

 <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
     <MediaTemplate EmbedCab="yes"/> 
     <FeatureRef Id="Feature_Name"/> 
    </Product> 
</Wix> 

합니다. 어쩌면 당신은 FeatureRef을 사용하지 않고 있습니까?