web-dev-qa-db-ja.com

VistaでのWindowsインストーラーの昇格

Vistaでは、ドライバーやその他のシステムアイテムをインストールするインストーラーに昇格された権限が必要です。 Pointsecには、これらのインストーラーの1つがあり、インストーラー自体が標高を要求しないため、事前に標高を付与する必要があります。

このソフトウェアを複数のマシンにインストールしてUACを無効にする場合、ソフトウェアをインストールしてからUACを再度有効にするのは非常に面倒です。 UACを処理する方法が推奨されます。

インストーラーは、ネットワーク共有上のMSIパッケージです。共有には、インストーラーがインストールで見つけて使用することになっているインストールプロファイルもあります。これはUACがなくても正常に機能しますが、UACでこれを実行することはできませんでした。

私の主な問題は、プロセスを昇格させると、作業ディレクトリが失われるように見えることです。したがって、正しいパラメータと作業ディレクトリとしてのネットワーク共有を使用したmsiexecへのショートカットが機能している間(つまり、起動しますが、昇格がないためエラーが発生します)、このショートカットを「管理者として」実行すると、msiパッケージが見つからないと文句を言います。プロセスモニターは、msiexecがWindows\System32からパッケージを見つけようとしていることを示しています。パッケージへの完全なUNCパスを指定すると、インストーラーが起動しますが、プロファイルファイルが見つかりません。では、昇格自体を要求しないWindowsインストーラーを昇格する正しい方法は何ですか?

1
Mikko Rantanen

基本的に、不十分に設計されたインストーラーがあります。

プロパティテーブルのALLUSERSプロパティを1に設定して(Orcaを使用し、 WindowsインストーラSDK でOrca.msiを探します)、マシンごとのインストールを強制します。

この場合、インストーラーはインストールの途中で標高を要求し( これがUAC + MSIの動作方法です )、問題はないはずです。

4
saschabeaumont

1つのアプローチは、昇格したコマンドプロンプトを実行し、そこで作業ディレクトリを変更してから、そこからインストーラーを実行することです。昇格されたcmd.exeから起動されたものはすべて、それ自体が昇格されます。

0
Richard Gadsden

Raymond Chenのブログの投稿 コマンドプロンプトを上げると、開始ディレクトリが無視されるのはなぜですか? ここに関連している可能性があります。

また、標高ヒューリスティックのいくつかは非常に単純化されていることも知っています。ファイルの名前が「setup」または「install」の場合、昇格を要求します。現在、このソースが見つかりません。

高度に技術的な答えではありませんが、おそらくそれは役立つでしょう。

0