WiX 复制文件/目录路径在修补期间不可用

标签 wix patch file-copying

我有一个 WiX 安装程序(例如 10.0),可以复制一些文件。文件副本的一切工作正常。我正在尝试从该版本创建补丁。每当运行补丁 (10.1) 且之前的 10.0 安装必须复制其中一些文件时,我在运行修复时会收到以下区域:

"The specified path [Path] is unavailable."

我已经检查过,指定的路径可用。复制到的文件就在那里。此外,在 10.0 安装中复制文件的源数据目录也在那里。 还有其他目录可将其他文件复制到其中。我不确定他们是否也会有这个错误,而且我只是还没有看到它。

可能出了什么问题?

这是我的 .wxs 代码,在原始安装和补丁中都是相同的:

<DirectoryRef Id="SAVEDDBFOLDER">
  <Component Id="SavedDBVDirectory" Guid="xxx">
    <CreateFolder>
      <Permission User ="[WIX_ACCOUNT_ADMINISTRATORS]" GenericAll="yes"/>
      <Permission User ="[WIX_ACCOUNT_USERS]" GenericAll="yes"/>
    </CreateFolder>
  </Component>
</DirectoryRef>

<CustomAction Id="SetOldDBVWFiles"
              Property="OLDDBVWFILES"
              Value="[PATHTOOLDVER]Saved DB Files"/>
<DirectoryRef Id="SAVEDDBFOLDER">
  <Component Id="CopyOldDataBVFiles" Guid="yyy">
    <CopyFile Id="CopyOldDBVWFiles"
              Delete="yes"
              SourceProperty="OLDDBVWFILES" DestinationProperty="SAVEDDBFOLDER" SourceName="*"/>
    <Condition>
      <![CDATA[(NOT Installed) AND (NOT REMOVE) AND (PREVIOUSVERSION << "8." OR PREVIOUSVERSION << "7.")]]>
    </Condition>
  </Component>
</DirectoryRef>

        <!--This custom action runs in 10.0 install-->
<!--PREVIOUSHYVERSION is set for 10.0; it is not for 10.1-->
<CustomAction Id="SetOldDBVWFilesHy"
              Property="OLDHYDBVWFILES"
              Value="[PATHTOOLDAD]Saved DB Files"/>
<DirectoryRef Id="SAVEDDBFOLDER">
  <Component Id="CopyOldHyDatabusViewerFiles" Guid="zzz">
    <CopyFile Id="CopyOldHyDBVWFiles"
              Delete="yes"
              SourceProperty="OLDHYDBVWFILES" DestinationProperty="SAVEDDBFOLDER" SourceName="*"/>
    <Condition>
      <![CDATA[(NOT Installed) AND (NOT REMOVE) AND (PREVIOUSHYVERSION << "4.")]]>
    </Condition>
  </Component>
</DirectoryRef>

最佳答案

好吧,我已经弄清楚了。从日志文件(msiexec/L*V "[日志文件]")中,我发现路径变量之一 - “PATHTOOLDAD”,”不,这不是通往爸爸工具的路径——补丁中没有设置。这应该不重要,因为此属性仅在初始安装中使用,而根本不在补丁中使用,但必须将其设置为某些内容。我将选项“PATHTOOLDAD=[whatever]”添加到对 msiexec 的调用中以设置属性,瞧,它起作用了。

msiexec/i [MSP 补丁文件] PATHTOOLDAD=[已删除的旧程序的路径]

关于WiX 复制文件/目录路径在修补期间不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10904185/

相关文章:

wix - 如何检查环境变量是否存在?

Wix 功能标题中的属性

multithreading - CopyFileEx 可以从辅助线程调用吗?

npm - 使用 npm copyfile 将文件复制到另一个目录

windows - 由于不正确的 MSI 检索,补丁程序删除一直失败

wix - 如何执行带有依赖项的 WiX 自定义操作 C++ DLL 文件?

Sitecore 补丁 - 添加网站

python - 使用基于差异的补丁方法更新我的程序

iphone - 如何使用 IDA/pro 给 iPhone 应用打补丁?

java - FileUtils.copyFile() VS FileChannel.transferTo()