2012-02-20 68 views
1

当使用WIX进行msi设置时,我遇到了与更改/修复时执行CopyFile有关的问题。如何使用WIX CopyFile元素将更改/修复中的文件复制到系统文件夹,而无需将其安装到目标上?

我有一个功能,它具有将文件从源文件夹复制/移动到用户系统内已存在的文件夹的组件。这不是我的应用程序的文件夹。我只是移动这个文件,而不是将其安装到目标。如果我使用完整的安装程序进行安装,此功能正常工作。但是在初始安装时,我选择不安装此功能,然后在“更改”期间尝试安装它,除了CopyFile组件外,功能内的所有其他自定义操作/组件都将执行/安装。这对我的设置很重要,如果它没有被复制,我的设置将失败。

想知道是否有人找到类似问题的解决方案或曾遇到过类似的问题?

+1

您可以将文件安装到该位置而不是从其他位置复制文件吗? – 2012-02-21 06:32:30

+0

是的,我已经给它一个尝试,这是工作。在我或其他人找到解决方案之前,我会使用这种方法,但理想情况下我希望防止重复以减少安装的大小。 – sttaq 2012-02-21 10:02:48

+0

所以你需要这两个地方的文件,是吗? WiX应该处理这种情况并且只保留CAB中的一个版本的文件。 – 2012-02-21 12:57:48

回答

0

包含CopyFile操作的组件配置不正确。它应该有一个实际的文件或注册表项作为关键路径。

虽然Windows Installer使用组件来管理资源,但组件的关键路径是决定组件是否安装的主要因素。

因此,一个没有资源作为关键路径的组件永远不会被安装,它所包含的CopyFile操作将永远不会被执行。

+0

我已将该文件放置在此组件中,并以此方式工作。但问题是它复制了这个我最初想避免的文件。我也将KeyPath属性设置为true。我将尝试使用CopyFile放置注册表项并查看是否有效。将尽快报告。 – sttaq 2012-04-02 13:59:27

+0

我试过下面没有运气 \t \t \t <的RegistryKey根= “HKLM” 密钥= “软件” ACTION = “创建”> <的RegistryKey密钥= “的ProductKey” ACTION = “createAndRemoveOnUninstall”> sttaq 2012-04-03 08:59:20

相关问题