是否可以安装到具有有限权限的程序文件中?

时间:2010-05-06 07:47:32

标签: installer windows-installer uac privileges

我有一个将被部署为MSI包的应用程序(在WiX中创作)。

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

除默认安装位置(位于Program Files下)外,应用程序不包含任何需要提升权限的内容。

现在出现问题:

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

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

我可以将默认安装位置设置为例如C:\公司名称\ Program \,但这对我来说似乎是非标准的,大多数用户可能不喜欢这样(它们可能用于安装到Program Files中)。

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

使用普通用户权限运行软件可能更为重要 - 我发现你提到的这不是问题。

要求管理员安装某些东西没有错。

要么,出于安全原因,用户将自行获取详细信息,或者软件将由公司的IT部门安装。

答案 2 :(得分:-2)

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

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