使用InstallShield 2011安装时修改配置文件

3

在使用安装盘的时候,我需要修改一个配置文件,并且需要用户提供一些输入。我正在使用InstallShield 2011 Basic MSI项目。我猜想可以通过修改XML文件来实现这个目标,所以我创建了一个对话框,并在其中添加了编辑字段以获取用户输入,并将这些字段与属性关联起来。但是如何将这些属性与我的配置文件中的值关联起来还不清楚。请问应该怎么做?这是我的配置文件结构:

<configuration>
    <appSettings>
        <add key="Color" value=""></add>
        <add key="Shape" value=""></add>
    </appSettings>
<configuration>

用户需要设置颜色和形状的值。也许,使用其他类型的项目会更好吗?谢谢。
2个回答

4

我经常使用文本文件进行更改,并将配置文件设置如下:

<configuration>
    <appSettings>
        <add key="Color" value="">%color%</add>
        <add key="Shape" value="">%shape%</add>
    </appSettings>
<configuration>

接着将文本替换设置为搜索*.config,并用来自对话框的输入替换%color%和%shape%。

希望这可以帮到您。


1
我强烈反对任何人在XML文件中进行查找/替换操作。这种方法非常脆弱。如果示例文件更新为在不同节点(例如<clientSettings>)中使用%color%或%shape%,那么事情将变得更加复杂。 - thekbb
2
Installshield并不会让这个过程变得容易,这可能是一个可行的替代方案。 - StingyJack

3

InstallShield XML 更改使用 XPath 语句。需要一点时间来适应,可以尝试以下内容。

在 XML 文件更改中,选择 XML 文件并右键单击新文件。在常规表上,您可以选择要操作的目录和文件名以及安装的功能,导致更改发生。

右键单击 XML 文件,并选择添加预定义元素 | .NET 配置文件 | Web 配置文件 | 应用程序设置 | 添加。

您将看到 InstallShield 编写了一个查询:

/configuration/appSettings/add[@key="key" and @value="value"]

这告诉 MSI 获取对子项为 appSettings 的 add 节点的引用,该子项是配置节点的子项,在该子项中,关键属性等于 "key" 的字面值,而值属性等于 "value" 的字面值。实际上,您将想要调整此 XPath 语句,以基于 @Key="Color" 进行比较,并忽略 value 属性。一旦它引用了此节点,您就可以告诉它创建/设置 "value" 属性的值为您的属性内容。请记住,在 MSI 中,[] 符号返回指定属性的值。([SOMEPROP] 将返回 SOMEPROP 的值)。

以下是一些阅读材料:

http://kb.flexerasoftware.com/doc/Helpnet/installshield14helplib/XMLFileChangesView.htm

如果这些XML的东西对你来说太难了,最近版本的InstallShield也有一个文本文件更改功能,可以按照SteveLovell所提到的方式完成。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接