0

Windows認証を使用してSQLサーバーデータベースに接続する必要があるため、システムではなく管理者としてインストーラーを実行する必要があります。私の調査に基づいて、MSIUSEREALADMINDETECTION プロパティを「1」に設定する必要があります。

http://blogs.msdn.com/b/astebner/archive/2007/05/28/2958062.aspxのブログに示されているように、これらのインストーラー プロパティは 16 進数で表現されていると思います。

var msidbCustomActionTypeInScript = 0x00000400;
var msidbCustomActionTypeNoImpersonate = 0x00000800

値を設定するスクリプトはこちらから入手できますが、MSIUSEREALADMINDETECTION の 16 進数表現は提供されません。MSIUSEREALADMINDETECTION の 16 進表現を知っている人はいますか? または、ビルド後のインストーラーを編集するよりも良い解決策がありますか?

4

2 に答える 2

1

これらの種類の識別子の定義は、マシンの Windows SDK ディレクトリにあります。VS のバージョンについて言及していませんでした。c:\program files (x86)\microsoft sdks\windows\xx\include を調べてください。VS2012+ をお持ちの場合は、Windows キットから探し始めてください。MsiDefs.h ファイルは興味深いものです。を含む:

// properties related to UAC
#define IPROPNAME_MSI_UAC_DEPLOYMENT_COMPLIANT TEXT("MSIDEPLOYMENTCOMPLIANT")
#define IPROPNAME_MSI_USE_REAL_ADMIN_DETECTION TEXT("MSIUSEREALADMINDETECTION")

また:

// execution scheduling flags               // default is execute whenever sequenced
msidbCustomActionTypeFirstSequence    = 0x00000100,  // skip if UI sequence already run
msidbCustomActionTypeOncePerProcess   = 0x00000200,  // skip if UI sequence already run in same process
msidbCustomActionTypeClientRepeat     = 0x00000300,  // run on client only if UI already run on client
msidbCustomActionTypeInScript         = 0x00000400,  // queue for execution within script
msidbCustomActionTypeRollback         = 0x00000100,  // in conjunction with InScript: queue in Rollback script
msidbCustomActionTypeCommit           = 0x00000200,  // in conjunction with InScript: run Commit ops from script on success

// security context flag, default to impersonate as user, valid only if InScript
msidbCustomActionTypeNoImpersonate    = 0x00000800,  // no impersonation, run in system context

このことから、MSIUSEREALADMINDETECTION は数値ではなく、プロパティの名前であることがわかります。MsiSetProperty()でプロパティ値を設定します。この MSDN セクションのプロパティの詳細

于 2013-08-10T12:46:06.930 に答える
1

インストーラーのポストビルドを編集するよりも優れた解決策は、Windows インストーラー XML などの別のツールに切り替えることです。これにより、基盤となる Windows インストーラーの機能が見えなくなります。

FWIW、ビルド後のクリーンアップを行う必要がある場合、変換を作成し、ビルド後のステップで変換を MSI に適用する傾向があります。そうすれば、要件が変更されても、変換を更新するだけで、ビルド後のコードを変更する必要はありません。

MSIUSEREAALADMINDETECTION プロパティの 16 進値に関する限り、考えすぎです。それは1です。あなたが言及した他の2つは、カスタムアクションのビットマスク列で使用される定数であり、それが16進値を持つ理由です...論理的に論理和できるようにします。

于 2013-08-10T10:36:17.357 に答える