2017-12-22 3 views
1

現在、新しくリリースされる製品ごとに、ランダムに生成された異なるアプリケーションID &インストールディレクトリを使用しています。たとえば、次のようにInstall4j - 別のアプリケーションIDを使用して古いアプリケーションをアンインストールする

  • バージョン10 "ProductName10" のアプリケーションID 12345 &ディレクトリを持っているでしょう
  • バージョン11には、我々は別の使用することを選択しました "ProductName11" の98765 &ディレクトリ

のアプリケーションIDを持っていますID &は、新しいバージョンごとにインストールされ、ユーザーは以前のバージョンを削除しなくても新しいバージョンをデモすることができます。同じIDを使用した場合、以前のバージョンを上書きしてライセンスを無効にします。

ただし、アップグレードを希望するユーザーの場合は、新しいバージョンをインストールするための2段階のプロセスです。&以前のバージョンのアンインストーラを実行してください。私たちが望むのは、インストールプロセス中に以前のバージョン(見つかった場合)をアンインストールするオプションをユーザに促すことです。

これを可能にするためにInstall4j設定でいくつかの事前作成オプションを探しましたが、良い解決策は見つかりませんでした。次のように基本的に私たちの目的のワークフローは次のとおりです。

  1. は最初の標準のウェルカム画面を表示
  2. ユーザーは、当社のカスタムオプションを選択し、インストール時にインストール
  3. を開始します:以前のバージョンは 知られているアプリケーションIDを使用して(存在する場合や、FIRSTチェックもしそうなら、 にメッセージを表示して、以前のバージョンを削除することを確認してください。
  4. ユーザが「はい」を選択した場合、前のプログラムのアンインストーラを実行して、現在の新しいプログラムのインストールを完了してください。

最終的に私はこれに関連した2つの質問があります:私たちは私たちの目的のワークフローを実現するための最良の方法は何

  1. を?
  2. 簡単な方法がない場合、 のアプリケーションバージョンをセットアップする別の方法がありますか? 私たちは別のアプリケーションバージョンを使用して何らかの形で自動アンインストールを可能にする同様のプロセスを持つことができます 以前のバージョン?

:当社のソリューションはまた、Windows版、Macとの互換性が交差する必要があり、& Linuxの

ありがとう!

答えて

0

「インストールディレクトリ」プロパティが設定され、「同じアプリケーションIDが検出された場合のみ」プロパティの選択が解除されている場合、任意のディレクトリからアンインストールできる「前回のアンインストーラの実行」アクションがあります。

異なるアプリケーションIDがインストールされていると、「ファイル名を指定して実行スクリプト」アクションで

ApplicationRegistry.ApplicationInfo[] applicationInfos = 
    ApplicationRegistry.getApplicationInfoById("<application ID of previous version>"); 

if (applicationInfos.length > 1) { 
    context.setVariable("uninstallDir", 
     applicationInfos[0].getInstallationDirectory().getPath()); 
} 

を使用し、以前のバージョンを調べるに。そして、あなたは

${installer:uninstallDir} 

context.getVariable("uninstallDir") != null 
への「条件式」に「前のアンインストーラを実行」アクションの「インストールディレクトリ」プロパティを設定することができます
関連する問題