我是一名游戏开发人员,为所有类型的 Windows(WinXP、Vista、Win7、Win8 包括 X64 变体)发布桌面 MMO 游戏,其受众范围从精通技术到非技术精通。
该游戏需要能够在任何时候定期自我更新,这意味着它需要在客户的机器上安装和配置并具有适当的 UAC 权限,以便它可以更新任何和所有已安装的文件,包括可执行文件本身。
我创建了一个 NSIS 安装程序,该安装程序配置为在没有管理员权限(RequestExecutionLevel 用户)的情况下运行,并将游戏(默认情况下)安装到用户的 $LOCALAPPDATA 以便该游戏不需要提升权限即可执行。我为我的游戏安装的可执行文件是用一个清单构建的,该清单通知 Windows 它不需要提升权限(这是为了避免每次尝试玩游戏时出现丑陋的盾牌图标和管理员提示)。
我遇到的原始问题如下:
- 客户正在下载 NSIS 安装程序,然后将其复制到特权位置,并且安装程序在没有任何提示它未运行的情况下静默运行失败,因为它在没有管理员权限的情况下运行。
作为一种临时解决方法,我重新构建了 NSIS 安装程序以使用管理员权限运行,但是,这可能会引发另一个问题,即客户将默认安装目录更改为特权目录,然后游戏本身将无法执行。作为该问题的临时解决方法,我禁用了更改默认安装位置的功能,直到我想出一个完整的解决方案。
我能想到的一个理想的解决方案是让 NSIS 正常运行,检测它是否需要管理员权限并在此时提示,然后禁止玩家安装到提升的特权位置。我对 NSIS 的经验不足,不知道这是否可能。
任何指导将不胜感激!