【问题标题】:How can I read property file at run time using NSIS script?如何使用 NSIS 脚本在运行时读取属性文件?
【发布时间】:2012-09-19 06:19:23
【问题描述】:

我的 Java 项目中有一个 .property 文件。在该属性文件中有超过 20 个值。现在我想解析该属性文件并在运行时(即运行安装文件时)更改特定的属性值。我使用了以下代码

Section
    ${ConfigWrite} "C:resource\conf.properties" SET WEBSERVICE.URL=http://localhost:8080 $R0
    ;$R0=CHANGED
SectionEnd

运行exe文件后,属性文件中添加的属性是这样的

  SETSERVER.URL=http://localhost:8080

我不知道为什么 SET 字在这个变量之前?

我的要求:

  1. 我需要在运行时为 SERVER.URL 属性赋值(在安装 exe 文件时)?

  2. 我需要替换 SERVER.URL 属性的值。但是使用上面的方法在该文件中添加了一个新属性。

    李>

我在 Windows 平台的 Eclipse 中使用了 NSIS 插件

【问题讨论】:

    标签: java nsis


    【解决方案1】:

    调用宏时缺少一些引号,也不需要指定SET(在帮助示例中,SET 实际上是 DOS 批处理文件中命令的一部分),我猜最好在磁盘驱动器后的路径中添加反斜杠。

    文档指出语法是:

    ${ConfigWrite} "[File]" "[Entry]" "[Value]" $var
    

    因此你的电话必须是:

    ${ConfigWrite} "C:\resource\conf.properties" "WEBSERVICE.URL" "=http://localhost:8080" $0
    

    注意参数名称WEBSERVICE.URL 和值=http://localhost:8080 之间的拆分方式(注意开头的等号)。

    您也可以使目录动态化:

    ${ConfigWrite} "$INSTDIR\resource\conf.properties" "WEBSERVICE.URL" "=http://localhost:8080" $0
    

    【讨论】:

    • 谢谢。我认为它工作正常。但安装后 WEBSERVICE.URL 属性值尚未替换。仍然是旧值。我不知道为什么?
    • @ILLA:你在ConfigWrite 之后尝试过MessageBox MB_OK "result=$0" 吗?它是否表明设置已更改?
    • @ILLA:对不起,我不明白你的意思。您询问更改文件中的值。您提到的“源路径”是什么?您还问是否需要动态定义值,或者您是否可以这样做?
    • @seki.我已经给出了源路径。所以它只改变了源路径。我已经硬编码了 WEBSERVICE.URL 的值。我需要动态地给出这个值吗?是否可以?我也不知道安装路径那么我如何给路径名。仍然它替换了源文件属性。
    • 是的。我需要动态定义值。我的源路径是我原来的 java 项目。所以我需要两个问题。1.动态​​定义值 2.我如何在 {$configWrite 中给出安装路径}.
    猜你喜欢
    • 2012-01-31
    • 1970-01-01
    • 2020-11-19
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    相关资源
    最近更新 更多