How do you add a DLL to the GAC from an InstallScript Project in InstallShield? I tried added [GLOBALASSEMBLYCACHE] as a destination to the component, with no luck. It tells me that is not valid data for the destination.
5 に答える
インストール スクリプトのみのプロジェクトには、GAC にファイルを配置する方法がありません。インストール スクリプト MSI プロジェクトが必要です。別のWindowsインストーラーを作成し、インストールシールドからLauchAppAndWaitを使用して実行しました。私は MSI プロジェクトに切り替えたくなかったので、かなりのハックです。
InstallScript MSI プロジェクトを作成する代わりに、目的のコンポーネントを GAC にインストールするマージ モジュールを作成できます。次に、InstallScript cab インストールに MSM を含めます。そうすれば、LaunchAppAndWait の煩わしさを回避できます。
ISスクリプトはWin32およびその他のDLLエントリポイントにアクセスできるため、専用のMSIインストーラーは必要ありません。
インストールプロセスの早い段階でファイルアクセス許可を変更する必要があるセットアップがあります。サポートファイルとビルボードのセクションにユーティリティを追加しました。これらは、セットアップのTempフォルダーに配置されます。次に、LaunchAppAndWaitなどを使用します。
もう1つのオプションは、.netアセンブリを登録時にauto-GAC自体に変更することです。System.Configuration.Install&friendsを使用すると、より簡単になります。
gacutil
それをsupportdir(一時ディレクトリ)に入れて、そこから使用するだけです。その後、一時ディレクトリを一掃します。
Gacutil はそれを実行できますが、Gacutil は再配布できません。独自のコードを記述して Fusion API を呼び出し、それを installscript から呼び出すことは可能ですが、実際には MSI の方がはるかに簡単です。