【问题标题】:NSIS faulty installation locationNSIS错误安装位置
【发布时间】:2020-03-12 01:51:33
【问题描述】:

我想弄清楚为什么我的设置在目标设备上的行为不同

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 Files (x86)\OurApp

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

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

【问题讨论】:

    标签: nsis


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 2018-07-16
      • 1970-01-01
      • 2011-03-28
      • 2018-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多