InstallShield

01575 : 64 bit OS 用インストーラの作成方法(InstallScript)

64 bitOS 用のインストーラ作成に関する基本的な設定と注意事項です。

対象製品:InstallShield 11 ~ InstallShield 2012
対象プロジェクト:InstallScript プロジェクト


[概要]

InstallShield 2012 Spring では、InstallScript プロジェクトについても、コンポーネントの設定によって 64bit 領域へのインストールが
可能となりました。 InstallShield 2012 Spring 以降のバージョンにて、64bit OS用インストーラを作成する場合の方法は、以下の FAQ をご参照ください。


 ID:00002122 64 bit OS 用インストーラの作成方法(InstallScript)InstallShield2012 Spring 以降


InstallScript プロジェクトでは 64-bit アプリケーションのインストールをサポートしますが、InstallScript エンジン自体は
32-bit アプリケーションとして動作します。
64-bit OS 上での 32-bit プロセスは OS によるファイルシステムおよびレジストリのリダイレクトの影響を受けるため、
InstallScirpt から 64-bit OS 上のファイルシステムやレジストリなどの 64-bit 部分にアクセスするためには、その処理の
間だけファイルシステムおよびレジストリのリダイレクトを無効にする必要があります。

64 bit 用のアプリケーションをインストールする場合には、以下のような設定が必要となります。

・64bit 用の機能の作成
64bit モジュールのみを含む機能を作成します

・機能イベント関数で、64bit用の処理の実装
OnInstalling() イベント内でファイルシステムのリダイレクトおよびレジストリのリダイレクトを無効にし、OnInstalled()
イベント内で再度リダイレクトを有効にします。
 また、64bit の自己登録はレジストリリダイレクトが有効な間だけサポートされますので、OnInstalling() イベント内で
 バッチメソッドを無効にし、OnInstalled() イベント内で再度リダイレクトを有効にします。

アンインストール時も同様に OnUnisntalling()イベント内でリダイレクトとバッチメソッドを無効にし、OnUninstalled()
イベント内でリダイレクトとバッチメソッドを有効に戻します。

・64bit ファイルインストール先の指定
 64bit 領域へのパスは、以下のシステム変数を使用します。

WINSYSDIR64 (%windir%\System32)
PROGRAMFILES64 (%ProgramFiles%)
COMMONFILES64 (%CommonProgramFiles%)
FOLDER_APPLICATIONS64
  ・%ProgramFiles% (ALLUSERS == TRUE)
・%UserProfile%\Application Data (ALLUSERS == FALSE)

 32bit 領域は、以下を使用
WINSYSDIR (%windir%\SysWOW64)
PROGRAMFILES (%ProgramFiles(x86)% )
COMMONFILES (%CommonProgramFiles(x86)%)



[設定方法]

64bit 用インストーラで、64bit アプリケーションファイル転送やレジストリ登録を行う設定例です。

1. [セットアップのデザイン]ビューで 64bit用の機能を作成します。機能名を Feature64files とします

2. 機能名 Feature64files に新規コンポーネントを追加して、[全般]の[インストール先]を変更します

  例)<PROGRAMFILES64>\<IFX_COMPANY_NAME>\<IFX_PRODUCT_NAME> など

  ※[一般情報]-[全般]で[TARGETDIR]の設定自体を、64bit のインストール先に変更することも可能です。

   <FOLDER_APPLICATIONS64>\<IFX_COMPANY_NAME>\<IFX_PRODUCT_NAME> など

3. コンポーネントに64bit ファイルを追加します


4. 機能イベント関数で、64bit用の処理を実装します。[動作とロジック]-[InstallScript]ビューを表示し、イベントカテゴリ
から Feature64files を選択し、Installing、Installed、UnInstalling、UnInstalled の4つのイベントを追加して、
  以下のようなコードを追加します

=====================================================================================================
export prototype Feature64files_Installing();
function Feature64files_Installing()
begin
// ファイルリダイレクトを無効にした状態で自動登録をする必要があるので、
// バッチメソッドによる自動登録は無効にしておきます。
Disable ( SELFREGISTERBATCH );

// ファイルが 64-bit システムフォルダに正しく転送されるようにファイルリダイレクトを無効にします。
Disable ( WOW64FSREDIRECTION );

// 32-bit プロセス(InstallScript エンジン)からレジストリの 64-bit 部分に書き込めるように
//レジストリリダイレクトを無効にします。
REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY;

/*
ここに RegDBSetKeyValueEx 関数などを使用して、レジストリの書き込み処理などを追加します
*/

end;


export prototype Feature64files_Installed();
function Feature64files_Installed()
begin
// バッチメソッドを有効にします。
Enable ( SELFREGISTERBATCH );

// ファイルリダイレクトを有効にします。
Enable ( WOW64FSREDIRECTION );

// レジストリリダイレクトを有効にします。
REGDB_OPTIONS = REGDB_OPTIONS & ~REGDB_OPTION_WOW64_64KEY;
end;


export prototype Feature64files_UnInstalling();
function Feature64files_UnInstalling()
begin
Disable ( SELFREGISTERBATCH );
Disable ( WOW64FSREDIRECTION );
REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY;
end;


export prototype Feature64files_UnInstalled();
function Feature64files_UnInstalled()
begin
Enable ( SELFREGISTERBATCH );
Enable ( WOW64FSREDIRECTION );
REGDB_OPTIONS = REGDB_OPTIONS & ~REGDB_OPTION_WOW64_64KEY;
end;
=====================================================================================================

6. ビルドして、64bit システム上でインストールを実行します


[備考]
詳しい情報については、以下のヘルプをご参照ください。

製品ヘルプ:
REGDB_OPTIONS
Disable
Enable
SYSINFO


検索文字列:64ビット、64-bit、64


2009/10/01 17:03:59
2017/09/26 14:39:08