MSI卸载UAC提示



我们的数字签名MSI设置为仅按用户安装。这是有效的,并且不会像预期的那样给出UAC提示。文件按预期安装到AppData。问题是卸载或升级MSI需要通过UAC提示符进行管理员un/pass操作。什么特定的配置可能会导致这种情况,或者我可以查看什么来调试这种情况?

  • MSI是使用Visual Studio的安装项目创建的
  • 目标操作系统是XP或7,其中7是理想目标

哪个操作系统?您是如何按用户安装的,尤其是如何使ALLUSERS属性在安装和卸载时都为空的?您确定没有自定义操作(例如来自installshield)设置ALLUSERS吗。也许可以搜索msi表以确保未设置此属性。

我只是试着安装和卸载这样一个简单的测试msi,它在没有UAC的Win7(64,SP1)下运行良好。所以我至少可以证明这是可能的:

安装:
msiexec/i testmsi.msi/qb ALLUSERS="

卸载:
msiexec/x testmsi.msi/qb ALLUSERS="

(如果在没有该命令行参数的msi中根本没有设置ALLUSERS,则工作原理相同,与用于卸载的产品代码相同。)

因此,满足了以下主要先决条件:
-我的安装路径已设置为适当的AppData路径
-没有在HKLM上创建注册表项,而没有在其他资源上创建
-ALLUSERS为空或未定义
-摘要信息中未设置UAC标志
-没有需要提升权限的自定义操作

我还没有尝试过签约MSI,但我认为这没有什么不同。

这意味着,如果不查看日志文件或msi本身的适当行,这似乎不会更好。

最新更新