5

InstallShield 2012 Spring でビルドされたインストーラーを使用したアップグレード中に、次のメッセージが表示されます。

  1. InstallShield Wizard は、インストールされている <our product> のバージョン (9.01.005) をバージョン 9.2.0.53 に更新します。
  2. InstallShield Wizard は <our product> の (9.01.005) をバージョン 9.2.0.53 に更新しています。

これらのメッセージは、文字列リソースIDS_IFX_SDWELCOMMESSAGE_UPDATE_WELCOMEIDS_IFX_STATUSEX_STATICTEXT_UPDATEUI. 変更されていない文字列リソースは次のようになると思います。

  • InstallShield ウィザードは、%P のインストール済みバージョン (%VI) をバージョン %VS に更新します。続行するには、[次へ] をクリックします。
  • InstallShield ウィザードは、%P をバージョン %VS に更新 (%VI) しています。

一部のリソースは、2 番目の文字列リソースが「InstallShield Wizard が %P の %VI をバージョン %VS に更新しました」であることを示しています。

問題は、古い (インストールされた) バージョン番号が、"9.01.005" のような内部バージョン番号のフォーマットされたバージョンではなく、"9.1.5.2" のような表示文字列であることです。私が理解しているように、のデフォルトのInstallScriptコードに置換を入力するためにSdSubstituteProductInfo使用されます。これは、優先表示文字列が必要な場所に表示されない理由を説明しています。そして、(または同様に を参照するダイアログまたはコード)、フォーマットが不適切なバージョンも表示されると思います。IFX_INSTALLED_DISPLAY_VERSION%VIOnUpdateUIBeforeIFX_INSTALLED_DISPLAY_VERSIONIFX_INSTALLED_VERSIONSdWelcomeIFX_INSTALLED_DISPLAY_VERSION

上記の関数、文字列、および文字列 ID について Web で検索したにもかかわらず、適切にフォーマットされた古いバージョン番号 (DisplayVersion) を正しいフォーマットで表示するための理想的な解決策が見つかりませんでした。を含む文字列リソースを使用する代わりに、古いバージョン番号をスキップするフォーマット文字列をハード コーディングすることを提案する記事もあります%VI。他の人は、必要に応じてバージョン番号を手動でフォーマットし、結果を に入れることを提案していIFX_INSTALLED_DISPLAY_VERSIONます。もっと良い答えがあることは知っています。次に私や他の誰かがそれを探すときに、もっと簡単に見つけられるようにしたいと思っています。

4

1 に答える 1

4

InstallScript 関数で、OnBeginInstallScript コードの次の行を の後の最初の行として追加しますbegin

RegDBGetItem(REGDB_UNINSTALL_DISPLAY_VERSION, IFX_INSTALLED_DISPLAY_VERSION);

OnBegin でこれを実行すると、質問に記載されていない別のメッセージが正しい形式を使用することも保証されます。

セットアップは、%P のバージョン %VI が既にインストールされていることを検出しました。

このセットアップでは、以前のバージョンの %P (%VS) がインストールされます。

このバージョンをインストールする前に、以前のバージョンをアンインストールする必要があります。

于 2013-01-23T16:58:43.970 に答える