†VS.NETのデプロイメントプロジェクトにおけるTipをいくつか紹介します。注意この記事の最新版は「インストール時にインストール先のフォルダパスをレジストリに書き込む」で公開しています。インストール時にレジストリに値を書き込むには、VS.NETのレジストリエディタを使用します。Installerのプロパティを使用できるようなので(ヘルプには明記されていないようですが)、インストール先のフォルダパスを表す[TARGETDIR]プロパティを利用して、レジストリエディタに値を追加すればよいでしょう。具体的な方法を示します。ここでは、レジストリキー「HKCU\Software\[Manufacturer]\[ProductName]」に名前「Path」で値がインストールしたパスとなる値を書き込むようにします。デプロイメントプロジェクトのManufacturerプロパティが「既定の会社名」でProductNameプロパティが「Setup1」の場合は、「HKCU\Software\既定の会社名\Setup1」というキーに書き込まれます。レジストリエディタを開きます。ソリューションエクスプローラーでデプロイメントプロジェクトを右クリックしてコンテキストメニューを表示し、「表示」-「レジスト」を選択すればレジストリエディタが開きます。次にレジストリキー「HKCU\Software\[Manufacturer]\[ProductName]」を作成します。レジストリエディタの左側のツリーで「HKCU\Software\[Manufacturer]」を右クリックし、メニューから「新規作成」-「キー」を選択してキーを作成します。そのキーの名前を、「[ProductName]」に変更します。それから、このキーに値を追加します。ツリーで「HKCU\Software\[Manufacturer]\[ProductName]」を選択してから、右側のペインで右クリックしてメニューを表示します。ここで「新規作成」-「文字列の値」を選択し、追加される値のNameプロパティを「Path」、Valueプロパティを「[TARGETDIR]」とします。これでインストールしたパスがレジストリに書き込まれるようになります。注意この記事の最新版は「アドバタイズショートカットではなく、普通のショートカットを作成する」で公開しています。shortcut)となります。Installerの優れた機能ですが、困ったことも多々あります。普通のショートカットでは、エクスプローラからファイルをドロップすると、そのファイルのパスをコマンドライン引数にしてリンク先のアプリケーションを実行しますが、アドバタイズショートカットではこれができません。よって、Windowsの「送る」フォルダにショートカットを作成しても正常に機能しませんし、デスクトップにシュートカットを作成してこのシュートカットにファイルをドロップすることによってアプリケーションを起動するといったこともできません。ここではアドバタイズショートカットではなく、普通のショートカットを作成する方法を幾つか紹介します。簡単な方法は、DISABLEADVTSHORTCUTSプロパティを設定することでしょう。これにより、アドバタイズショートカットが作成されなくなります。InstallerデータベースのPropertyテーブルで指定するかということになります。msiexecのコマンドライン引数で指定する方法とは、MSIファイルをインストールするときに次のようなコマンドを使用する方法です。InstallerデータベースのPropertyテーブルで指定する方法とは、OrcaでMSIファイルを開き、PropertyテーブルにProperty「DISABLEADVTSHORTCUTS」、Value「1」の行を追加する方法です。このようにDISABLEADVTSHORTCUTSプロパティを使った方法では、すべてのショートカットが通常のショートカットとなります。InstallerデータベースのShortcutテーブルをいじることになります。MSIファイルをOrcaで開き、Shortcutテーブルを表示します。そこで普通のシュートカットにしたい設定の行を探し、Target列をショートカットのリンク先のパス(通常は「[TARGETDIR]\<ファイル名>」)に変更します。Icon_列を空白にします。これで保存すれば完了です。注意この記事の最新版は「環境変数Pathにパスを追加する」で公開しています。InstallerデータベースのEnvironmentテーブルを使います。このEnvironmentテーブルはVS.NETで操作できませんので、Orcaなどを使って編集する必要があります(さもなくば、カスタムアクションを使うことになるでしょう)。ここでは具体的に環境変数Pathにインストールしたパスを追加する方法を説明します。MSIファイルをOrcaで開きます。Environmentテーブルに次のような行を追加します。詳しくは、ヘルプをご覧ください。Enviroment補足:NT系OSではName列の先頭に「*」を付けるとシステム環境変数に書き込まれ、付けないとユーザー環境変数に書き込まれます。詳しくはヘルプのRemarksをご覧ください。Componentテーブルに次のような行を追加します。0さらにFeatureComponentsテーブルに次のような行を追加します。Enviromentこれで保存すればOKです。環境変数の値を取得するには、「[%(環境変数の名前)]」のようにします。カスタム動作のCustomActionDataプロパティにより環境変数Pathを取得するには、CustomActionDataに「[%Path]」と指定します。注意この記事の最新版は「インストール終了後に再起動する」で公開しています。インストール後(あるいはインストール中)にシステムの再起動を行うには、スタンダードアクションのScheduleRebootやForceRebootを使います。ScheduleRebootはインストールの最後に再起動し、ForceRebootは途中でも再起動できます。VS.NETではこれらのアクションを追加することはできませんので、これらを使うにはOrcaを使用します。Action性格上、ForceRebootの方が使い方が難しいので、ここではScheduleRebootをInstallExecuteSequenceテーブルに挿入することにします。OrcaでMSIファイルを開き、InstallExecuteSequenceテーブルを表示します。ヘルプによると、ScheduleRebootの挿入位置は、通常は最後ですが、どこでもよいということです。よって、ここでは次のような行をInstallExecuteSequenceに追加します。7000このようなMSIファイルを実行すると、インストール終了後に再起動を求めるダイアログが表示されます。ユーザーはここで再起動しないように選択することもできます。サイレントインストールのときは、自動的に再起動されます。REMOVE~="ALL"」を指定します。これ以外の方法としては、REBOOTプロパティに「Force」を指定する方法もあります。MSIファイルをインストールするときに次のようなコマンドを使用し、プロパティを指定します。3.0以降では、「/forcerestart」コマンドラインオプションによっても可能です。Options再起動の確認ダイアログを表示しないで再起動されるようにするには、さらに「REBOOTPROMPT=Suppress」を追加します。3.0以降では、「/norestart」コマンドラインオプションによっても可能です)。注意この記事の最新版は「インストール時にログファイルを作成する」で公開しています。インストーラが思ったとおりに機能しない場合には、ログファイルを作成すると役に立ちます。msiexec.exeでは、「/l」コマンドラインオプションにより、ログファイルを作成することができます。「/l*vx」とすると、すべての情報がログに記録されます。logfile.txtのようなコマンドでは、Setup1.msiをインストールする時にログをファイル「logfile.txt」に保存します。Installerのすべてのログをファイルに保存することもできます。」に文字列の値「Logging」、値「voicewarmup」を追加することにより、一時フォルダに「Msi」で始まり「.log」で終わるファイル名のログファイルが作成されるようになります。詳しくは、次のリンク先をご覧ください。注意この記事の最新版は「サイレントインストールを行う」で公開しています。ユーザーインターフェイスを表示しないサイレントインストールを行う方法は、第55号で紹介しました。「/qn」コマンドラインオプションを使用します。3.0以降では、「/quiet」コマンドラインオプションによっても可能です。ちなみに、「/qb!」コマンドラインオプションにより、ユーザーインターフェイスの「キャンセル」ボタンを隠す(プログレスバーのみを表示する)ことができます。