1

我正在使用 install4j 为需要在属性文件中搜索并替换为安装目录的 Windows 短文件名/路径的应用程序构建安装程序。我已经有一个“修改文本文件”操作,它执行以下操作:

Search Value:  INCHOME=C:\dev\inc\1.0
Replace Value: INCHOME=${installer:sys.installationDir}

在我的情况下,这通常是 C:\Program Files\InControl。

我需要能够更改 ${installer:sys.installationDir} 的值,因此将“C:\Program Files\InControl”更改为“C:\PROGRA~1\InControl”,尽管这当然可能会因Windows 对此有规定。

我已通读以下网址提供的解决方案:

http://dolf.trieschnigg.nl/eightpointthree/eightpointthree.html

这似乎是一种普遍接受/使用的溶液。install4j 是否有内置的东西来处理这个问题,还是我需要包含这样的东西作为自定义代码?

如果我必须将其作为自定义代码包含在内,如何包含本机 Windows 库?

我在 com.install4j.api.windows.WinFileSystem 或其他任何地方都找不到任何东西。

4

2 回答 2

1

它不在 API 中,但您可以使用

com.install4j.runtime.installer.platform.win32.FolderInfo.getShortPathName(String longPathName)
于 2012-04-15T14:31:25.453 回答
0

好的,开始工作了。上面的路径略有不同,我不得不使用 jad 反编译类来找到它,但是以下(添加了 FileInfo 类)有效:

import com.install4j.runtime.installer.platform.win32.*;

String incHome = (String)context.getVariable("sys.installationDir");
String incHomeShort = FolderInfo.getShortPathName(incHome);

context.setVariable("incHomeShort", incHomeShort);

谢谢!

于 2012-04-16T17:28:22.093 回答