我们组织中的某些用户在安装我们的产品时开始报告一个奇怪的错误(产品详细信息从屏幕截图中删除):
原始错误信息的英文是“安装目录必须位于本地驱动器上”。
将路径更改为没有空格的路径、备用根文件夹甚至机器上的其他物理驱动器都不会改变任何事情。安装程序仍然坚持认为该路径不是本地路径。
此安装程序使用 WIX 创建,并使用自定义操作创建流程中的具体步骤WixUIValidatePath
。之前已提交错误,这也表明错误与安装程序的限制有关(感谢 GitHub 上的 peterflynn 为我指明了方向)。
该问题仅发生在某些计算机上,并且似乎没有人在 Windows 10 中遇到此问题。我无法测试它是否发生在除 8.1 之外的其他 Windows 版本中,因为该版本和 Windows 10 是我们运行的唯一版本。
答案1
经过多次调试,我们将问题缩小到当前用户对临时文件夹的权限问题。不同的步骤在不同的计算机上解决了这个问题。在这里,我将从最不具侵入性到最具侵入性的方法列出修复方法:
- 确保安装程序以管理员身份运行
这是我们已经要求的,但有些用户往往会忘记这一点。这也是我在寻找解决方案时发现的最常见的解决方案。
确保这一点的最简单方法是按下WinKey
并键入cmd
以找到命令提示符,然后按CTRL + SHIFT + ENTER
以管理员身份打开命令提示符,然后导航到 msi 文件夹(有关导航说明,请参阅此链接),然后从那里运行它。 - 手动安装 KB3072630
我们的一些用户由于某种原因没有正确收到来自 MS 的此特别更新这似乎解决了问题!大多数用户的问题都在这里得到解决。 - 静默运行安装程序
该错误与 WIX UI 组件有关,因此静默运行 MSI 不会激活 UI 组件,因此也不会触发该错误。您可以按照上述步骤通过命令提示符执行此操作,但需要向 MSI 添加以下参数:
/qn+
感谢 GitHub 上的 Kr3m 提供此方法 - 在禁用 UI 检查的情况下运行安装程序
造成这一问题的 WIX UI 组件也可以被禁用。警告:这还将禁用安装路径上的任何健全性检查,并可能搞乱安装过程!这可以通过另一个命令行参数来完成:
WIXUI_DONTVALIDATEPATH="1"
感谢 GitHub 上的 peterflynn 提供此方法 - 禁用 LUA
唯一可以肯定的解决方法是完全禁用 LUA,这是我们某些环境的标准,以便能够使用旧版功能。完全禁用 LUA 需要手动更改注册表,因此请确保您知道自己在做什么,以及这样做的后果。您可以在 MS 论坛上找到说明。
我们没有测试过的一个方法,也可能解决这个问题,那就是在计算机上重新创建用户,因为我们认为这与用户自己的临时文件夹的访问权限有关。通过重新创建用户,可能会正确地重新创建它们。
答案2
尝试这个
打开cmd并执行此命令
msiexec /i “c:\AnyPath\YourInstaller.msi” WIXUI_DONTVALIDATEPATH="1"