【问题标题】:Wix installer CopyFile move file not workingWix 安装程序 CopyFile 移动文件不起作用
【发布时间】:2020-11-17 19:16:31
【问题描述】:

我想将文件从一个目录移动到另一个目录,但它什么也不做。

这是我Product.wxs的部分内容:

<Feature Id="ProductFeature" Title="$(var.ProductName)" Level="1">
  <ComponentRef Id="testCopy"/>
</Feature>

<DirectoryRef Id="dirConfigs">
  <Component Id="web.config" Guid="8736259D-4FEE-4826-B109-76DD3B0EDAE7">
    <CopyFile Id="CopyWebConfig" 
              SourceProperty="dirProject"
              SourceName="Web.config"
              DestinationProperty="dirConfigs"
              DestinationName="Web.config"
              />
  </Component>
</DirectoryRef>

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="$(var.PlatformProgramFilesFolder)">
    <Directory Id="dirParent" Name="$(var.CustomerName)">
      <Directory Id="dirProject" Name="$(var.ProductName)">
        <Directory Id="dirConfigs" Name="$(var.ConfigFolderName)">
        </Directory>
      </Directory>
    </Directory>
  </Directory>
</Directory>

编辑 我也尝试使用 Source/DestinationDirectory 而不是 Source/DestinationProperty 有任何想法吗? 提前致谢!

【问题讨论】:

  • 在应用程序启动时进行文件复制通常比作为设置的一部分更容易 - 对于网络应用程序并不总是可行。应用程序启动代码更容易根据需要实现、调试和更改。这是一个选择吗? I have this old answer on CopyFile。看起来您正在将文件复制到它已经存在的文件夹中。尝试将 DestinationProperty="dirConfigs" 更改为 DestinationProperty ='DesktopFolder' 作为测试?
  • Christopher Painter 建议的另一种方法:"an override file" for web.config.
  • @SteinÅsmul 感谢您的评论!复制到 DesktopFolder 也不起作用,CopyFile 标签需要成为 File 标签的一部分,不幸的是 web.config 的“覆盖文件”不适用于我们:/
  • 我不确定你的测试过程中发生了什么,但你可以尝试在 github.com 上找到更好的样本。 Here is a "stored search"。在撰写本文时,大约有 500 多次点击。

标签: asp.net wix windows-installer


【解决方案1】:

我将依赖延迟的 CustomAction 调用命令行“复制”命令,而不是使用 CopyFile 并执行它,就像在 this SO question 中一样。

如果您要将文件写入受保护的文件夹或需要管理权限的文件夹(在 Windows Vista+ 上,%USER% 文件夹之外的任何内容)中,您将需要管理员权限。

【讨论】:

    猜你喜欢
    • 2014-06-14
    • 2022-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    相关资源
    最近更新 更多