frog.raindrop.jp.knowledge > Windows Installer

April 27, 2009

Windows XP に IPv6 を追加する

Visual Studio 2008 で配置プロジェクトを作成、インストール時のカスタム動作として実行する。 BAT ファイルは使用不可、WSH スクリプトは実行可だが、失敗時にインストールを中断する等、Windows Installer への結果のフィードバックができない。

コントロールパネル → ネットワークのプロパティを開いたままにしていると失敗する。

ipv6 install
→ 成功時も失敗時も戻り値が 0

netsh interface ipv6 install
→ 成功時 0、失敗時 1

あとで、書きます。

August 5, 2004

インストール後のファイルの日時が9時間ずれる

Visual Studio Installer 1.1 を使って作成したインストーラでインストールすると、元ファイルより9時間古い日付でコピーされてしまうという現象がおきました。ちょうど GMT と JST との差が9時間なので、タイムゾーンのトラブルっぽいですが、そのような情報が見つからないので、何が原因なのかわかりません。
続きを読む...

June 30, 2004

Visual Studio Installer で、ActiveX EXE をインストールする

Visual Studio Installer で、ActiveX EXE を含むインストーラを作成して、実際にインストールしようとすると、

エラー1904 モジュール (ActiveX.Exeのプログラム名) の登録に失敗し
ました。HRESULT-2147024885 サポートへお問い合わせください。

というメッセージが表示される。継続を選択するとインストールは完了するが、ActiveX EXE がレジストリに登録されないままである。インストール時に登録するには、ちょっと設定をいじってやる必要がある。Google グループ: Visual Studio Installerについて が参考になる。以下引用。

  1. レジストリエディタでActiveX EXEのCLSIDを調べて、メモっておきます。
  2. プロジェクトエクスプローラの依存関係にActiveX EXEが含まれていることを確認します。(参照設定がされていれば、依存関係に追跡されると思います。)
  3. プロジェクトエクスプローラの依存関係にActiveX EXEをクリックしてプロパティの中のRegisterプロパティを0(vsifrNone)を選択します。
  4. プロジェクトエクスプローラから「関連付け」をダブルクリックして関連付けウィンドウを表示します。COMオブジェクトを選択して右ボタンクリックで「COMオブジェクトの追加」を選択します。このとき先にメモっておいたCLSIDを追加するCOMオブジェクトの名前として使います。
  5. 追加したCOMオブジェクトのプロパティの中のComponentプロパティにActiveXEXEを選択します。
  6. COMオブジェクトのプロパティの中のContextプロパティを2(vsiccLocalServer32)を選択します。

2004.08.05 追記
-----------------------
/RegServer オプションで登録したときと同じにするには、上記の手順でクラスの登録をするほかに、ActiveX EXE そのものをタイプライブラリ登録する必要がありそう。まだ調査中ですが。

June 22, 2004

Windows Installer で、デフォルトのインストール先を指定する

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]" にするのが正解らしいです。

May 14, 2004

Visual Studio Installer で作成した msi に含まれるファイルを知りたい

Visual Studio Installer で、たとえば、VB のプロジェクトより、依存ファイルを抽出すると、プロジェクトエクスプローラの ファイル>Project1 の出力>依存関係 以下に "MSVBVM60.MSM" など、拡張子が MSM のファイルが含まれることがあります。これは マージモジュール と呼ばれるもので、DLL や レジストリ情報など、依存モジュールをパッケージングしたものです。当然、実際インストールされる際には内容物が展開されることになるのですが、そのインストーラに含まれる DLL 等の一覧を得たいような場合があると思います。
※ というか、このあいだ、インストールした結果、システムが動かなくなってしまい、アンインストーラも起動しなくなってしまったため、置き換えられたDLLを手動で元に戻す必要があり、結局何が置き換えられたの?という事を調べなきゃいけなかったのです。

以下の方法で、依存ファイルを圧縮形式でなく、ばらばらのファイルとして展開された状態でインストーラを作成することができます。

  1. メニューのプロジェクト>プロジェクト名 のプロパティ を選択します。
  2. 「ビルド」タブを選択し、「パッケージファイル」を「圧縮しない」に変更します。
    # 標準は「セットアップ ファイルに圧縮」だと思います。
  3. ビルドします。

これで出力先に、ばらばらの状態で依存ファイルが格納されます。

August 8, 2003

Visual Studio Installer でカスタムな特殊フォルダを追加する

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

続きを読む...