2010-05-06 79 views
7

我有一个应用程序将部署为MSI包(在WiX中创作)。是否可以使用有限权限安装到Program Files中?

我决定是否指定安装程序所需的elevatedlimited权限。

除了程序文件下的默认安装位置,该应用程序不包括任何需要提升特权的内容。

现在的问题:

  • 如果我指定提升权限,则用户通过UAC在安装过程中的管理员密码提示。这不是必需的,并防止安装非管理员用户。

  • 如果我指定有限的权限,则向用户显示一个对话框,选择与Program Files是默认安装位置。如果他们不更改安装位置(95%的最终用户可能不会),则安装程序将失败并显示一条消息,告诉他们应该联系管理员或以管理员身份运行该应用程序。如果他们以管理员身份启动安装程序,那么他们可以毫无问题地安装到Program Files中 - 但大多数用户不会知道如何以管理员身份启动安装程序。

我可以将默认安装位置设置为例如C:\ Company name \ Program \,但这对我来说似乎并不标准,大多数用户不会喜欢这样(他们可能习惯于安装到Program Files中)。

如何解决在有限的用户帐户下安装应用程序的问题?

回答

6

您建议的替代位置,直接离开C驱动器,可能还需要提升权限。在Windows 7之前,我建议使用早期的自定义操作来更改有限安装的默认位置。将它从Privileged(或可能是AdminUser)属性中除去,验证您是否需要为您的案例设置MSIUSEREALADMINDETECTION,并使用类似[LocalAppDataFolder]Company\Product之类的内容。不幸的是,这种方法会导致所有用户难以安装的软件包,因为您必须预先升级,并且在有限的情况下,他们仍然可以选择需要提升的目标位置。他们必须预先提升,因为包裹必须标记为不提升。

如果您只能定位Windows 7及更高版本,则可以有条件地设置MSIINSTALLPERUSER以覆盖安装位置和高度要求,而是按用户安装。在这种情况下,可以询问用户是要为所有用户安装(需要提升)还是仅为他自己安装。该包可标记为标高,并且设置MSIINSTALLPERUSER将覆盖该标记并跳过UAC提示。

+1

不,替代位置不需要提升特权。我目前默认安装到C:\ Company name \ Product中,并且MSI安装程序使用有限权限构建,没有UAC出现,也没有任何错误对话框。 – Marek 2010-05-07 11:26:00

+0

这听起来像是一个自定义环境,但如果您知道它将安装在您的产品的任何位置,那很好。答案的其余部分适用;仅仅忽略有限的特权位置建议。 – 2010-05-09 14:48:37

-2

以管理员身份运行命令提示符(cmd)。

然后使用msiexec命令执行msi文件。

+0

我不能要求最终用户这样做 – Marek 2010-05-08 08:44:00

+0

你可以要求用户这样做...至于安装任何软件应具有管理员权限。所以他们要求他这样做没有错。或者你可以让用户使用管理员凭证登录,然后安装软件 – 2010-05-09 07:59:51

3

您的软件以普通的用户权限运行可能更重要 - 我看到您提到的这不是问题。

要求管理员权限安装某些东西没有任何错误。

因为出于安全原因,用户将拥有自己的详细信息,或者该软件将由其公司的IT部门安装。

相关问题