【问题标题】:Why isn't my WiX installer creating directories and copying my file为什么我的 WiX 安装程序不创建目录并复制我的文件
【发布时间】:2015-12-15 21:11:11
【问题描述】:

我正在创建一个 Wix 安装程序。我想将我的程序和另一个文件安装到默认程序文件夹中,这工作正常。

我还想在文件夹“C:\Checkmark\Data”中放置一个文件,如果此文件夹不存在,我希望 WiX 创建它。该文件夹没有被创建,并且文件没有发生任何事情。

我的 WiX 文件:

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

    <Feature Id="ProductFeature" Title="Checkmark" Level="1">
        <ComponentGroupRef Id="ProductComponents" />
  <ComponentGroupRef Id="ProductData"/>
    </Feature>
<!--<UIRef Id="WixUI_Minimal"/>-->
</Product>

<Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLFOLDER" Name="Checkmark" />
        </Directory>
  <Directory Id="CommonAppDataFolder">
    <Directory Id="CHECKMARKFOLDER" Name="Checkmark">
      <Directory Id="DATAFOLDER" Name="Data" />
    </Directory>
  </Directory>
    </Directory>
</Fragment>

<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
  <Component Id="cmp_Checkmark.exe" Guid="B67B6527-C685-417F-A749-C8B908DF6AEF">
    <File Id="fil_Checkmark.exe" KeyPath="yes" Source="C:\WPF test Projects\Checkmark\Checkmark\bin\Release\Checkmark.exe"/>
  </Component>
  <!--Overwrites file no matter what-->
  <Component Id="cmp_TestDoc.txt" Guid="D2147C11-E2A4-4B78-8195-63788F88B012">
    <File Id="fil_TestDoc.txt" KeyPath="yes" Source="C:\WPF test Projects\Checkmark\Checkmark\TestDoc.txt"/>
  </Component>      
    </ComponentGroup>
<ComponentGroup Id="ProductData" Directory="DATAFOLDER">
  <!--Does not overwrite File if it exists-->
  <Component Id="cmp_KeepDoc.txt" NeverOverwrite="yes" Guid="02B29D8B-813C-4782-A6EC-EB614B218D84">
    <File Id="fil_KeepDoc.txt" KeyPath="yes" Source="C:\WPF test Projects\Checkmark\Checkmark\KeepDoc.txt"/>
  </Component>
</ComponentGroup>
</Fragment>

谁能告诉我为什么这个文件夹没有被创建并且我的文件没有进入它?

【问题讨论】:

    标签: wix


    【解决方案1】:

    如果要将数据放入C:\CheckMark\Data

    您可以使用以下目录结构:

    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLFOLDER" Name="Checkmark" />
        </Directory>        
        <Directory Id="CHECKMARKFOLDER" Name="Checkmark">
            <Directory Id="DATAFOLDER" Name="Data" />
        </Directory>        
    </Directory>
    

    但 TARGETDIR 解析为具有最大可用空间的驱动器。 所以如果你真的想部署在 C 盘, 您应该将 TARGETDIR 的值显式更新为“C:\”。

    CommonAppDataFolder 也会根据主机操作系统解析到另一个目录。 在 Windows Vista/7 上,它解析为 C:\ProgramData。

    您应该查看此链接以获取更多信息。

    https://msdn.microsoft.com/en-us/library/aa367992(v=vs.85).aspx

    【讨论】:

    • 谢谢,您的建议奏效了。我查看了链接,并认为我了解关键字文件夹关联的工作原理。到目前为止,我发现 Wix 的文档有点缺乏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    相关资源
    最近更新 更多