ショートカットからアプリを起動するとセットアップが走ってしまうのを防ぐ方法

2021年5月25日

[toc]

問題点

・Windowsアプリケーションをショートカットから起動すると、セットアップが走ってしまう

・セットアップファイルが、アプリケーションをインストールしたときのフォルダに見つからないと、下記のようなエラーになり、最終的にアプリケーションを起動することさえ出来なくなる

「選択した機能は現在使用できないネットワークリソースにあります。」
↓キャンセル
「製品◯◯◯のインストールパッケージが見つかりませんでした。
 有効なコピーのインストールパッケージ '○○○.msi’ を使ってもう一度インストールしてください。」
↓OK
「インストール中に致命的なエラーが発生しました。」
(ここでアプリを起動できない)

問題が起こるケース

上記の問題は、インストールしたときとは別のユーザーでログインして、アプリケーションを起動したときに起こります。

でも、
・セットアップファイルをネットワーク上の共有フォルダに置き、何台ものPCにインストールすること
・セットアップファイルを後から移動/削除する(インストールパッケージが見つからなくなる)こと
は、よくあることですよね。

それなのに、インストールしたログインユーザーでしかアプリケーションを使えないとなったら、とても不便です。

原因

この問題の原因は、ショートカットが、"アドバタイズショートカット"という特殊なショートカットになっていることです。

試しに、ショートカットではなくexeを直接起動してみると、どのユーザーでログインしていても、ちゃんとアプリケーションが起動します。
exeから自分で手作業で作ったショートカットを使っても、起動します。

また、"プログラムのアンインストール" でアプリケーションの “インストール元" を表示してみると、インストールしたときにセットアップファイルを置いていたフォルダが記憶されていることが分かります。

Windows って知らぬ間に色んなことをやっているのですね…

アドバタイズショートカットとは

この “アドバタイズショートカット" とは、Microsoft Windows Installer の機能で、製品がインストールされているように見えても、実際のインストールは、製品が初めて起動されるときに実行されるようにしたり、ある機能を使おうとしたときに初めて追加インストールされるようにすることが可能になっています。

それはまあいいとしましょう。
実際、Microsoft Office 等で、ある機能を初めて使ったときに、セットアップが走ることには、特に不便を感じていません。

問題は、Microsoft Visual Studio(2005以降)で作成したセットアップでインストールすると出来上がるショートカットは、初期設定でアドバタイズショートカットになること、
また、この初期設定を変更出来ないことです。

解決法

仕方がないので、Windows InstallerデータベースのPropertyテーブルを変更することで、この問題に対処します。

1. Orca で msiファイルを開き、Tables で Property を選択
2. Tables メニューの Add Row… を選択
3. Property に “DISABLEADVTSHORTCUTS" を、Value に “1" を入力
4. OKボタンを押下
5. msi を保存

msiを編集する
msiを編集する

これにより、インストール時に自動的に作られる全てのショートカットが、通常のショートカットになります。

共有フォルダに置いたセットアップファイルを消しても、
どのユーザーでログインしていても、
大丈夫です。

参考図書
[DOBON.NET] アドバタイズショートカットではなく、普通のショートカットを作成する
[civil-design.net] Windows インストーラ講座 - アドバタイズショートカットをやめる方法
[ウィキペディア] Microsoft Windows Installer