C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: バージョンアップ用インストーラ作成


(過去ログ 49 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■26657 / inTopicNo.1)  バージョンアップ用インストーラ作成
  
□投稿者/ ソル (1回)-(2008/10/16(Thu) 17:21:03)

分類:[.NET 全般] 

2008/10/16(Thu) 17:21:45 編集(投稿者)

VS2005でインストーラの作成を行っています。

新規のマシンには問題ありませんが、旧バージョンがインストールされているマシンに新バージョンをインストールすると、
旧バージョンのDLL(VB6:ActiveX)が更新されません。

インストーラより削除後に再インストールしています。

◆DLLのプロパティは以下の通りです。
・Parmanent : True
・ReadOnly : False
・Register : vsdrfCOMSelfReg

 DLLはプロジェクト内で依存関係です。


◆プロジェクトのプロパティは
ProductCode : 旧バージョンと異なる値
ProductName : 旧バージョンと同値
UpgradeCode : 旧バージョンと同値
Version : 1.xx

です。

ActiveX DLLを更新するには特別な設定が必要なのでしょうか?
引用返信 編集キー/
■26662 / inTopicNo.2)  Re[1]: バージョンアップ用インストーラ作成
□投稿者/ とっちゃん (350回)-(2008/10/16(Thu) 18:03:37)
とっちゃん さんの Web サイト
No26657 (ソル さん) に返信

> ◆DLLのプロパティは以下の通りです。
> ・Parmanent : True
> ・ReadOnly : False
> ・Register : vsdrfCOMSelfReg
>
Parmanent なんですか?アンインストールしない。。。と
それと、SelfRegではなくvsdrpCOM がよいとおもいます。
SelfReg だと、リブートが入る時に面倒なことになるんで。
#VB6のActiveXなら問題ないはず

>  DLLはプロジェクト内で依存関係です。
>
依存関係で自動リストアップですか?


> ActiveX DLLを更新するには特別な設定が必要なのでしょうか?
特別な設定は必要ないと思いますが、ActiveX DLL 自身のファイルバージョンは
上がっていますか?
より新しいバージョンなら更新となりますので
たとえ修正ビルドしたものを含めていてもバージョンが上がっていなければ
更新されません。

これは、COMに限った話ではなく、.NET アプリでも何でもファイルバージョンを持つものすべてが該当します。

引用返信 編集キー/
■26667 / inTopicNo.3)  Re[2]: バージョンアップ用インストーラ作成
□投稿者/ ソル (2回)-(2008/10/16(Thu) 20:15:22)
No26662 (とっちゃん さん) に返信
>
> Parmanent なんですか?アンインストールしない。。。と
Permanentの間違いでした。ご指摘ありがとうございます。

> 依存関係で自動リストアップですか?
アプリに必要なDLLなのでそのようにしております。


>>ActiveX DLLを更新するには特別な設定が必要なのでしょうか?
> 特別な設定は必要ないと思いますが、ActiveX DLL 自身のファイルバージョンは
> 上がっていますか?
> より新しいバージョンなら更新となりますので
> たとえ修正ビルドしたものを含めていてもバージョンが上がっていなければ
> 更新されません。

バージョンを判断して更新しないとは知りませんでした。
為になりました。

ありがとうございます。



ちなみに旧バージョンのアプリを新バージョンのアプリインストーラでアンインストールするには

プロパティを
・ProductCode : 旧バージョンと異なる値
・ProductName : 旧バージョンと同値
・UpgradeCode : 旧バージョンと同値
・Version : 1.xx(旧より大きな値)

とすれば問題無いのでしょうか?



引用返信 編集キー/
■26686 / inTopicNo.4)  Re[3]: バージョンアップ用インストーラ作成
□投稿者/ とっちゃん (351回)-(2008/10/17(Fri) 12:03:26)
とっちゃん さんの Web サイト
No26667 (ソル さん) に返信
> Permanentの間違いでした。ご指摘ありがとうございます。
>
あ、いえ。スペルミスのほうではなく、Permanent を True にしてるということは
アンインストールはしないのですね?
という意味です。

>>依存関係で自動リストアップですか?
> アプリに必要なDLLなのでそのようにしております。
>
自作のですよね?なら特に問題はないかな。
あるとしてもインストール先くらいか。


> バージョンを判断して更新しないとは知りませんでした。
> 為になりました。
>
これは、ActiveXだからというわけではなくインストール処理では
基本的な概念になります。

自分の製品でのみ利用しているものであれば...と思われがちですが
どのような形であれ「更新」を行うのであればバージョン管理は
きっちりと行っておかなければ、なりません。


> ちなみに旧バージョンのアプリを新バージョンのアプリインストーラでアンインストールするには
>
> プロパティを
> ・ProductCode : 旧バージョンと異なる値
> ・ProductName : 旧バージョンと同値
> ・UpgradeCode : 旧バージョンと同値
> ・Version : 1.xx(旧より大きな値)
>
> とすれば問題無いのでしょうか?

基本はそうですね。
どのような形であれ更新が行われる予定があるのであれば
VSのセットアッププロジェクトの場合は、
最初のリリースのバージョンを1.0.0以上にする(こうしないとアップデートできないため)
配置プロジェクトのプロパティ(ソリューションエクスプローラでセットアッププロジェクトを選びツールバーのプロパティをオス)で
DetectNewerInstalledVersion と RemovePreviousVerions を True に設定する。

としてビルドします。
以後アップデートがあるたびに配置プロジェクトのプロパティのVersionを1.0.1 などあげていき
その際表示される
「バージョンを変更する場合は、ProductCode の変更をお勧めします。
実行しますか?」
のメッセージに「はい」と答える。

とすれば、あとは更新のあるファイルのファイルバージョンをあげていくだけで基本はOKです。


引用返信 編集キー/
■26687 / inTopicNo.5)  Re[4]: バージョンアップ用インストーラ作成
□投稿者/ 渋木宏明(ひどり) (919回)-(2008/10/17(Fri) 12:23:53)
渋木宏明(ひどり) さんの Web サイト
> VSのセットアッププロジェクトの場合は、
> 最初のリリースのバージョンを1.0.0以上にする(こうしないとアップデートできないため)

出来あがった .msi の Update テーブルを書き換えればできるけど、まぁ、普通はやらないね。面倒だし。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -