COPYFILE使用WIX安装MSI后

时间:2013-02-27 20:48:22

标签: xml installer wix

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

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

以下是需要复制的文件组件的Snippet(来自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>

2 个答案:

答案 0 :(得分: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安装程序的最简单方法是使用石蜡作为完整目录

答案 1 :(得分:0)

[INSTALLLOCATION]文件路径的模式保存需要在此处完成,以便在安装和卸载期间保存文件路径。否则我们会收到网络搜索错误。

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