3

社内で使用するソフトウェアのインストーラーを構成しようとしています。

インストーラーは SMS 経由でターゲット マシンにプッシュされ、次の手順を実行します。

  1. 現在実行中のアプリのインスタンスをすべて終了します (アプリはユーティリティであるため、ユーザーへの影響はありません)。
  2. 以前のバージョンを削除します。
  3. 更新されたバージョンをインストールします。

ステップ 3 が完了したら、インストールされた実行可能ファイルを (SMS ジョブを実行するシステム アカウントではなく、現在ログインしているユーザーとして) 起動します。

次のようにカスタムアクションを追加しようとしました:

<CustomAction Id="Relaunch" Impersonate="yes" Return="asyncNoWait" FileKey="AppExeFile" Execute="commit" ExeCommand="acm" />

そして、InstallExecuteSequence要素には次のものがあります。

<Custom Action="Relaunch" OnExit="success" />

ただし、SMS ジョブとして、または管理者として実行しようとしても、何も起こりません (たとえば、アプリは再起動されません)。

助言がありますか?

4

2 に答える 2

0

私が思いついた解決策は、ログイン時にRunレジストリキーを使用してユーティリティを起動し、現在のユーザーが「SYSTEM」の場合にインストール中にユーティリティが起動しないようにすることです。これは特にSMSではなく、AD/GPOを使用しています。展開。ただし、一部のお客様はSMSを使用しており、これが彼らのために機能したソリューションでした。

Vista / Server 2008 UACでの同様の問題、私が思いついた唯一の信頼できる解決策は、ユーザーがログインし直したときにユーティリティが正しいユーザーコンテキストで起動されるように再起動をスケジュールすることです。

私はかなりの調査を行い、MSIのドキュメントを調べましたが、別のユーザーとしてバックグラウンドユーティリティを起動するための特権を下げることは実際には不可能のようです。

于 2009-01-03T02:18:10.210 に答える
0

残念ながら、これは不可能のようです。コードで必要なことを何らかの方法で行う MSI 用の拡張機能を作成するオプションがあると思います。

私たちが決定したのは、SMS を使用してチェーン パッケージを送信することです。このパッケージは、実行中のインストーラーに最初に依存する、アプリケーションを実行する主要なパッケージです。

これが他の誰かに役立つことを願っています:)

于 2009-01-13T02:33:32.770 に答える