【问题标题】:Passing arguments to java vm from NSIS script从 NSIS 脚本向 java vm 传递参数
【发布时间】:2010-04-01 19:05:12
【问题描述】:

我正在使用 Eclipse 开发我的第一个 java 应用程序。我最近需要通过将 -Xmx256M 传递给 JVM 来调整分配的内存量。该应用程序当前打包为可运行的 jar,并使用 NSIS 进行安装。

我在将参数传递给 jar 文件后遇到问题。这样做的常见做法是什么?这是我目前在我的 nsi 文件中所做的:

CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" "$SYSDIR\javaw.exe" "-Xmx256M -jar $INSTDIR\Foo.jar"

这导致以下内容被创建为 windows 上的快捷方式目标:

C:\WINDOWS\system32\javaw.exe -Xmx256M -jar  C:\Program Files\Foo\Foo.jar 

不幸的是,由于 C:\Program Files 中的空间,这不起作用,如果我将手动创建的链接更改为包含引号,一切都很好:

C:\WINDOWS\system32\javaw.exe -Xmx256M -jar "C:\Program Files\Foo\Foo.jar"

更新:交换了 -jar 和 -Xmx256M 的顺序。但是,问题仍然相同。 jar 文件路径中的空格会导致问题。我想我要么需要找到一种在命令中添加引号的方法,如我手动更改目标时所示,要么完全改变我的方法!

【问题讨论】:

    标签: java installation nsis


    【解决方案1】:

    NSIS 字符串可以用单引号、双引号或反向单引号引起来。你也可以用 $\ ($\" etc) 转义

    CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" '"$SYSDIR\javaw.exe"' '-Xmx256M -jar "$INSTDIR\Foo.jar"'
    

    【讨论】:

      【解决方案2】:

      您是否尝试过保留引号但转义路径分隔符?

      C:\WINDOWS\system32\javaw.exe -Xmx256M -jar "C:\\Program Files\\Foo\\Foo.jar"
      

      【讨论】:

      • NSIS 不使用 \ 转义,它使用 $\ (并且不需要在路径中转义 \)
      【解决方案3】:

      即使没有空格,您也应该在“C:\WINDOWS\system32\javaw.exe”周围加上引号。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-03
        • 2017-01-22
        • 2016-03-20
        • 1970-01-01
        • 2015-09-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多