izpack, как заменить обратную косую черту "\" на косую черту "/" или "\\" в каталоге Windows с пробелом

Я использую установщик izpack для установки приложения, разработанного в Windows. В моей корневой папке приложения будет место. В файле конфигурации.properties есть свойство с расположением папки.

PluginFolder=${plugin.dir}  

Например, мой пример расположения каталога Windows - "C:\ Моя папка приложения \ Папка плагинов"

Который требуется заменить на фактический путь к папке после установки следующим образом, потому что 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>

Но использование type="javaprop" в установщике izpack добавляет "\" с пробелом в пути к папке. Это мне не требуется, так как мое приложение не может его прочитать.

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

Использование type = "java" работает нормально, если в пути к папке нет места и замените все "\" на "\". Но с пространством в пути к папке, что весьма вероятно в Windows и также требуется для моего приложения, оно не работает.

На самом деле я не хочу, чтобы "SPACE" в папке-пути был заменен на "\SPACE".

Ребята помогите пожалуйста решить эту проблему в установщике izpack.

1 ответ

Решение

Вы можете обойти это поведение, например, используя динамические переменные с фильтрацией:

<dynamicvariables>
  <variable name="plugin.dir.parsed" value="${plugin.dir}">
    <filters>
      <regex regexp="[/\\]+" replace="/" global="true" />
    </filters>
  </variable>
</dynamicvariables>
Другие вопросы по тегам