トップ回答者
Vistaへのインストール時の「管理者として実行」について

質問
-
既存のアプリケーションのVista環境での動作試験を行っています。
インストーラはInstallShield9.0で作成されたものです。
インストール時に「Setup.exe」を実行するときに、管理者権限で行うには
1.Setup.exeを右クリック → 管理者として実行
2.Setup.exeを右クリック → プロパティの互換性タブ → 管理者としてこのプログラムを実行する
これら2つの方法がありますが、2の方法でインストールした場合
レジストリ登録のエラーダイアログが表示されます。
1の方法では表示されません。
どちらも同じ意味だと思っていたのですが、違うのでしょうか?
常に管理者として実行するプログラムの場合に
毎回1の方法を行う手間を省くために2のような方法が存在するものと解釈してたのですが。
ちなみにエラーダイアログの内容は以下のようなものです
1.C:\Program Files\Common Files\Microsoft Shared\dao\dao350.dll
OLEレジストリへのアクセスエラーです
2.C:\Windows\system32\OLEAUT32.DLL
アクセスが拒否されました
3.C:\Windows\system32\STDOLE32.TLB
OLEレジストリへのアクセスエラーです
このような現象が起こる原因について
どなたかお分かりになる方がいらっしゃいましたら、ご回答お願いします。
回答
-
Ptan3 さんからの引用 インストール時に「Setup.exe」を実行するときに、管理者権限で行うには
1.Setup.exeを右クリック → 管理者として実行
2.Setup.exeを右クリック → プロパティの互換性タブ → 管理者としてこのプログラムを実行する
これら2つの方法がありますが、
どちらも、好ましい方法ではありません。
Installer にも requireAdministrator がついた manifest をつけてやる (埋め込む) のが正解です。
それ以外の方法は、installer をいじることができない場合のみ実施する方法です。
他にも、"setup" とか "update" 等の installer の自動検出に引っかかる名前を付けてやるという手段もあります。
なお、互換性 tab の設定と 「管理者として実行」 で access token が変化するか?検証してみましたが変わっていませんでした。
Installer ということなので、同じ端末で何度も実行することはまずないと推測されます。
互換性 tab から設定した installer は local ではなく、 network 上に置かれているのではないですか?
-
休み明けの未読消化ですっかりコメントつけ忘れてた...
IS9 ということなので、そもそも Vista には対応していません。
ま、それについては良いとしても...プロジェクトの種類が基本MSIではないのであれば
ここで聞いても、参考になる回答は得られないように思います。
それと、いくつか気になる点があります。
DAO3.5 は、相当古いコンポーネントですが、Vistaにインストールって可能なのでしょうか?
ま、こちらは仮にインストールに問題がないとするとして...
残り二つのモジュールで登録エラーが出てますが、Vistaでこれらを登録したりインストールしたり
ということは正しくインストーラを作っていれば発生することはありません。
なので、昇格以前にインストーラの構成のどこかに大きな誤りがあると思われます。
まずはそのあたりを見直してみてはいかがでしょうか。
また、InstallShieldについてはユーザーMLがあります。
掲示板ではなく、メーリングリストですので、使い勝手等は若干異なりますが、
もしかすると、そちらで聞いたほうが良いかもしれません。
・InstallShield メーリングリスト
すべての返信
-
Ptan3 さんからの引用 インストール時に「Setup.exe」を実行するときに、管理者権限で行うには
1.Setup.exeを右クリック → 管理者として実行
2.Setup.exeを右クリック → プロパティの互換性タブ → 管理者としてこのプログラムを実行する
これら2つの方法がありますが、
どちらも、好ましい方法ではありません。
Installer にも requireAdministrator がついた manifest をつけてやる (埋め込む) のが正解です。
それ以外の方法は、installer をいじることができない場合のみ実施する方法です。
他にも、"setup" とか "update" 等の installer の自動検出に引っかかる名前を付けてやるという手段もあります。
なお、互換性 tab の設定と 「管理者として実行」 で access token が変化するか?検証してみましたが変わっていませんでした。
Installer ということなので、同じ端末で何度も実行することはまずないと推測されます。
互換性 tab から設定した installer は local ではなく、 network 上に置かれているのではないですか?
-
回答ありがとうございます。
setup等の名前をつけることで、installerとして自動検出されることは知っていますが
本当に自動検出されているのかどうかがわからず
最も確実にインストールできる方法を模索しているところです。
ユーザー様の操作によってインストールの結果が変わるようなことがないようにしたいのですが
マニフェストを使用するのが最適でしょうか?
マニフェストや互換性タブ、ファイル名の付け方など、インストール時にトークンを昇格する方法はいくつかありますが
まぁどれでも良いのかな、くらいに考えてました。
これらを併用したりすると結果が変わったりするものでしょうか?
ちなみに、試験環境は毎回同じPCを使い、インストーラもローカルに置いて実行しています。
インストールの度にドライブはフォーマットしています。
何度か試してみましたが、やはり互換性タブで設定した場合と「管理者として実行」ではダイアログ有無の差があります。
-
すでに書きましたが、対象の application を修正できるのであれば、manifest を埋め込むのが唯一の選択肢だと認識された方がよいです。
Installer の自動検出機能はすでに作成されていて簡単に変更できないもので、できるだけ user に負担をかけないように自動検出しましょうというあくまでも互換性のために用意されたしくみです。
それから、「管理者として実行」や互換性に関しては、Vista に正式に対応していないけどどうしてもその application を利用したいという user のために用意されたしくみです。
Manifest の埋め込み以外は、開発者のために用意された機能ではなく、user のために用意された機能なので、開発者はこれを積極的に利用してはいけません。
-
休み明けの未読消化ですっかりコメントつけ忘れてた...
IS9 ということなので、そもそも Vista には対応していません。
ま、それについては良いとしても...プロジェクトの種類が基本MSIではないのであれば
ここで聞いても、参考になる回答は得られないように思います。
それと、いくつか気になる点があります。
DAO3.5 は、相当古いコンポーネントですが、Vistaにインストールって可能なのでしょうか?
ま、こちらは仮にインストールに問題がないとするとして...
残り二つのモジュールで登録エラーが出てますが、Vistaでこれらを登録したりインストールしたり
ということは正しくインストーラを作っていれば発生することはありません。
なので、昇格以前にインストーラの構成のどこかに大きな誤りがあると思われます。
まずはそのあたりを見直してみてはいかがでしょうか。
また、InstallShieldについてはユーザーMLがあります。
掲示板ではなく、メーリングリストですので、使い勝手等は若干異なりますが、
もしかすると、そちらで聞いたほうが良いかもしれません。
・InstallShield メーリングリスト