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

Mar*_*rek 7 installer privileges windows-installer uac

我有一个应用程序,将部署为MSI包(在WiX中编写).

我决定是否根据安装程序的要求指定elevatedlimited授予权限.

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

现在的问题是:

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

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

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

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

Mic*_*man 6

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

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