2011-12-27 82 views
4

我实施了我们产品的安装程序。 安装程序需要管理员权限,所以我用设置引导程序与清单文件(推荐here),以获得在Windows机器与UAC这些权限启用。安装和卸载进行得很顺利 - 用户被要求获得许可,安装程序会做它需要做的事情。安装更改不要求UAC权限

你要是跑不过控制面板→程序和功能选择“更改” *已安装的程序,错误时(自定义,从安装LaunchConditions),告诉安装程序需要管理员权限。而且在这种情况下,我无法找到任何方式要求获得许可--Windows只是运行MSI文件,并不知道任何有关所需权限的信息。

更为蹊跷的是修复功能 - 它要求的许可,但后来没有做安装过程中被允许一些行动,利用SetupBootstrapper。

我发现了一个类似的问题here

但所提出的解决方案是在我们的情况是不可接受的。

的改变功能的唯一解决方法是现在总是使用SetupBootstrapper和不使用程序和功能菜单,但不是很人性化,并强制用户保持安装在他/她的硬驾驶。

大家有更好的提醒?

PS:我用维克斯创建安装程序,所以这将是伟大听到WiX的解决方案,但我敢肯定,它不依赖于安装程序创建的语言,但仅限于MSI细节。

回答

4

什么行动都失败?如果它们是您添加到安装中的操作,请确保这些操作使用Impersonate="no"Execute="deferred"(或"commit""rollback")定义,并且它们在InstallInitializeInstallFinalize之间的某个位置进行排序。

+0

安装需要管理权限。而不是行动,但launchConditions失败 - 如果通过程序和功能运行,安装程序不会获得该权限 – 2011-12-28 15:36:05

+0

好的,那么在这种情况下失败的条件是什么?你为什么不能改变它?微软清楚地认为,在UAC系统上,特权应该几乎总是如此。 – 2011-12-28 22:40:25

+0

条件检查特权属性。当然,我可以改变它,但这不是解决问题的方法 - 它只会产生另一个问题。问题的根源在于,如果不使用清单文件和引导程序,msi将以非特权运行。并且通过程序和功能>更改/修复菜单来使用它们是不可能的。 – 2011-12-29 11:14:20