SSブログ

InstallShield インストール済みアプリのバージョンをレジストリから取得する方法 [InstallShield]

InstallShieldバージョン: 2010

プロジェクトタイプ: InstallScriptプロジェクト

管理者権限でインストールされたアプリケーションをユーザー権限でアップデートする場合、インストール済みのバージョンが取得できずエラーとなりインストールが続行出来ない、アプリケーション側に権限による問題が無い場合、これを無視してインストールする場合に行う方法。InstallScriptを利用して実現する。

1.インストールデザイナから「動作とロジック」、「InstallScript」を選択する。

2.「ファイル」フォルダ内の「Setup.Rul」を選択するとスクリプトのソースコードが表示される。

clip_image002

3.ソースコード上部にあるタブから「Initialization」と「OnSetupUpdateMode」を選択する。

clip_image004

4.OnSetupUpdateMode”関数内の先頭に以下のコードを追加する。

if ((IFX_INSTALLED_VERSION="") && MAINTENANCE) then

    /* レジストリに登録されているバージョン情報を取得します。*/

    RegDBSetDefaultRoot (HKEY_LOCAL_MACHINE);

    /* “RegDBGetKeyValueEx”関数の第三引(取得するValueのタイプ)は、number型の変数nSrに保存してから、与えないとエラーとなる。RODUCT_GUIはインストールするアプリに割り当てられた固有番号が保存されているInstallShieldのグローバル変数。 */

    nSr = REGDB_STRING;

    szMyGuidStr

= "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + PRODUCT_GUID;

    RegDBGetKeyValueEx( szMyGuidStr, "DisplayVersion", nSr, szVersionString, nSize );

    IFX_INSTALLED_VERSION = szVersionString;

endif;

これでインストールの初期化時にインストール済みのバージョンをレジストリから取得し、Installshieldグローバル変数IFX_INSTALLED_VERSION に値を設定すればインストールが続行できる。


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。