私の msi インストーラーは、UAC をオフにしないと Vista マシンにインストールできません。私のアプリケーションは私のクライアント、約 20 台のマシンに配布され、彼らは UAC をオフにしたくないので、UAC のときにユーザーの操作なしでインストーラーをサイレントに実行できるプロパティを設定する方法はありますか? 、有効になっている場合、ポップアップが表示されます
5 に答える
UAC について理解するために私が見つけた最良のリソースは、Robert Flamingsのブログです。彼は、Vista、UAC、および MSI がどのように相互作用するかを説明する一連の約 25 の投稿を持っています。
Vistaは、マシンごとのインストール (ALLUSERS=1) を実行している場合、InstallExecuteSequence に到達すると常にプロンプトを表示します。 EXE の実行時に昇格が必要であることを示すマニフェストを含む EXE。
Indigo Rose の商用ブートストラッパーを使用しています (これはスタンドアロン アプリですが、 MSI Factoryの一部としてのみ販売されています)。しかし、 NSISでクリエイティブになることができ、 Visual Studio のものを使用し、 Windows インストーラー SDKにもサンプルがあります。
Program Files のように、ユーザーがアクセス許可を持っていないフォルダーにインストールしているため、UAC がポップアップします。ユーザーのホーム ドライブのディレクトリにインストールしてみてください。Vista のホーム ドライバは c:\Users\Username で、そこにはローカル アプリケーション用のディレクトリ C:\Users\Username\AppData\Local\Apps があります。
インストールを 20 のクライアントにアドバタイズできます。アドバタイズされたフック (スタート メニューのショートカット、COM インターフェイス、ファイルの関連付けなど) をトリガーすると、プログラムは管理者権限でインストールされます。
管理者がパッケージをアドバタイズする方法の例を次に示します。
msiexec.exe -jm c:\\mypackage.msi
MSDN の記事: http://msdn.microsoft.com/en-us/library/aa367548(VS.85).aspx
これはあなたを助けるはずです。
編集:明確化のためのあなたの要求に応えて。タスク スケジュールを使用して、プロンプトを表示しないインストールの実行をスケジュールし、ユーザー/システム管理者にスクリプトからそのスケジューラーをインストールさせることができます (たとえば、次回ユーザーがログインしたときに実行するようにスケジュールできます)。 .
これが、Vista で確認ダイアログを回避する唯一の方法です (やりたくない UAC を無効にする以外)。
それが物事を明確にすることを願っています。
Vista/UAC は、インストールを完全にブロックするのではなく、インストールを続行するための確認を求める必要があります。MSI の名前は何ですか? 同様に、名前をsetup.msiに変更すると魔法のように機能しますか?