Installation MSIUSEREALADMINDETECTION的十六进制表示是什么?

Installation MSIUSEREALADMINDETECTION的十六进制表示是什么?,installation,windows-installer,vdproj,Installation,Windows Installer,Vdproj,我需要以管理员而不是系统的身份运行安装程序,因为它需要使用windows身份验证连接到SQL server数据库。根据我的研究,我需要将MSIUSEREALADMINDETECTION属性设置为“1” 我认为这些安装程序属性有一个十六进制表示,如在 设置该值的脚本可用,但它不提供MSIUSEREALADMINDETECTION的十六进制表示形式。有人知道MSIUSEREALADMINDETECTION的十六进制表示吗?或者有比编辑安装程序后生成更好的解决方案?比编辑安装程序后生成更好的解决方案是

我需要以管理员而不是系统的身份运行安装程序,因为它需要使用windows身份验证连接到SQL server数据库。根据我的研究,我需要将MSIUSEREALADMINDETECTION属性设置为“1”

我认为这些安装程序属性有一个十六进制表示,如在


设置该值的脚本可用,但它不提供MSIUSEREALADMINDETECTION的十六进制表示形式。有人知道MSIUSEREALADMINDETECTION的十六进制表示吗?或者有比编辑安装程序后生成更好的解决方案?

比编辑安装程序后生成更好的解决方案是切换到另一个工具,例如Windows installer XML,它不会隐藏您的基本Windows installer功能

FWIW,当我必须进行后期构建清理时,我倾向于创建转换,然后在后期构建步骤中将转换应用于MSI。这样,随着需求的变化,我只需更新转换,而不必更改任何后期构建代码


至于MSIUSEREALADMINDETECTION属性的十六进制值。。。你想得太多了。是1。您提到的其他2个是自定义操作的位掩码列中使用的常量,这就是它们具有十六进制值的原因。。。这样就可以在逻辑上对它们进行“或”运算。

您可以在Windows SDK目录中找到计算机上此类标识符的定义。如果您没有提到VS版本,请开始在c:\ProgramFiles(x86)\microsoft SDK\windows\x.x\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")
此外:


从中可以看出MSIUSEREALADMINDETECTION不是由数字表示的,它是属性的名称。可以使用设置属性值。有关WIX中属性的更多信息是下一版本的计划。时间表不够有利,无法更改安装程序。我肯定是想得太多了。但我的问题是,ocra编辑器将MSIUSEREALADMINDETECTION显示为set,而我的安装程序直到作为系统运行感谢您的洞察力。这将非常有帮助。当我在ocra中打开安装程序时,MSIUSEREALADMINDETECTION设置为1。即使这样,安装程序也可以作为系统运行。
// 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