2

我刚刚开始使用 WiX 作为我现有应用程序的安装框架。该应用程序有一个 App.Config 文件,用于控制各种客户特定的设置。这些设置中的大多数都是在内部修改的,并且不是用户可控制的。

这种配置文件的一个例子是:

[...snip]
<applicationSettings>
    <setting name="DatabaseConnectionString" serializeAs="String">
        <value>Data Source=localhost;Initial Catalog=CustomersDatabase;Persist Security Info=True;Integrated Security=True</value>
    </setting>
</applicationSettings>
[snip...]

当应用程序的较新版本交付时,它将有一个库存配置文件,其中包括任何新的应用程序设置:

[...snip]
<applicationSettings>
    <setting name="DatabaseConnectionString" serializeAs="String">
        <value>Data Source=localhost;Initial Catalog=NonProductionDatabase;Persist Security Info=True;Integrated Security=True</value>
    </setting>
    <setting name="NewConfigItem" serializeAs="String">
        <value>ConfigDetails</value>
    </setting>
</applicationSettings>
[snip...]

我想将我的 WiX 安装程序设置为在升级期间创建一个合并的 App.Config,这样现有的设置不会受到影响,但新的配置项会以其默认值插入:

[...snip]
<applicationSettings>
    <setting name="DatabaseConnectionString" serializeAs="String">
        <value>Data Source=localhost;Initial Catalog=CustomersDatabase;Persist Security Info=True;Integrated Security=True</value>
    </setting>
    <setting name="NewConfigItem" serializeAs="String">
        <value>ConfigDetails</value>
    </setting>
</applicationSettings>
[snip...]

但是,我不希望安装程序必须事先知道配置选项是什么;我只是希望它扫描现有文件,如果发现缺少任何选项,则从安装程序中添加新选项。

这可能吗?

4

1 回答 1

1

是的,您需要编写自定义操作来读取现有的 xml 文件。然后,我建议根据读取的数据将临时记录添加到 XmlConfig 表中,如本问题中所述。

于 2013-04-13T04:23:06.413 回答