我建立在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其接缝产生对每一个试图改变它的目录结构破碎的发射器。
任何帮助将不胜感激!
你可以通过调用更改安装目录
context.setInstallationDirectory(...);
在“运行脚本”操作或install4j任何代码段。
在运行时更改发射名字不直接install4j支持。
最后我做这样的事情:
在位置窗口的激活:
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 );
}
该诀窍。