我正在install4j中构建一个设置,它将为营销机构的每个客户运行。有一个安装程序,但用户可以多次运行它,在安装时指定不同的clientId值。最后,我想得到一个像这样的目录结构:
在Mac上:
/Applications/MYPRODUCTNAME-clientID1/
/Applications/MYPRODUCTNAME-clientID2/
/Applications/MYPRODUCTNAME-clientID3/
Windows上的:
/Program Files/MYPRODUCTNAME-clientID1/
/Program Files/MYPRODUCTNAME-clientID2/
/Program Files/MYPRODUCTNAME-clientID3/
在安装时输入ID,在独立安装程序运行中。这些ID事先不知道 - 我无法构建与ID相同数量的安装程序。 理想情况下,在Mac上,我还希望更改启动器文件的名称,以便可以轻松地从Spotlight搜索中的其他文件中识别它。 我一直在使用目录解析器 - 没有运气,尤其是在Mac上,每次尝试更改其目录结构时都会产生破碎的启动器。
任何帮助将不胜感激!
答案 0 :(得分:4)
您可以通过调用
来更改安装目录context.setInstallationDirectory(...);
在"运行脚本"动作或install4j中的任何代码段。
install4j不直接支持在运行时更改启动器名称。
答案 1 :(得分:0)
我最终做了这样的事情:
激活位置窗口时:
systemInstallPath = context.getVariable( "sys.programFilesDir" ); // if Windows
if( systemInstallPath == null || systemInstallPath.isEmpty() ) // assume Mac
systemInstallPath = "/Applications";
context.setInstallationDirectory( new File( systemInstallPath ) );
然后激活安装窗口:
final Boolean confirmedUpdate = context.getBooleanVariable("sys.confirmedUpdateInstallation");
if( confirmedUpdate == null || !confirmedUpdate ) {
final File originalInstallDir = context.getInstallationDirectory();
final String clientId = ( String )context.getVariable( "clientId" );
final File clientInstallDir = new File( originalInstallDir, "MYPRODUCTNAME-" + clientId );
context.setInstallationDirectory( clientInstallDir );
}
这就是诀窍。