WIX 安装程序 - 将文件从安装位置复制到另一个位置

标签 wix installation windows-installer

我试图在安装过程中将一些文件从安装位置复制到其他文件夹。当我将 SourceDirectory/SourceProperty 设置为硬编码位置时,设置按预期正常工作。但是,当我将 SourceDirectory 替换为“INSTALLFOLDER”时,安装过程中不会复制文件。

这是完整的源代码,

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*" Name="FolderCopySetupProject" Language="1033" 
           Version="1.0.0.0" Manufacturer="Microsoft" 
           UpgradeCode="PUT-GUID-HERE">
    <Package InstallerVersion="200" Compressed="yes" 
             InstallScope="perMachine" />
    <MajorUpgrade DowngradeErrorMessage="Newer version installed." />
    <MediaTemplate EmbedCab="yes" />
    <Feature Id="ProductFeature" Title="FolderCopySetupProject" Level="1">
      <ComponentGroupRef Id="ProductComponents" />
    </Feature>
  </Product>
  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="PE" />
      </Directory>
    </Directory>
  </Fragment>
  <Fragment>
    <Property Id="DestFilesFolder" Value="C:\Temp\" />
    <Component Id="cmpCC76E631D128DE73CBFBA4A3C6F364AC" Guid="*" 
               Directory="INSTALLFOLDER" KeyPath="yes">
      <File Id="filCDC69907319511E61137A95EF50FAB30"  Source="a.txt" />
      <File Id="filCDC69907319511E61137A95EF50FAB31" Source="b.txt" />
    </Component>

    <Component Id="CMP_LOG4TXT" Guid="*"  
               Directory="INSTALLFOLDER" KeyPath="yes">
      <CopyFile Id="Copy_LOG4TXT" SourceDirectory="INSTALLFOLDER" 
                SourceName="*" 
                DestinationProperty="DestFilesFolder"/>
    </Component>
    <ComponentGroup Id="ProductComponents">
      <ComponentRef Id="cmpCC76E631D128DE73CBFBA4A3C6F364AC" />
      <ComponentRef Id="CMP_LOG4TXT" />
    </ComponentGroup>
  </Fragment>
</Wix>

这是日志文件信息,

执行操作: ComponentRegister(ComponentId={341BD660-7249-42DD-9744-DBEF0776AD52},KeyPath=C:\Program 文件 (x86)\PE、状态=3、磁盘=1、SharedDllRefCount=0、BinaryType=0) MSI (s) (A0:64) [11:30:49:374]:执行操作: ActionStart(名称=创建文件夹,描述=创建 文件夹,模板=文件夹:[1])MSI(A0:64)[11:30:49:375]: 执行操作:FolderCreate(Folder=C:\Program Files (x86)\PE\,Foreign=0,,) MSI (A0:64) [11:30:49:379]:执行操作: FolderCreate(文件夹=C:\Program Files (x86)\PE\,Foreign=0,,) MSI (A0:64) [11:30:49:380]:执行操作: ActionStart(名称=InstallFiles,描述=复制新文件 文件,模板=文件:[1],目录:[9],大小:[6])MSI(s) (A0:64) [11:30:49:381]:执行操作: ProgressTotal(总计=2,类型=0,ByteEquivalent=1)MSI(A0:64) [11:30:49:381]:执行操作:SetTargetFolder(Folder=C:\Program Files (x86)\PE\) MSI (A0:64) [11:30:49:381]:执行操作: SetSourceFolder(Folder=1\PE\) MSI (A0:64) [11:30:49:381]: 执行操作:ChangeMedia(,MediaPrompt=请插入磁盘: ,MediaCabinet=cab1.cab,BytesPerTick=65536,CopierType=2,ModuleFileName=C:\Windows\Installer\37a12097.msi,,,,,IsFirstPhysicalMedia=1) MSI (s) (A0:64) [11:30:49:381]:执行操作: FileCopy(SourceName=a.txt,SourceCabKey=filCDC69907319511E61137A95EF50FAB30,DestName=a.txt,属性=512,FileSize=1,PerTick=65536,,VerifyMedia=1,,,,,CheckCRC=0,,,InstallMode=58982400,HashOptions =0,HashPart1=-1183465204,HashPart2=-1464405568,HashPart3=-493239503,HashPart4=1629910889,,) MSI (s) (A0:64) [11:30:49:382]:文件:C:\Program Files (x86)\PE\a.txt;待安装;不会打补丁;没有现有文件 MSI (s) (A0:64) [11:30:49:382]:文件来源 'filCDC69907319511E61137A95EF50FAB30' 已压缩

看起来这些文件在“INSTALLFOLDER”中无法复制,我不确定如何对组件进行排序以按顺序执行。 (InstallExecuteSequence On =“AfterInstall”之类的东西)

任何帮助将不胜感激

谢谢, 拉杰什

最佳答案

也许你可以尝试CopyFile element 。更好的是:使用应用程序的启动序列在首次启动时进行任何文件复制,以避免此操作与您的设置纠缠在一起。

Copy file from setup location to another location in wix on install

关于WIX 安装程序 - 将文件从安装位置复制到另一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25480581/

相关文章:

exception - JDK 1.8 上安装问题 : pentaho 5. 1 ce

windows-7 - WiX MSI 完成后,如何以管理员身份启动应用程序?

wix 将选项传递给 MSI 进行修复

linux - 如何获得适用于 Linux FC-14 的 g++

wix - 为什么我的服务在卸载时没有被删除? (WIX)

installation - 修复安装和服务包

wix - 使用WiX创建的msi文件更新后,固定的任务栏图标将变为默认图标

wix - window 微星 : error 1316: the specified account already exists

具有完整文件路径的 WiX 安装程序文件搜索

c# - 如何从Windows应用程序生成msi