3

我正在 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 搜索中轻松将其与其他文件区分开来。我一直在玩 Directory Resolver - 运气不好,尤其是在 Mac 上,每次尝试更改其目录结构时都会产生损坏的启动器。

任何帮助将不胜感激!

4

2 回答 2

4

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

context.setInstallationDirectory(...);

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

install4j 不直接支持在运行时更改启动器名称。

于 2012-08-22T19:09:22.557 回答
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 );
}

那成功了。

于 2012-08-23T03:15:43.163 回答