首页 > 解决方案 > NSIS错误安装位置

问题描述

我正在失去理智,试图弄清楚为什么我的设置在目标设备上的行为不同

Nsis 版本:3.04 我的机器:Win 10 64bit Build 17763 客户端机器:Win 10 32bit Build 10586

我们无法控制客户端机器,因为它们是用于学校的,无论如何我们都必须让应用程序在他们的设备上准确运行,比如在我们的笔记本电脑上。

InstallDir "$LOCALAPPDATA\Programs\OurApp

在我们的机器上,这使得安装程序安装到

C:\users\username\local\appdata\programs\OurApp

但在客户端机器上它安装到

C:\Program 文件 (x86)\OurApp

我当然不明白为什么会这样。对我们的指示是用户不应轻易访问数据,除非通过我们使用 .net 构建的应用程序。然后,当应用程序被卸载时,它应该清除它创建的数据。这仅在应用程序安装在 appdata 位置时有效。

关于为什么会发生这种情况的任何提示?

标签: nsis

解决方案


初步调查应该是;$Instdir 是否设置为安装程序中的正确路径?

如果您可以将 $Instdir 写入客户端计算机上的日志文件,这将有助于缩小范围。

不正确的 $Instdir 的常见来源是InstallDirRegKey与不想要的目录中的现有较旧(可能是部分)安装结合使用。

如果您的 $Instdir 仍然是 c:\users... ,Section那么您需要查看 Windows,而不是 NSIS。告诉他们查看安装程序 .exe 的文件属性。它是否应用了任何兼容性选项?他们是否通过组策略应用了其他兼容性填充程序?

如果他们可以运行 Process Monitor 并向您发送 pml 日志文件,这也可能会有所帮助。这应该显示是否从注册表读取安装目录以及在创建文件和目录时传递给内核的实际路径。

最后,确保你RequestExecutionLevel user的脚本中有避免 UAC 干扰。


推荐阅读