1

请参阅以下声明;暂时我在 MSI 的安装项目中有硬编码的源和目标文件夹(这个文件夹是在安装过程中形成的)。注意:下面的文件路径是 MSI 软件包安装目标所在的路径,而不是源位置。如何通过隐藏 [INSTALLLOCATION]\App_Config\ 等硬编码值来设置目标或源属性值的问题

截至目前,我正在通过命令行传递 INSTALLLOCATION (E:\Websites\SCBUDirect\Website\SCBUDirect.B2CWeb) 并希望将目标文件夹值设置为 [INSTALLLOCATION]\App_Config\ 但不确定如何通过属性设置来实现或我尝试但未能使其工作的自定义操作。

下面是需要复制的文件组件的片段(来自 heat.exe)。

<Component Id="cmp209B0DBB82F9FF15193D29F0BD337B7F" Directory="dirB0A921E55A598C65B18B4E47885629C3" Guid="{3B140259-FCC7-4D2E-8629-CBB879BBA46C}">
  <File Id="filBC5CC5B8DCC504F6DC75A7B2673E7D0D" KeyPath="yes" Source="C:\Workspaces\Chatra\Website\SCBUDirect.B2CWeb\App_Config\basic.log4net.dev" />
</Component>

这是我在 product.wxs 中的部分代码

<Fragment>
    <Property Id="SourceFilesFolder" Value="E:\Websites\SCBUDirect\Website\SCBUDirect.B2CWeb\App_Config\basic.log4net.dev" />

    <Property Id="DestFilesFolder" Value="E:\Websites\SCBUDirect\Website\SCBUDirect.B2CWeb\App_Config\" />


  <ComponentGroup Id="CopyFiles">
         <ComponentRef Id="CMP_LOG4TXT" />
    </ComponentGroup>

      <Component Id="CMP_LOG4TXT" Guid="341BD660-7249-42DD-9744-DBEF0776AD52"  Directory="INSTALLLOCATION" KeyPath="yes">
        <CopyFile Id="Copy_LOG4TXT" 
              SourceProperty="SourceFilesFolder" 
              DestinationProperty="DestFilesFolder" 
              DestinationName="basic.log4net" />
      </Component>

</Fragment>
4

2 回答 2

0

您可以像这样使用相对路径:

<Component Id="comp_Include_0" DiskId="1" KeyPath="yes" Guid="D026AE84-0F34-4715-810D-4EB6656DFECD">
    <File Id="file_Include_0" Source="..\Include\3rdParty\ac_types2.6\ac_complex.h" />
</Component>

“..\”
表示例如 bin\release 文件夹,它的声明如下:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFiles64Folder">
      <Directory Id="INSTALLFOLDER" Name="ATE" >
      </Directory>
    </Directory>
</Directory>

你需要申报

<DirectoryRef Id="INSTALLFOLDER">

我发现创建 wix 安装程序的最简单方法是将石蜡用于完整目录

于 2013-02-28T23:14:34.383 回答
0

[INSTALLLOCATION] 文件路径的Pattern Saving 需要在这里完成,以便在安装和卸载时保存文件路径。否则我们会得到网络搜索错误。

<product>

    <Property Id="INSTALLLOCATION">
          <RegistrySearch Id="REMEMBERPROPERTY" Root="HKCU" Key="Websites\SCBUDirect" Name="Remembered" Type="raw"/> 
    </Property>

        <CustomAction Id="SAVEINSTALLDIR" Property="CMDREMEMBERPROPERTY" Value="[INSTALLLOCATION]"/>
        <CustomAction Id="SETINSTALLDIR" Property="INSTALLLOCATION" Value="[CMDREMEMBERPROPERTY]" />

        <InstallExecuteSequence>
          <Custom Action="SAVEINSTALLDIR" Before="AppSearch"></Custom>
         <Custom Action="SETINSTALLDIR" After="AppSearch">CMDREMEMBERPROPERTY</Custom>
        </InstallExecuteSequence>

        <SetProperty Id="DestFilesFolder" Value="[INSTALLLOCATION]\Website\App_Config" After="CostInitialize" />

</product>

<fragment>

  <ComponentGroup Id="CopyFiles">
         <ComponentRef Id="CMP_LOG4TXT" />
    </ComponentGroup>

      <Component Id="CMP_LOG4TXT" Guid="341BD660-7249-42DD-9744-DBEF0776AD52"  Directory="dir572C565E70B3AEE6F0C29D3EE9056E9B" KeyPath="yes">
        <CopyFile Id="Copy_LOG4TXT"         Source="E:\Websites\SCBUDirect\Website\SCBUDirect.B2CWeb\App_Config\basic.log4net.dev" DestinationProperty="DestFilesFolder" DestinationName="basic.log4net" />
      </Component>

</fragment>
于 2013-03-07T21:43:19.923 回答