Inno设置:如何替换XML文件中的字符串?

时间:2014-02-17 16:11:35

标签: xml inno-setup

以下(引用中)是XML文件的内容,它是我的包的一部分。 我想在安装过程中替换c:\path\myapp.exe的值(使用用户选择安装应用程序的真实路径)。 那可能吗?怎么样?

<?xml version="1.0" encoding="UTF-8"?>
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
   <listAttribute key="org.eclipse.debug.ui.favoriteGroups">
      <listEntry value="org.eclipse.ui.externaltools.launchGroup"/>
   </listAttribute>
   <stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${none}"/>
   <stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="c:\path\myapp.exe"/>
   <stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="${resource_loc}"/>
</launchConfiguration>

1 个答案:

答案 0 :(得分:8)

您最好的选择是使用XML DOM来选择和编辑所需的节点as TLama suggested

或者,您可以在要替换的位置安装包含已知字符串的模板文件。 然后可以将该文件作为字符串读取,修改并使用以下内容重新写回:

[Code]
procedure WriteAppPath;
var
    FileData: String;
begin
    LoadStringFromFile(ExpandConstant('{app}\app.xml'), FileData);
    StringChange(FileData, 'XXXXXMARKERXXXXX', ExpandConstant('{app}'));
    SaveStringToFile(ExpandConstant('{app}\app.xml'), FileData, False);
end;

另见this question关于对INI文件进行同样的事情。