0

我正在使用 izpack 安装程序来安装我在 Windows 中开发的应用程序。我的应用程序根文件夹中将有空间。配置 .properties 文件中有一个带有文件夹位置的属性。

PluginFolder=${plugin.dir}  

例如,我的示例 Windows 目录位置是“C:\My Application Folder\Plugins Folder”

安装后需要替换为实际的文件夹路径如下,因为java无法读取文件夹路径中只有“\”的文件中的属性。

PluginFolder=C:\\My Application Folder\\Plugins Folder

or 

PluginFolder=C:/My Application Folder/Plugins Folder

以上任何一项都适用于我的应用程序。

在 izpack 安装程序文件夹位置读取使用

<panel ...>
...
   <field type="dir" align="left" variable="plugin.dir">
      <spec txt="Plugin Directory :" size="25" set="${plugin.default.dir}" />
   </field>
....
</panel>

并且配置文件中的属性是使用设置的

<parsable targetfile="$INSTALL_PATH/config/myapp.properties" type="javaprop">
   <os family="windows" />
</parsable>

但是在 izpack 安装程序中使用 type="javaprop" 会在文件夹路径中附加带有空格的“\”。我不需要,因为我的应用程序无法读取它。

PluginFolder=C:\\My\ Application\ Folder\\Plugins\ Folder

如果文件夹路径中没有空格并将所有“\”替换为“\”,则使用 type="java" 可以正常工作。但是文件夹路径中有空间,这很可能在 Windows 中并且我的应用程序也需要它不工作。

实际上我不希望文件夹路径中的“SPACE”被“\SPACE”替换。

伙计们请帮助我在 izpack 安装程序中解决此问题。

4

1 回答 1

4

您可以通过使用带有过滤的动态变量来解决此问题:

<dynamicvariables>
  <variable name="plugin.dir.parsed" value="${plugin.dir}">
    <filters>
      <regex regexp="[/\\]+" replace="/" global="true" />
    </filters>
  </variable>
</dynamicvariables>
于 2016-02-15T15:48:48.207 回答