【问题标题】:WiX CopyFile/Directory Path Unavailable During PatchWiX CopyFile/目录路径在补丁期间不可用
【发布时间】:2012-06-05 20:08:41
【问题描述】:

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

“指定的路径[Path]不可用。”

我已经检查过了,指定的路径是可用的。复制到的文件在那里。此外,在 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>

【问题讨论】:

    标签: wix patch file-copying


    【解决方案1】:

    好的,我想通了。从日志文件(msiexec /L*V "[log file]")中,我发现其中一个路径变量 -- "PATHTOOLDAD”,不,这不是通往爸爸工具的路径——补丁中没有设置。应该没关系,因为此属性仅在初始安装中使用,而在补丁中根本不使用,但必须将其设置为某个值。我在调用 msiexec 时添加了选项“PATHTOOLDAD=[whatever]”来设置属性,瞧,它起作用了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多