【问题标题】:Does install4j have a built-in Action/API for dealing with Windows short (8.3) file-names?install4j 是否有用于处理 Windows 短 (8.3) 文件名的内置操作/API?
【发布时间】:2012-04-12 15:55:42
【问题描述】:

我正在使用 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 或其他任何地方都找不到任何东西。

【问题讨论】:

    标签: install4j


    【解决方案1】:

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

    com.install4j.runtime.installer.platform.win32.FolderInfo.getShortPathName(String longPathName)
    

    【讨论】:

    • 一个问题。如何在“运行脚本”操作的上下文中使用它?我尝试导入该路径并使用 getShortPathName 方法,但运行脚本操作未能通过编译。
    • @Frank 缺少“FolderInfo”类,我已经编辑了答案。
    • 哈,谢谢。我在等待但使用 jad 时发现了它。工作得很好。再次感谢。
    【解决方案2】:

    好的,开始工作了。上面的路径略有不同,我不得不使用 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);
    

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 2020-08-03
      • 2012-04-30
      • 1970-01-01
      • 2011-02-08
      相关资源
      最近更新 更多