3

私は、マーケティング代理店のクライアントごとに実行される install4j でセットアップを構築しています。インストーラーは 1 つですが、ユーザーはインストール時に別の 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 に答える