2012-04-12 3 views
1

Ich verwende install4j, um ein Installationsprogramm für eine Anwendung zu erstellen, die eine Suche und Ersetzen in einer Eigenschaftendatei mit dem Windows-Kurzdateinamen/Pfad für das Installationsverzeichnis erfordert. Ich habe bereits eine 'Ändern von Textdateien' Aktion, die den folgenden:Verfügt install4j über eine integrierte Action/API für den Umgang mit Windows-Kurznamen (8.3)?

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

In meinem Fall wird C im Allgemeinen: \ Program Files \ InControl.

Ich muss in der Lage sein, den Wert von $ {installer: sys.installationsDir} und folglich "C: \ Programme \ InControl" in etwas wie "C: \ PROGRA ~ 1 \ InControl" zu ändern Dies könnte aufgrund der Windows-Regeln variieren.

ich durch die Lösung gelesen haben zur Verfügung gestellt unter:

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

, die eine allgemein akzeptierte/verwendet solutoin zu sein scheint. Hat install4j etwas eingebaut, um damit umzugehen, oder muss ich etwas wie benutzerdefinierten Code hinzufügen?

Wenn ich es als benutzerdefinierten Code enthalten muss, wie schließe ich die nativen Windows-Bibliotheken ein?

Ich konnte nichts in com.install4j.api.windows.WinFileSystem oder anderswo finden.

Antwort

1

Es ist nicht in der API, aber Sie können

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

Perfekt. Froh, ich fragte :) – Frank

+0

Eine Frage. Wie verwende ich das im Zusammenhang mit einer Aktion "Skript ausführen"? Ich habe versucht, diesen Pfad zu importieren und die Methode "getShortPathName" zu verwenden, aber die Aktion "Skript ausführen" schlägt die Kompilierung fehl. – Frank

+0

@Frank Die Klasse "FolderInfo" fehlte, ich habe meine Antwort bearbeitet. –

0

OK verwenden, habe es funktioniert. Eine geringfügige Veränderung auf dem Weg über hatte ich jad zu verwenden, um die Klassen zu dekompilieren, es zu finden, aber die folgende (mit dem Zusatz der Fileinfo-Klasse) gearbeitet:

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

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

context.setVariable("incHomeShort", incHomeShort); 

Dank!

Verwandte Themen