Visual Studio 2008 で配置プロジェクトを作成、インストール時のカスタム動作として実行する。 BAT ファイルは使用不可、WSH スクリプトは実行可だが、失敗時にインストールを中断する等、Windows Installer への結果のフィードバックができない。
コントロールパネル → ネットワークのプロパティを開いたままにしていると失敗する。
ipv6 install
→ 成功時も失敗時も戻り値が 0
netsh interface ipv6 install
→ 成功時 0、失敗時 1
あとで、書きます。
Visual Studio Installer で、ActiveX EXE を含むインストーラを作成して、実際にインストールしようとすると、
エラー1904 モジュール (ActiveX.Exeのプログラム名) の登録に失敗しというメッセージが表示される。継続を選択するとインストールは完了するが、ActiveX EXE がレジストリに登録されないままである。インストール時に登録するには、ちょっと設定をいじってやる必要がある。Google グループ: Visual Studio Installerについて が参考になる。以下引用。
- レジストリエディタでActiveX EXEのCLSIDを調べて、メモっておきます。
- プロジェクトエクスプローラの依存関係にActiveX EXEが含まれていることを確認します。(参照設定がされていれば、依存関係に追跡されると思います。)
- プロジェクトエクスプローラの依存関係にActiveX EXEをクリックしてプロパティの中のRegisterプロパティを0(vsifrNone)を選択します。
- プロジェクトエクスプローラから「関連付け」をダブルクリックして関連付けウィンドウを表示します。COMオブジェクトを選択して右ボタンクリックで「COMオブジェクトの追加」を選択します。このとき先にメモっておいたCLSIDを追加するCOMオブジェクトの名前として使います。
- 追加したCOMオブジェクトのプロパティの中のComponentプロパティにActiveXEXEを選択します。
- COMオブジェクトのプロパティの中のContextプロパティを2(vsiccLocalServer32)を選択します。
2004.08.05 追記
-----------------------
/RegServer オプションで登録したときと同じにするには、上記の手順でクラスの登録をするほかに、ActiveX EXE そのものをタイプライブラリ登録する必要がありそう。まだ調査中ですが。
Visual Studio Installer で作ったインストーラは、デフォルトのインストール先を指定することができない。でも、業務アプリなんかだと、たとえば、C:\foo にインストールしたいような場合とかあるんだよね。これを変更するには、Windows Installer のカスタマイズには必須のツール、Orca を使う。
まず、Windows Installer SDK を手に入れる。これは MS の Platform SDK Update より入手。デフォルトなら、 C:\Program Files\Microsoft SDK\Bin にOrca.msi があるので、これを実行して Orca をインストールする。
次に、Orca を起動して、ウインドウに修正したい MSI ファイルをドロップする。
Tables より、Custom Action を選択すると、右側に DIR_CA_TARGETDIR ってアクションがあると思う。値は、えーと、"[ProgramFilesFolder]foo" とかになってるかな?これがインストール先になるので、ここを書き換えてしまう。
ためしに、"C:\foo" に変更してみたら、うまくいった。
でも、システムの入ったドライブのfoo、とする場合は、C:\ を決めうちするより、"[WindowsVolume]" にするのが正解らしいです。
Visual Studio Installer で、たとえば、VB のプロジェクトより、依存ファイルを抽出すると、プロジェクトエクスプローラの ファイル>Project1 の出力>依存関係 以下に "MSVBVM60.MSM" など、拡張子が MSM のファイルが含まれることがあります。これは マージモジュール と呼ばれるもので、DLL や レジストリ情報など、依存モジュールをパッケージングしたものです。当然、実際インストールされる際には内容物が展開されることになるのですが、そのインストーラに含まれる DLL 等の一覧を得たいような場合があると思います。
※ というか、このあいだ、インストールした結果、システムが動かなくなってしまい、アンインストーラも起動しなくなってしまったため、置き換えられたDLLを手動で元に戻す必要があり、結局何が置き換えられたの?という事を調べなきゃいけなかったのです。
以下の方法で、依存ファイルを圧縮形式でなく、ばらばらのファイルとして展開された状態でインストーラを作成することができます。
これで出力先に、ばらばらの状態で依存ファイルが格納されます。
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q248/1/41.asp&NoWebContent=1
特殊なフォルダの追加>カスタム...でキーワードを指定。
スタートメニュー>プログラム なら"ProgramMenuFolder"
スタートメニュー>プログラム>スタートアップ なら"StartupFolder"
その他のキーワードはここかな↓
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/system_folder_properties.asp?frame=true