2017-09-12 6 views
0

아주 기본적인 WiX 설정을 수행하여 msi 파일을 만드는 방법에 대한 간단한 YouTube 지침 비디오를 따랐습니다. 목적은 특정 파일을 특정 디렉토리에 배치하고 4 개의 레지스트리 항목을 작성하는 것입니다. 나는이 프로젝트를 VS 2015에 내장하여 큰 성과를 거두었습니다. 그러나 WiX 프로젝트는 작동하지 않습니다. 이것은 XML 작업도 처음입니다. 나는 폴더에 파일을 넣어WiX Project VS 2015 디렉토리가 생성되지 않았습니다.

다음
<Fragment> 
<Directory Id="ProgramFilesFolder" Name="Programfiles"> 
    <Directory Id="MSOFFICEFOLDER" Name="Microsoft Office"> 
     <Directory Id="OFFICE14FOLDER" Name="Office14" /> 
     <Directory Id="LIBRARY" Name="Library"> 
     <Directory Id="MAKRO" Name="Makro">     
     </Directory> 
     </Directory> 
    </Directory> 
     </Directory> 
</Fragment> 

:

<!-- Adding files to Office14 folders --> 
<Fragment> 
    <DirectoryRef Id="OFFICE14FOLDER"> 
    <Component Id="umrch.hlp" Guid="*"> 
     <File Id="umrch.hlp" Source="MySourceFiles\UMRCH.HLP" KeyPath="yes" 
Checksum="yes"/> 
    </Component> 
    </DirectoryRef> 

    <DirectoryRef Id="LIBRARY"> 
    <Component Id="umrch.xla" Guid="*"> 
     <File Id="umrch.xla" Source="MySourceFiles\umrch.xla" KeyPath="yes" 
Checksum="yes"/> 
    </Component> 
    </DirectoryRef> 

    <DirectoryRef Id="MAKRO"> 
    <Component Id="umrch.xla" Guid="*"> 
     <File Id="umrch.xla" Source="MySourceFiles\umrch.xla" KeyPath="yes" 
Checksum="yes"/> 
    </Component> 
    </DirectoryRef> 


    <!-- Adding files to Company folders--> 
    <DirectoryRef Id="DATA"> 
    <Component Id="DATAfiles" Guid="*"> 
     <File Id="defumrch.dat" Source="MySourceFiles\defumrch.dat" 
KeyPath="yes" Checksum="yes"/> 
     <File Id="LL_UMRCH.DAT" Source="MySourceFiles\LL_UMRCH.DAT" 
KeyPath="no" Checksum="yes"/> 
    </Component> 
    </DirectoryRef> 

    <DirectoryRef Id="VERSION"> 
    <Component Id="VERSIONfiles" Guid="*"> 
     <File Id="umrch_Readme.doc" Source="MySourceFiles\umrch_Readme.doc" 
KeyPath="yes" Checksum="yes"/> 
     <File Id="umrch_Version.txt" Source="MySourceFiles\umrch_Version.txt" 
KeyPath="no" Checksum="yes"/> 
    </Component> 
    </DirectoryRef> 


    <!-- Adding files to Windows folder--> 
    <DirectoryRef Id="WindowsFolder"> 
    <Component Id="WINDOWSfiles" Guid=""> 
    <File Id="umrch.dll" Source="MySourceFiles\umrch.dll" KeyPath="yes" 
Checksum="yes"/> 
     <File Id="umrch.lib" Source="MySourceFiles\umrch.lib" KeyPath="no" 
Checksum="yes"/> 
     <File Id="umrch.mif" Source="MySourceFiles\umrch.mif" KeyPath="no" 
Checksum="yes"/> 
    </Component> 
    </DirectoryRef> 
</Fragment> 

을 그리고 여기 그들이 설치해야합니다

<Fragment> 
    <!-- Tell WiX to install the files --> 
    <Feature Id="xlahelp" Title="XLA and help files" Level="1"> 
    <ComponentRef Id="umrch.hlp" /> 
    <ComponentRef Id="umrch.xla" /> 
    </Feature> 

    <Feature Id="COMPANYfiles" Title="Company files" Level="1"> 
    <ComponentRef Id="DATAfiles" /> 
    <ComponentRef Id="VERSIONfiles" /> 
    </Feature> 

    <Feature Id="WindowsFiles" Title="Windows files" Level="1"> 
    <ComponentRef Id="WINDOWSfiles" /> 
    </Feature> 

    <Feature Id="Registry" Title="umrch" Level="1"> 
    <ComponentGroupRef Id="Registry"/> 
    </Feature> 
</Fragment> 

예를 들어, 나는 여기 디렉토리를 정의 누락 된 참조가 있습니까? 아니면 XML을 잘못 사용 했습니까?

편집 : 여기에 제품 윅스입니다

<Product Id="*" Name="UMRCH" Language="1033" Version="1.0.0.0" Manufacturer="Sample" UpgradeCode="ee45fb60-6741-4424-8136-dfc0d679629a"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
    <MediaTemplate /> 


</Product> 

스타 Åsmul에 대한 편집 :

데이터 및 VERSION 여기에 정의해야합니다

<Fragment> 
<Directory Id="WindowsVolume" Name="WindowsVolume"> 
    <Directory Id="!(bind.property.Manufacturer)" Name="!(bind.property.Manufacturer)"> 
    <Directory Id="UMRCH" Name="!(bind.property.ProductName)" /> 
     <Directory Id="DATA" Name="data"> 
     <Directory Id="VERSION" Name="version" /> 
     </Directory> 
    </Directory> 
    </Directory> 

또한 컴파일 않습니다 WiX를 사용할 때. .msi 파일은 오류가 발생하지 않고 빌드됩니다. SuperOrca로 여는 경우, Orca 내에서 .msi를 읽는 방법에 대해 전혀 모르기 때문에 _Validation 탭을 보여줍니다.

이제는 더 나은 가시성을 위해 github에 요지를 추가했습니다. 윅스를 사용하는 경우

Product/Registry

+0

''을 정의하는 wx를 제공 할 수 있습니까? 여러분이 만든 조각들을 제대로 참조하지 않으면 (결국 ''에서 참조됩니다), 컴파일시에 모든 것이 버려 질 것입니다. –

+0

내 원래 게시물을 업데이트했습니다! – coltfinger

+0

전체 WiX 소스를 단순히 표시하여 다른 사람이 재생산 할 수 있도록 간단히 복사하고 붙여 넣는 것이 더 좋습니다. – PhilDW

답변

0

이 파일은 모든 컴파일합니까? 설치하는 디렉토리 중 일부를 정의하지 않은 것 같습니다. 예 : DATA 및 VERSION. 출력 MSI 파일을 얻은 경우 Orca로 열면 어떻게됩니까? MSI에서 유효성 검사를 실행 했습니까?

질문을 좀 더 자세하게 업데이트하면이 대답을 "진화"할 것입니다. "토론"에 대한 의견 사용을 최소화하려고합시다.

+0

내 원래 게시물을 업데이트했습니다! – coltfinger