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

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

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

インストーラ

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

■102744 / inTopicNo.1)  インストーラ
  
□投稿者/ kiku (388回)-(2023/12/21(Thu) 15:42:39)

分類:[.NET 全般] 

・環境
 VS2022
 .NETFrameWork4.8
 セットアッププロジェクト2022

・バージョン1.0のインストーラ作成
 ・アプリのアセンブリバージョンを1.0に設定
 ・アプリのファイルバージョンを1.0に設定
 ・セットアッププロジェクトのRemovePreviousVersionsをTrueに設定

・バージョン1.1のインストーラ作成
 ・アプリのアセンブリバージョンを1.1へ変更
 ・アプリのファイルバージョンを1.1へ変更
 ・セットアッププロジェクトの設定値は変えずに、リビルドのみ実施
   ・RemovePreviousVersions
   ・ProductCode
   ・UpgradeCode
   ・Version

手順1
 1.バージョン1.0のsetup.exeを実行
 2.バージョン1.1のsetup.exeを実行
 3.「別のバージョンが既にインストールされているため、
   インストールが続行できません」と表示され、インストールされない。

手順2
 1.バージョン1.0のsetup.exeを実行
 2.バージョン1.1のVisualStudio上のセットアッププロジェクトを
   右クリックすると表示される「インストール」を選択
 3.手順1の3が表示されず、正常にアップデートされる。

この違いの原因がわかりません。
アドバイス頂けないでしょうか?
引用返信 編集キー/
■102745 / inTopicNo.2)  Re[1]: インストーラ
□投稿者/ kiku (389回)-(2023/12/21(Thu) 15:57:42)
No102744 (kiku さん) に返信

手順2の動作を、setup.exeで実現したいことがやりたいことです。
つまり、古いバージョンがインストールされている状態で、
新しいバージョンをインストールした場合、
古いバージョンが自動的にアンインストールされた後に、
新しいバージョンがインストールされることを実現したいです。

引用返信 編集キー/
■102746 / inTopicNo.3)  Re[2]: インストーラ
□投稿者/ とっちゃん (801回)-(2023/12/21(Thu) 16:52:44)
No102745 (kiku さん) に返信
> ■No102744 (kiku さん) に返信
>
> 手順2の動作を、setup.exeで実現したいことがやりたいことです。
> つまり、古いバージョンがインストールされている状態で、
> 新しいバージョンをインストールした場合、
> 古いバージョンが自動的にアンインストールされた後に、
> 新しいバージョンがインストールされることを実現したいです。
>
Setup のバージョン(ProductVersion)は同じままということでしょうか?
もしそうなら、ファイルバージョン同様、Setupのバージョンも更新する必要があります。

VSセットアップはマイナーアップグレード(ProductCodeが同じでProductVersionが異なる)を
保証していないので、ProductVersionを変えた際は、ProductCodeも変更することをお勧めします。
なお、古いバージョンを残さない場合は、UpgradeCode は同じままにしておく必要があります。

引用返信 編集キー/
■102747 / inTopicNo.4)  Re[3]: インストーラ
□投稿者/ kiku (390回)-(2023/12/21(Thu) 17:33:21)
No102746 (とっちゃん さん) に返信
> ■No102745 (kiku さん) に返信
>>■No102744 (kiku さん) に返信
>>
> Setup のバージョン(ProductVersion)は同じままということでしょうか?
> もしそうなら、ファイルバージョン同様、Setupのバージョンも更新する必要があります。
>
> VSセットアップはマイナーアップグレード(ProductCodeが同じでProductVersionが異なる)を
> 保証していないので、ProductVersionを変えた際は、ProductCodeも変更することをお勧めします。
> なお、古いバージョンを残さない場合は、UpgradeCode は同じままにしておく必要があります。

ご回答頂きありがとうございます。
いつも助かっています。

テスト条件としては下記で実施しました。
 ・アプリのアセンブリバージョンを変更
 ・アプリのファイルバージョンを変更
 ・セットアッププロジェクトのRemovePreviousVersionsはTrueのまま変更しない
 ・セットアッププロジェクトのProductCodeは変更しない
 ・セットアッププロジェクトのUpgradeCodeは変更しない
 ・セットアッププロジェクトのVersionは変更しない
  ※このVersionは、おそらくとっちゃんさんの発言のProductVersionと理解しました。

