Java 如何在运行时使用NSIS脚本读取属性文件?

Java 如何在运行时使用NSIS脚本读取属性文件?,java,nsis,Java,Nsis,我的Java项目中有一个.property文件。该属性文件中的值超过20个。现在我想解析该属性文件,并在运行时(即运行安装文件时)更改特定的属性值。我使用了以下代码 Section ${ConfigWrite} "C:resource\conf.properties" SET WEBSERVICE.URL=http://localhost:8080 $R0 ;$R0=CHANGED SectionEnd 运行exe文件后,属性会像这样添加到属性文件中 SETSERVER.U

我的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
我不知道为什么集合词出现在这个变量之前

我的要求:

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

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


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

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

    doc声明语法为:

    ${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}中给出安装路径。