パッケージのガイドライン
Windows Vista の ユーザー アカウント制御 (UAC) によりインストール中の権限が制限されるため、Windows インストーラー パッケージの開発者は、インストールによって常にシステムのすべての部分にアクセスできるとは想定しないでください。
グループ ポリシー を介して標準ユーザーに正常に展開できるインストーラー パッケージは、ほとんどの場合、Windows Vista の UAC でも機能します。 InstallUISequence テーブル に LaunchConditions アクション が含まれている場合、または LaunchCondition テーブル に Privileged プロパティ に基づく条件が含まれている場合は、例外が発生する可能性があります。 したがって、Windows インストーラー パッケージ開発者は、パッケージが UAC および Windows Vista で動作することを保証するために、次のガイドラインに従う必要があります。
- InstallUISequence テーブル のアクションに インストール コンテキスト 条件を含める場合は、 特権プロパティ に基づく条件ステートメントを使用します。 AdminUser プロパティに基づく条件を使用しないでください。
- インストール起動条件にインストール コンテキストを含める場合は、 InstallExecuteSequence テーブル の カスタム アクション タイプ 19 を使用し、カスタム アクションを >Privileged プロパティ の条件付きにします。 AdminUser プロパティ または Privileged プロパティに基づく条件を持つ LaunchCondition テーブル のアクションを使用しないでください。
- システム構成を読み取ったり変更したりするには、 InstallExecuteSequence テーブル の 遅延実行カスタム アクション を使用します。 システム構成を変更するために、 InstallUISequence テーブル 内の即時実行カスタム アクションを使用しないでください。
- ユーザー固有ではないシステムの部分を変更するには、 InstallExecuteSequence テーブル の遅延カスタム アクションを使用します。 カスタム アクション タイプに msidbCustomActionTypeNoImpersonate ビットを含める必要があります。
- パッケージの昇格が必要になる可能性があることを示すには、 Word Count Summary プロパティの値からビット 3 を省略します。 このパッケージをインストールするために昇格された権限が必要ない場合を除いて、このビットを含めないでください。
- アプリケーションの要求された実行レベルを含むマニフェストを含めます。
- 元のパッケージの MsiPatchCertificate テーブルに証明書を含め、すべてのパッチを同じ証明書で署名します。
- Windows インストーラー パッケージをインストールするために昇格された権限が必要な場合、パッケージの作成者は、インストールの開始に使用される PushButton コントロール に ElevationShield 属性を含める必要があります。 これにより、ボタンをクリックすると、インストールを続行するために管理者の承認を要求する UAC ダイアログ ボックスが表示されることがユーザーに警告されます。
- MSIDEPLOYMENTCOMPLIANT プロパティを 1 に設定して、パッケージが Windows Vista の UAC に準拠するように作成およびテストされていることを Windows インストーラーに示します。 このプロパティが設定されていない場合、インストーラーはパッケージが UAC に準拠しているかどうかを判断します。
グループ ポリシー 以外では、Windows XP で次の UAC 準拠チェックを使用できます。
グループポリシー外でUAC準拠を確認するには
管理者としてコンピューターにログオンします。
マシンごとのインストール用にパッケージをアドバタイズします。
msiexec /jm package.msi
コンピュータからログオフします。
標準ユーザーとしてコンピューターにログオンします。
宣伝されているパッケージのインストールを試みます:
msiexec /i package.msi
ほとんどの場合、インストールが成功すれば、パッケージは UAC に準拠します。
パッケージ内の MSIDEPLOYMENTCOMPLIANT プロパティを 1 に設定します。
Windows Vista を使用してパッケージが正しくインストールされているかどうかをテストします。