3

WiX を使用して製品インストーラーを作成しています。何らかの理由で、インストーラー内に .exe と .dll を埋め込まなくなりました。だから私はこれを持っています:

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

そして、アプリケーションに必要なすべての .exe ファイルと dll ファイルを含む My-app-name という名前のフォルダーと一緒に .msi を作成します。そこからインストーラーを実行しても問題ありませんが、msi を別の場所 (サブディレクトリなし) に移動すると、ファイルが見つからないためにエラーが発生します。インストーラ内にすべてのバイナリを埋め込むように WiX に指示するにはどうすればよいですか??

それが役立つ場合は、ここに私の wxs からの他のスニペットをいくつか示します。他に情報が必要な場合はお知らせください。ああ、私はビジュアル スタジオ 2008 から直接 wix を使用しています。

<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>
4

1 に答える 1

6

次の要素を使用します。

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

Package/@Compressed="yes"ゆるいファイルの代わりにキャビネットを作成します。MediaTemplate/@EmbedCab="yes"デフォルトのキャビネットを .msi に埋め込みます。

于 2013-01-05T20:26:05.313 に答える