ですので、「ProductCodeが同じでProductVersionが異なる」という
状況ではないと思いました。

とはいうもののProductCodeとProductVersionを変更し、
実験してみました。
下記が実験結果です。

1.古いバージョンが存在する状況で、新しいバージョンをインストールすると
  正常にアップデートができることを確認しました。

2.何もインストールされていない状況で、新しいバージョンをインストールし、
  その後、アンインストールを実施すると、
  ショートカットなどは削除されるものの、インストール先のフォルダが
  そのまま残るようになりました。
  ※ProductCodeとProductVersionを変更しない場合には、削除された。

上記1は良いのですが、上記2に不都合があるため、
その対策のため、
カスタム動作のアンインストール時に、VBScriptにてインストール先の
フォルダを削除する機能を追加したところ、下記のような実験結果になりました。

1.古いバージョンが存在する状況で、新しいバージョンをインストールすると
  アップデート動作はするものの、インストール先のフォルダがない状態になり、
  ショートカットなどは存在する状態になりました。
  ※どうやらアップデート終了後に、アンインストール時のみ動作するVBScriptが
   実行されてるような動作をするようです(セットアップのバグっぽいです)。

2.何もインストールされていない状況で、新しいバージョンをインストールし、
  その後、アンインストールを実施すると、
  ショートカットなどは削除され、インストール先のフォルダも削除され、
  期待した動作になることを確認しました。

上記1は不都合ですが、上記2は期待した動作です。

自動アップデート(自動的にアンインストールされる方法)は、
無理なのでしょうか?

引用返信 編集キー/
■102748 / inTopicNo.5)  Re[4]: インストーラ
□投稿者/ Azulean (1293回)-(2023/12/21(Thu) 22:39:18)
2023/12/21(Thu) 22:41:11 編集(投稿者)

No102747 (kiku さん) に返信
> 自動アップデート(自動的にアンインストールされる方法)は、
> 無理なのでしょうか?


そうしたいなら、メジャーアップグレード動作をするように変更してください。

参考:https://dobon.net/vb/dotnet/deployment/upgrades.html


現状は、Small Upgrade 相当なのだと思いますが、望むことは Major Upgrade のはずなので、適切に値を変えていってください。
引用返信 編集キー/
■102749 / inTopicNo.6)  Re[4]: インストーラ
□投稿者/ とっちゃん (802回)-(2023/12/21(Thu) 23:19:53)
No102747 (kiku さん) に返信
> とはいうもののProductCodeとProductVersionを変更し、
> 実験してみました。
> 下記が実験結果です。
>
> 1.古いバージョンが存在する状況で、新しいバージョンをインストールすると
>   正常にアップデートができることを確認しました。
>
> 2.何もインストールされていない状況で、新しいバージョンをインストールし、
>   その後、アンインストールを実施すると、
>   ショートカットなどは削除されるものの、インストール先のフォルダが
>   そのまま残るようになりました。
>   ※ProductCodeとProductVersionを変更しない場合には、削除された。
>
以前アンインストール後にフォルダが残ったままインストールしたなどはないでしょうか?

WindowsInstallerは、内部データとして作成したフォルダを覚えています。
アンインストールした状態で以下のレジストリキーに、インストール先がないかを
確認してみてください。

もし、フォルダがあったらその値を消した状態で、改めて2のテストを行ってみてください。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders


> 自動アップデート(自動的にアンインストールされる方法)は、
> 無理なのでしょうか?
>
そんなことはありません。

とはいえ、インストーラの作りの問題という可能性はあるので
どこに原因があるかは正直この情報だけではわかりません。

引用返信 編集キー/
■102750 / inTopicNo.7)  Re[5]: インストーラ
□投稿者/ kiku (391回)-(2023/12/22(Fri) 11:20:47)
No102749 (とっちゃん さん) に返信
> もし、フォルダがあったらその値を消した状態で、改めて2のテストを行ってみてください。
> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders

上記の情報に情報が残っていました。
その他関係のありそうな情報を削除し、
実験したところ、問題なく動作しました。
ありがとうございました。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