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

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

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

Re[4]: VS作成インストーラで最新版に更新すると前のピン留めが無効に


(過去ログ 144 を表示中)

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

■84362 / inTopicNo.1)  VS作成インストーラで最新版に更新すると前のピン留めが無効に
  
□投稿者/ nyarome (1回)-(2017/06/21(Wed) 13:37:33)

分類:[.NET 全般] 

VS2013のセットアッププロジェクトでインストーラーを作成しています。
(インストールするソフトはVB2013で作成しています。)

このセットアッププロジェクトでは、RemovePreviousVersionsプロパティをTrueにして
インストール済みの旧バージョンを自動的に削除するようにしています。

ただ、あるユーザより、

「旧Ver.ソフトをタスクバーにピン留めした状態で新Ver.をインストールすると
せっかくのピン留めが無効になってしまう」

という指摘がありました。

新Ver.をインストールしても、旧Ver.で設定したピン留がそのまま有効にする方法は
ないのでしょうか?

なお、このソフトとインストーラは元々VS2008で作成したもので、
BackwardCompatibleIDGenerationプロパティをTrueにしています。
また、このセットアッププロジェクトではカスタム動作を行っています。
その他必要な情報があれば提示しますので、お知らせください。

何卒よろしくお願い申し上げます。
引用返信 編集キー/
■84367 / inTopicNo.2)  Re[1]: VS作成インストーラで最新版に更新すると前のピン留めが無効に
□投稿者/ とっちゃん (441回)-(2017/06/21(Wed) 16:30:59)
No84362 (nyarome さん) に返信
> 「旧Ver.ソフトをタスクバーにピン留めした状態で新Ver.をインストールすると
> せっかくのピン留めが無効になってしまう」
>
> という指摘がありました。
>
> 新Ver.をインストールしても、旧Ver.で設定したピン留がそのまま有効にする方法は
> ないのでしょうか?
>
実行環境(ユーザーさんの環境)のOSはなんでしょうか?
Windows 10 の場合、どのアップデートなのかはかなり重要です。

特にAnniversaryUpdate で、Desktop Bridge が導入されてから
msi の置き去り度はかなり顕著に出ています。
特にアナウンスなどがあったことはないと思いますが
デスクトップなどにアイコンを貼った場合、アイコンの右上に向き合う矢印マークが無意味についていたり
そもそも Windows Installer 自身が Windows 10 を認識していない(VersionNT は 8.1 を表す数値)などなど。。。

目に見える(開発サイドであればすぐにわかるような何か)のレベルでも置き去り感は激しいです。




> なお、このソフトとインストーラは元々VS2008で作成したもので、
> BackwardCompatibleIDGenerationプロパティをTrueにしています。

こっちは、ComponentIdの生成アルゴリズムの互換性維持フラグみたいですね。
一度アンインストールしてしまえばどっちでもOKみたいですが、そういうわけにはいかないですよねw

> また、このセットアッププロジェクトではカスタム動作を行っています。
> その他必要な情報があれば提示しますので、お知らせください。
>
こちらは関係ないと思います。



さて本題。

VSのセットアップは Major Upgrade といって、ProductCode を変更して新バージョンを別製品としてインストールし
旧バージョンを必要に応じてアンインストールするという形になっています。
(そのために RemovePreviousVersions があります)

この形の場合、MSI的には新旧の別製品という位置づけになります。
具体的には、ショートカットがさす実行ファイルへの参照方法が変わります(実行パスの含まれない形のショートカットの場合)。

ピン止めのやり方にもよりますが、ショートカットの右メニューでピン止めした場合ピン止めするオブジェクトは
内部的に ProductCode + ComponentId という情報になっているため、バージョンアップで値が変わります。
もし、この情報を基準にピン止め情報を持っているとすると、ピンを指していたものが無くなってしまうことになります。


タスクバーへのピン止めであれば、起動している状態でタスクバーにピン止めするともしかしたら解除されないかもしれません。

または、DISABLEADVTSHORTCUTS プロパティをセットして、ショートカットファイルの内容をファイルパスにすると
うまくいくかもしれません。

ピン止めとの関連付けについてはほとんど情報が流れていないのでこれでうまくいけば。。。レベルですが
試してみてはいかがでしょうか。

引用返信 編集キー/
■84368 / inTopicNo.3)  Re[2]: VS作成インストーラで最新版に更新すると前のピン留めが無効に
□投稿者/ nyarome (2回)-(2017/06/21(Wed) 18:06:49)
とっちゃん様、レスありがとうございました。

> または、DISABLEADVTSHORTCUTS プロパティをセットして、ショートカットファイルの内容をファイルパスにすると
> うまくいくかもしれません。

「DISABLEADVTSHORTCUTS」が良く分からなかったのでググってみると、
「アドバタイズショートカット」というキーワードが出てきました。
(これについては不勉強でした。)

アドバタイズショートカットではなく、普通のショートカットを作成する
http://dobon.net/vb/dotnet/deployment/disableadvtshortcuts.html

とりあえず、「普通のショートカット」での振る舞いを確認したく、
実際の実行ファイルの「普通のショートカット」を作成し、
これを用いてタスクバーのピン留めをやってみたところ、
新Ver.をインストールした後もピン留がそのまま有効でした。
(もちろん、インストール先が新旧で同じという条件がありますが。)

ここで新たな質問なのですが、
インストーラーで「アドバタイズショートカット」ではなく
「普通のショートカット」を作成するようにした場合のデメリットは何でしょうか?

何卒よろしくお願い申し上げます。
引用返信 編集キー/
■84369 / inTopicNo.4)  Re[3]: VS作成インストーラで最新版に更新すると前のピン留めが無効に
□投稿者/ とっちゃん (442回)-(2017/06/22(Thu) 10:50:07)
No84368 (nyarome さん) に返信

> ここで新たな質問なのですが、
> インストーラーで「アドバタイズショートカット」ではなく
> 「普通のショートカット」を作成するようにした場合のデメリットは何でしょうか?
>
デメリットは、「アドバタイズインストールができない」です。
ですが、そもそもアドバタイズインストールとは?という部分からになるので、今は考慮不要です。

アドバタイズインストールについては
https://msdn.microsoft.com/en-us/library/aa367548(v=vs.85).aspx

がリファレンスになります。

ごく簡単に説明すると、カスタムインストールでインストールしなかった機能(Feature)を
その機能の初回呼び出し時にインストールするという特殊なカスタムインストール機能
となります。

VSのセットアッププロジェクトはカスタムインストールの機能自体が存在しないので
アドバタイズインストールもできません。

引用返信 編集キー/
■84370 / inTopicNo.5)  Re[4]: VS作成インストーラで最新版に更新すると前のピン留めが無効に
□投稿者/ nyarome (3回)-(2017/06/22(Thu) 12:24:38)
とっちゃん様、レスありがとうございました。

いずれにしろ、アドバタイズインストールの恩恵もないので、
「普通のショートカット」を作成するよう、
インストーラー側で対応しようと思います。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -