DOBON.NET DOBON.NETプログラミング掲示板過去ログ

プログラミング道「デプロイメントによるアップデート」について

環境/言語:[WindowsVista、VB.NET、VisualStudio"08、.NET Framework 2.0]
分類:[インストーラ]

プログラミング道「デプロイメントによるアップデート」を参考に
スモールアップデートを作成していますが、うまく動作しません。
原因をあれこれ考えているのですがどうしてもわからずにいます。

【Orcaを使ってテーブルを編集し再インストールする方法】
ア)初回インストーラーの作成
デプロイメントプロジェクト(名前:Setup1.msi)をビルドします。
Orcaでこのmsiを開き、Propertyテーブルに、「REINSTALLMODE=voums」「REINSTALL=ALL」を追加し、
CustomActionテーブルに、「fix_reinstall、51、REINSTALL、{}」を追加し、
InstallExecuteSequenceとInstallUISequenceテーブルに「fix_reinstall、NOT Installed、999」を追加してインストールすると、問題なくインストールされます。
イ)ところが、デプロイメントを再びビルドして先ほどと同様にOrcaでテーブルを編集し、インストールしようとしても「別のバージョンがインストールされています」というメッセージがでてインストールできません。

どうしてなのかわかりません。
ご教授お願い申し上げます。

【参考 コマンドラインで再インストールを実行する方法】
こちらの方法もうまくいきません。
すでにインストールされている場合は次のようなコマンドラインを指定して実行します。
「msiexec /i Setup1.msi REINSTALLMODE=voums REINSTALL=ALL」
この場合は、メンテナンスフォームが表示され、修正を選択して実行しても、実際は再インストールされておらず、ファイルの上書きなどがおこなわれません。

よろしくお願いいたします。
■No22429に返信(mitさんの記事)
ProductCode についての設定が質問文に書かれていないのは
設定してないって事?バージョン管理してるの?
■No22430に返信(るしぇさんの記事)
> ■No22429に返信(mitさんの記事)
> ProductCode についての設定が質問文に書かれていないのは
> 設定してないって事?バージョン管理してるの?

返信ありがとうございます。
プログラミング道で記載されているアップデートのタイプのうち
スモールアップデートを作成したいと考えております。

PakageCode 変更する
ProducVersion 変更しない
ProductCode 変更しない

というようにしたいとおもいます。

ProductCode、ProductVersionは不変ですので、バージョン管理はしません。
よろしくお願いいたします。
コマンドラインによる方法を試してみましたが、修正を選択することにより、更新されたファイルが上書きでインストールされました。もし上書きされない場合は、

インストーラでファイルを上書きする
http://dobon.net/vb/dotnet/deployment/overwrite.html

を参考にしてみてください。

なお、スモールアップデートは、基本的にはパッチで行うべきとなっていたと思います。
返信ありがとうございます。

■No22449に返信(管理人さんの記事)
> コマンドラインによる方法を試してみましたが、修正を選択することにより、更新されたファイルが上書きでインストールされました。もし上書きされない場合は、
>
> インストーラでファイルを上書きする
> http://dobon.net/vb/dotnet/deployment/overwrite.html
>
> を参考にしてみてください。

コマンドラインによる再インストールでは上書きされるようです。
ただいま、さまざまな方法で試験しています。
その結果をご報告いたしますので少々お待ちください。

> なお、スモールアップデートは、基本的にはパッチで行うべきとなっていたと思います。

この件も調べてみたいと思います。
■No22449に返信(管理人さんの記事)
> コマンドラインによる方法を試してみましたが、修正を選択することにより、更新されたファイルが上書きでインストールされました。もし上書きされない場合は、
>
> インストーラでファイルを上書きする
> http://dobon.net/vb/dotnet/deployment/overwrite.html
>
> を参考にしてみてください。

コマンドラインによる方法で上書きされる場合と上書きされない場合があり、
困っております。何が原因なのかわかりません。

(A)初回インストール用「Setup1.msi」
インストールするフォルダ・ファイルの構成は次の通りです。
[アプリケーション フォルダ]-[SubjectA]フォルダ-[Data.txt]ファイル
※インストール時のカスタム動作あり

(B)スモールアップデート用「Setup1.msi」
インストールするフォルダ・ファイルの構成は次の通りです。
[アプリケーション フォルダ]-[SubjectB]フォルダ-[Data.txt]ファイル
※(A)と同じインストール時のカスタム動作あり

(A)をインストールした後に、コマンドラインで(B)をインストールすると
メンテナンス画面が表示されますので「修復」を選択し実行する。

[実行結果]
修復処理は完了するのですが、[SubjectB]フォルダ-[Data.txt]ファイルが配置されない場合があります。
その際は、インストール時のカスタム動作も実行されません。
正常に、配置される場合もあります。
原因がわかりません。
このような状況で困っています。
よろしくお願いいたします。
(A)Setup1.msiでは[アプリケーション フォルダ]に[SubjectA]フォルダ-[Data.txt]ファイルをインストール

(B)Setup1.msiでは[アプリケーション フォルダ]に[SubjectB]フォルダ-[Data.txt]ファイルをインストール

というようにSetup1.msiを再インストールしていくと、
[SubjectB]フォルダが追加されるようにしたいのです。

初回インストール(A)は、普通にSetup1.msiを起動して実行します。
2回目(B)は、コマンドラインで「msiexec /i Setup1.msi REINSTALLMODE=voums REINSTALL=ALL」として実行します。

ところが見た目は正常に再インストールされるのですが、
実際は[SubjectB]フォルダが追加されていません。

ちなみに(B)の再インストールで[SubjectB]フォルダだけではなく
[SubjectA]フォルダも追加するようにすると正常に動作します。

以上が行いたいこと、問題点です。
よろしくお願いいたします。

DOBON.NET | プログラミング道 | プログラミング掲示板