在install4j自定义安装目录(customizing installation directo

2019-09-21 11:29发布

我建立在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其接缝产生对每一个试图改变它的目录结构破碎的发射器。

任何帮助将不胜感激!

Answer 1:

你可以通过调用更改安装目录

context.setInstallationDirectory(...);

在“运行脚本”操作或install4j任何代码段。

在运行时更改发射名字不直接install4j支持。



Answer 2:

最后我做这样的事情:

在位置窗口的激活:

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 );
}

该诀窍。



文章来源: customizing installation directory in install4j