为什么我的 WiX 安装程序不创建目录并复制我的文件
Why isn't my WiX installer creating directories and copying my file
我正在创建 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>
谁能告诉我为什么这个文件夹没有被创建,我的文件也没有进入其中?
如果你想把数据放在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 也根据 host os 解析到另一个目录。
在 Windows Vista/7 上它解析为 C:\ProgramData.
您应该查看此 link 了解更多信息。
https://msdn.microsoft.com/en-us/library/aa367992(v=vs.85).aspx
我正在创建 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>
谁能告诉我为什么这个文件夹没有被创建,我的文件也没有进入其中?
如果你想把数据放在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 也根据 host os 解析到另一个目录。 在 Windows Vista/7 上它解析为 C:\ProgramData.
您应该查看此 link 了解更多信息。
https://msdn.microsoft.com/en-us/library/aa367992(v=vs.85).aspx