Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Installation Wix目录问题_Installation_Wix_Heat - Fatal编程技术网

Installation Wix目录问题

Installation Wix目录问题,installation,wix,heat,Installation,Wix,Heat,关于在Windows Installer XML中使用片段的目录,我有两个问题 我从heat.exe获得了这个片段文件: <?xml version="1.0" encoding="utf-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Fragment> <DirectoryRef Id="TARGETDIR"> &l

关于在Windows Installer XML中使用片段的目录,我有两个问题

我从heat.exe获得了这个片段文件:

    <?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="TARGETDIR">
            <Directory Id="dir08A07F5561FBEB6B9772467C730F6445" Name="Test" />
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="InstallationFiles">
            <Component Id="cmp071F7F8F6B6027C8D2841272FE526A2B" Directory="dir08A07F5561FBEB6B9772467C730F6445" Guid="{CCCB70AC-29F5-4DAA-B03E-1A2266649AB6}">
                <File Id="fil63087E96FFB31F9E39B642CE8914F48B" KeyPath="yes" Source="SourceDir\dmedv.jpg" />
            </Component>
            <Component Id="cmpAE6CBEDA75641CF25BA9996AEB74A0DE" Directory="dir08A07F5561FBEB6B9772467C730F6445" Guid="{F5DABCAB-95D1-4197-A49F-E5F052A8E7EF}">
                <File Id="filD27F2F6B26F5C14563865FE6C2AD5D50" KeyPath="yes" Source="SourceDir\Files.txt" />
            </Component>
            <Component Id="cmp25C5EADB5C0A9E779D20EC7B77BD42B0" Directory="dir08A07F5561FBEB6B9772467C730F6445" Guid="{E301B04A-6EA5-496B-A58A-8898110BE57C}">
                <File Id="fil7C91C48D9AA0F2FE0EB37A21F108037F" KeyPath="yes" Source="SourceDir\readme.txt" />
            </Component>
            <Component Id="cmpD387AB4B40EDF14BF271ADDA7B71D2B7" Directory="dir08A07F5561FBEB6B9772467C730F6445" Guid="{6AF61DF4-32D0-4E7C-95B8-1DB9E7409029}">
                <File Id="fil966691BA382AFC9343430FE162643432" KeyPath="yes" Source="SourceDir\readme1.txt" />
            </Component>
            <Component Id="cmpB86212407C1BEA12838C8C7B20495E9F" Directory="dir08A07F5561FBEB6B9772467C730F6445" Guid="{921E971E-E224-464C-9FBC-FBC5F78B3E5B}">
                <File Id="fil61CD8EF43EA29DF58454E9A19F8C1EF9" KeyPath="yes" Source="SourceDir\readme2.txt" />
            </Component>
            <Component Id="cmpE4143B48FF854AE84F6054D4636FDE81" Directory="dir0ADF7E89B935DD39670130B4DC1D670E" Guid="{6F248718-93DD-4850-A18E-BD7079F738D5}">
                <File Id="fil03847B355B6AADE5E4E04D143C92BC67" KeyPath="yes" Source="SourceDir\Test2\dmedv2.jpg" />
            </Component>
        </ComponentGroup>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dir08A07F5561FBEB6B9772467C730F6445" />
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dir0ADF7E89B935DD39670130B4DC1D670E" />
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dir08A07F5561FBEB6B9772467C730F6445">
            <Directory Id="dir0ADF7E89B935DD39670130B4DC1D670E" Name="Test2" />
        </DirectoryRef>
    </Fragment>
</Wix>

我有一个wix安装程序文件:

<?xml version='1.0' encoding='windows-1252'?>

<?define ProductVersion="1.0.0.0"?>
<?define ProductName="DMServices Installer"?>
<?define Manufacturer="DM EDV- und Bürosysteme GmbH"?>

<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'  xmlns:iis='http://schemas.microsoft.com/wix/IIsExtension'>
  <Product Name="$(var.ProductName)" Id='BB7FBBE4-0A25-4cc7-A39C-AC916B665220' UpgradeCode='8A5311DE-A125-418f-B0E1-5A30B9C667BD'
    Language='1033' Codepage='1252' Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)">

    <Package Id='*' Keywords='Installer'
      Description="DMService Installer Setup"
      Manufacturer='DM EDV- und Bürosysteme GmbH'
      InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />

    <Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" />
    <Property Id='DiskPrompt' Value="the man" />

    <PropertyRef Id="NETFRAMEWORK35"/>
    <Condition Message='This setup requires the .NET Framework 3.5.'>
      <![CDATA[Installed OR (NETFRAMEWORK35)]]>
    </Condition>

   <Directory Id='TARGETDIR' Name='SourceDir'>
      <Directory Id='ProgramFilesFolder'>
        <Directory Id='DM' Name='DM EDV'>
          <Directory Id='INSTALLDIR' Name='DMServices'>
          </Directory>
        </Directory>
      </Directory>
   </Directory>

<Feature Id='InstallationFiles' Title='InstallationFiles' Level='1'>
      <ComponentGroupRef Id='InstallationFiles' />
    </Feature>

  </Product>
</Wix>

到目前为止

