将两个互斥的同名文件安装到同一目录

Install two mutually-exclusive files with the same name to the same directory

我的程序部署了一个配置选项,我选择将其作为一项功能公开。此选项可以是两个值之一。

每个配置更改一组设置文件。它们有不同的输入文件名(为了举例,我们称之为 option1-config20-lv80.xml),但应该作为 config20-lv80.xml 安装到配置目录。每个选项都有一个前缀,应该像那样去除,这也意味着一次只能选择其中一个选项进行安装。但是,即使在选择了另一个功能时阻止安装一个功能的情况下,我的输出也乱七八糟:

LGHT0204: ICE30: The target file 'config20-lv80.xml' is installed in 'path' by to different components... This breaks component reference counting.

我怎样才能让我的用户在这些配置选项之间进行选择,并在没有任何负面影响的情况下解决我的 ICE30 问题?

I saw an similar question answered,但我不是 100% 确定如何在 wix# 中实现它,或者是否有其他方法可以在不禁用 ICE30 验证或创建 2 个安装程序的情况下实现我的目标。

有点仓促,看看...

Milk & Honey Winnie:在这种情况下,我更喜欢使用两个不同的组件安装两个不同名称的文件,然后切换它们之间有一个在应用程序本身中显示的选项。在启动时或在首选项中。使部署更简单,它已经很复杂了(您参考的 "The Complexity of Deployment"). The linked answer 部分在技术上可以工作,更 hacky 的方法也可以。

备选方案:我在这里对安装设置文件的不同方式有很长的回答:Create folder and file on Current user profile, from Admin Profile 从消除整个文件和使用内部默认设置,到从网络下载设置文件或仅依赖从数据库检索云 Web 服务设置。不是 100% 匹配,但也许略读一下?


一个相关的问题是当您有一个普通用户无法写入的设置文件时。这是消除该条件的方法列表:System.UnauthorizedAccessException while running .exe under program files.