由于安装问题,目前我正在调查windows安装程序日志文件。
一个日志文件包含以下属性:MsiTrueAdminUser=1
那么AdminUser=1和MsiTrueAdminUser=1之间有什么区别呢?在我的开发人员电脑上,我只看到AdminUser=1,但没有看到MsiTrueAdminUser=1。需要哪个设置才能获得MsiTrueAdminUser=1?
日志文件中还有另一条语句(MsiTrueAdminUser=1):MSI_LUA:正在将MsiRunningElevated属性设置为1,因为安装已在提升的状态下运行。
在其他系统中,此行包含:MSI_LUA:将AdminUser属性设置为1,因为这是客户端或用户已经允许提升
我已经试着从msdn那里得到答案,但这个属性没有被记录下来。
我不确定这个属性是否有文档记录。我通常使用特权财产。
在任何情况下,我真的都不认为这两个问题真的是你的问题。我也有一些经验。你没有在寻找正确的东西,我想,你已经深入了。我建议放弃"MsiTrueAdminUser"搜索。此外,我和克里斯托弗也有同感。
发布基本问题行为可能会更成功。你知道UAC及其对MSI的影响吗?我会从那里开始。对于MSI来说,这并不重要,如果你是内置的"管理员"用户,或者只要你有以提升的权限启动MSI。
有两个常见的问题。我想,他们会解决90%以上的"高程"问题。第一个问题是,如果你已经用提升的权限启动了msi,或者等到msi对话框要求它时才启动,这会有所不同。如果可能,请尝试确保第一种情况,例如使用setup.exe引导程序。
第二个问题是理解,当msi使用哪些权限时。为了用一句话来简化它,它使用启动时的权限,但在操作InstallInitialize和InstallFinalize之间(这是进行真正更改的地方!),它使用本地系统帐户中的权限,无论启动时使用什么权限。(假设它是一个提升的,而不是每个用户的安装)
请记住,本地系统帐户的权限设置与管理员略有不同,因此您可能查找了错误的详细信息。
如果必须处理自定义操作,这两个问题会变得非常复杂。然后,有一个独特的MSI知识是必要的,以找出你的行动是从哪些权利开始的。大多数时候都有问题。
一般来说,在上述部分(InstallInitialze/InstallFinalize)之外的另一个位置的设置中使用提升的权限不是很好的风格。如果您是安装程序的作者,我首先建议您阅读有关最佳实践的内容。