现在,当我将这些文件生成到wixobj时,编译器会显示错误,因为找不到这些文件。这些文件位于名为“Test”的目录中。在这个文件中,它被命名为SourceDir

对于lil解决方案,我可以复制测试目录并将其称为SourceDir;-)。因此,我的设置将被创建

  • 没有第二个目录我怎么做?
    • 编辑:问题已解决
  • 现在我安装我的软件包。但无论我做什么,这些文件都将安装到C:\Test

    但我希望它安装在我的程序文件目录中

    在许多示例中,我都可以这样做,就像在文件中一样,但我必须了解guid。 但是我们使用wix从一个目录中获取所有文件,而无需动手

  • 那么如何将这些文件安装到ProgramFiles目录中呢

  • 仔细查看
    heat.exe的
    -dr
    开关。您可以将必要的目录引用放在那里。因此,像现在一样在主文件中定义目录结构,并向
    heat.exe
    提供正确的目录ID

    更新:

    好的,下面的内容对我很有用。主目录结构:

      <Directory Id="TARGETDIR" Name="SourceDir">
         <Directory Id="INSTALLLOCATION" Name="My folder">
            <Directory Id="WebsiteFolder" Name="Website">
            ...
            </Directory>
         </Directory>
      </Directory>
    
    
    ...
    
    该功能引用组件组:

    <Feature Id="ProductFeature" Title="!(loc.ProductFeature.Title)" Level="100">
         ...
         <ComponentGroupRef Id="WebsiteFolderComponentGroup"/>
         ...
      </Feature>
    
    
    ...
    ...
    
    heat.exe生成以下片段:

        <Fragment>
            <DirectoryRef Id="WebsiteFolder">
                <Component Id="cmp1" Guid="GUID-GOES-HERE">
                    <File Id="fil1" KeyPath="yes" Source="$(var.WebsiteFolderSource)\Default.aspx" />
                </Component>
                <Component Id="cmp2" Guid="GUID-GOES-HERE">
                    <File Id="fil2" KeyPath="yes" Source="$(var.WebsiteFolderSource)\default.css" />
                </Component>
                <Directory Id="dir1" Name="App_Browsers">
                    <Component Id="cmp3" Guid="GUID-GOES-HERE">
                        <File Id="fil3" KeyPath="yes" Source="$(var.WebsiteFolderSource)\App_Browsers\Form.browser" />
                    </Component>
                </Directory>
                <Directory Id="App_Config" Name="App_Config">
                    <Component Id="cmp4" Guid="GUID-GOES-HERE">
                        <File Id="fil4" KeyPath="yes" Source="$(var.WebsiteFolderSource)\App_Config\ConnectionStrings.config" />
                    </Component>
                </Directory>
                <Directory Id="bin" Name="bin">
                    <Component Id="cmp5" Guid="GUID-GOES-HERE">
                        <File Id="fil5" KeyPath="yes" Source="$(var.WebsiteFolderSource)\bin\MySystem.Web.UI.dll" />
                    </Component>
                    <Component Id="cmp6" Guid="GUID-GOES-HERE">
                        <File Id="fil6" KeyPath="yes" Source="$(var.WebsiteFolderSource)\bin\Another.dll" />
                    </Component>
                  ...
                </Directory>
            ...
            </Directory>
    
    ...
    
            <ComponentGroup Id="WebsiteFolderComponentGroup">
                <ComponentRef Id="cmp1" />
                <ComponentRef Id="cmp2" />
                <ComponentRef Id="cmp3" />
                <ComponentRef Id="cmp4" />
                ...
            </ComponentGroup>
    
    
    ...
    ...
    ...
    ...
    
    最后,生成必要输出的heat命令如下所示(Nant示例):

    
    

    这些代码片段包含了足够的信息,可以理解它是如何工作的。使用heat.exe开关查找所需的组合。祝你好运

    如果像我这样的人仍在寻求澄清:heat片段中的
    很重要,它是片段文件应安装位置的参考。如果您有多个片段,并且希望将其放置在不同的位置,那么DirectoryRef就是关键。

    现在,我已经使用目录选择构建了安装程序。但还是一样。这些文件将安装到C:\Test。我必须告诉wix安装文件:
    INSTALL FEATURE HERE
    研究著名教程的第一课:并下载现成的示例。它应该可以回答您关于目录结构的问题。当我知道所有组件的guid和名称时,我就可以将其写入目录树。但是我得到了一个包含所有文件的段,这些文件将在功能组中读取(在ComponentGroupRef Id上)。如何将此组安装到目录中?今天或明天我将尝试为您提供一个示例这是我在Intertube中找到的最好的WIX文档。非常感谢谢林。你能提供更多的细节吗?
      <exec program="heat.exe" verbose="true" basedir="${paths.source}">
         <arg line='dir "${paths.dist.website}"'/><!-- Notice the quotes inside the attributes -->
         <arg line='-srd'/>
         <arg line='-dr WebsiteFolder'/>
         <arg line='-cg WebsiteFolderComponentGroup'/>
         <arg line='-out "${paths.harvest}\website.wxs"'/>
         <arg line='-ke -sfrag -scom -sreg -gg'/>
         <arg line='-var var.WebsiteFolderSource'/>
      </exec>