nsis - 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 位置时有效。
关于为什么会发生这种情况的任何提示?
解决方案
初步调查应该是;$Instdir 是否设置为安装程序中的正确路径?
如果您可以将 $Instdir 写入客户端计算机上的日志文件,这将有助于缩小范围。
不正确的 $Instdir 的常见来源是InstallDirRegKey
与不想要的目录中的现有较旧(可能是部分)安装结合使用。
如果您的 $Instdir 仍然是 c:\users... ,Section
那么您需要查看 Windows,而不是 NSIS。告诉他们查看安装程序 .exe 的文件属性。它是否应用了任何兼容性选项?他们是否通过组策略应用了其他兼容性填充程序?
如果他们可以运行 Process Monitor 并向您发送 pml 日志文件,这也可能会有所帮助。这应该显示是否从注册表读取安装目录以及在创建文件和目录时传递给内核的实际路径。
最后,确保你RequestExecutionLevel user
的脚本中有避免 UAC 干扰。
推荐阅读
- css - 背景图像更改为外部图像链接不起作用
- javascript - 将外部 JS & CSS 转换为 HTML
- html - 如何从 Powershell 中的 ConvertTo-HTML -property 命令的输出中删除文本?
- gitlab - 继承 Gitlab 预定义的变量
- azure - 是否可以与 MS Teams 中的 Bot 开始对话?
- angular - 使用 switchMap 中的 observable 将消息添加到 firestore
- flutter - 如何在颤动中使用 book_outlined 图标?
- javascript - 如何在 p5.js 中将碰撞碰撞盒添加到矩形(和我的播放器)?
- reactjs - 如何通过 WordPress Rest API 从 React/Axios 创建新帖子
- java - 在 Android 中获取 WiFi 代理设置:ConnectivityManager.getDefaultProxy() 始终为空