2013-01-05 5 views
3

WiX를 사용하여 제품 설치 프로그램을 만듭니다. 어떤 이유로 든 더 이상 .exes 및 .dll 파일을 설치 프로그램에 포함하지 않습니다.바이너리가 포함되지 않은 WiX

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder"> 
    <Directory Id="USERSPECIFIEDDIR" Name="My-app-name" /> 
    </Directory> 

과 폴더가 응용 프로그램에 필요한 모든 .exe 및 DLL 파일이 포함되어 내-앱 이름을 불리는 함께 그것은의 .msi를 만듭니다 그래서이있다. 내가 거기에서 설치 프로그램을 실행하면 괜찮습니다.하지만 다른 곳에서는 (하위 디렉토리없이) msi를 이동하면 파일을 찾을 수 없기 때문에 오류가 발생합니다. 설치 프로그램 안에 모든 바이너리를 임베드하도록 WiX에 어떻게 말할 수 있습니까?

도움이 될 경우 여기에 내 wx에서 가져온 일부 발췌 문장이 있습니다. 다른 정보가 필요한 경우 알려주십시오. 아, 그리고 2008 년

<DirectoryRef Id="USERSPECIFIEDDIR"> 
    <Component Id="MainExe" Guid="580F8F15-C06C-49A7-ADDC-56C96580DC0D"> 
    <File Id="MainExe" Name="OrderMonkey.exe" KeyPath="yes" /> 
    </Component> 
    <Component Id="OMEmailerExe" Guid="3B0AECC3-67E5-40B3-83CB-9B84FE965ED8"> 
    <File Id="OMEmailerExe" Name="OMEmailer.exe" /> 
    </Component> 
    <Component Id="migradomDLL" Guid="37E1BCAE-EB39-4DF5-88C7-AE74CA5EA171"> 
     <File Id="migradom" Name="MigraDoc.DocumentObjectModel.dll" /> 
    </Component> 
    <Component Id="migrarenderDLL" Guid="C2910B9E-0B06-467A-853C-7651BE7BD9E4"> 
     <File Id="migrarender" Name="MigraDoc.Rendering.dll" /> 
    </Component> 
    <Component Id="migrartfDLL" Guid="CEBE4DE9-7CA0-4F48-A8B1-1D46E4E48B66"> 
      <File Id="migrartf" Name="MigraDoc.RtfRendering.dll" /> 
    </Component> 
    <Component Id="mysqldataDLL" Guid="2E474737-474C-4146-8E67-D3837B5DB862"> 
      <File Id="mysqldata" Name="MySql.Data.dll" /> 
    </Component> 
    <Component Id="pdfchartingDLL" Guid="7467B6C2-BE38-4283-B179-9FA94C4A087F"> 
       <File Id="pdfcharting" Name="PdfSharp.Charting.dll" /> 
    </Component> 
    <Component Id="pdfsharpDLL" Guid="39F23E36-BF9C-40C1-8190-6A3554B879BC"> 
       <File Id="pdfsharp" Name="PdfSharp.dll" /> 
    </Component> 
    <Component Id="sqliteDLL" Guid="B043CF20-8DC2-4A10-AE4B-4721263A111E"> 
    <File Id="sqlite" Name="System.Data.SQLite.dll" KeyPath="yes" /> 
    </Component> 
</DirectoryRef> 
<DirectoryRef Id="ApplicationProgramsFolder"> 
    <Component Id="ApplicationShortcut" Guid="414E91FD-7410-492C-9D48-8125C6ECCF0B"> 
    <Shortcut Id="ApplicationStartMenuShortcut" 
       Name="Order Monkey" 
       Description="Order Monkey Orders and Quotes" 
       Target="[USERSPECIFIEDDIR]OrderMonkey.exe" 
       WorkingDirectory="USERSPECIFIEDDIR" /> 
    <Shortcut Id="ApplicationOfflineStartMenuShortcut" 
       Name="Order Monkey Offline" 
       Description="Order Monkey Orders and Quotes" 
       Target="[USERSPECIFIEDDIR]OrderMonkey.exe" 
       WorkingDirectory="USERSPECIFIEDDIR" 
       Arguments="-offline" /> 
    <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/> 
    <RegistryValue Root="HKCU" Key="Software\Microsoft\OrderMonkey" Name="installed" Type="integer" Value="1" KeyPath="yes"/> 
    </Component> 
</DirectoryRef> 

<Feature Id='Complete' Level='1' Title='Order Monkey Complete' Description='The complete package' ConfigurableDirectory='TARGETDIR' Display='expand'> 
    <ComponentRef Id='MainExe' /> 
    <ComponentRef Id='OMEmailerExe' /> 
    <ComponentRef Id='migradomDLL' /> 
    <ComponentRef Id='migrarenderDLL' /> 
    <ComponentRef Id='migrartfDLL' /> 
    <ComponentRef Id='mysqldataDLL' /> 
    <ComponentRef Id='pdfchartingDLL' /> 
    <ComponentRef Id='pdfsharpDLL' /> 
    <ComponentRef Id='sqliteDLL' /> 
    <ComponentRef Id='ApplicationShortcut' /> 
    <ComponentRef Id='AppData' /> 
</Feature> 

답변

6

이러한 요소를 사용하여 비주얼 스튜디오에서 직접 윅스를 사용하고 있습니다 :

<Package Compressed="yes" InstallScope="perMachine" /> 
<MediaTemplate EmbedCab="yes" /> 

Package/@Compressed="yes" 대신 느슨한 파일 캐비닛을 작성합니다. MediaTemplate/@EmbedCab="yes"은 기본 캐비닛을 .msi에 포함시킵니다.

+0

감사합니다. 하루를 구 했어요. – mike

관련 문제