NSIS未提取”的信息;如果更新的话“;

NSIS未提取”的信息;如果更新的话“;,nsis,Nsis,我使用的产品使用的是NSIS以外的安装程序。目前,仍有一些客户拥有我们使用NSIS之前的产品版本 现在,他们正在尝试安装我们的软件的新版本,该版本使用NSIS安装程序。问题是,当尝试在NSIS安装程序之前的任何版本上安装时,某些文件没有被提取,这导致我们的产品崩溃 我试图查找并了解NSIS是如何检查“ifnewer”的,但似乎没有任何东西能够详细解释我可以解决这个问题 应该注意的是,从一个NSIS安装的版本切换到另一个版本可以正常工作。因此,这是尝试在未使用NSIS安装的产品版本上安装的直接结果

我使用的产品使用的是NSIS以外的安装程序。目前,仍有一些客户拥有我们使用NSIS之前的产品版本

现在,他们正在尝试安装我们的软件的新版本,该版本使用NSIS安装程序。问题是,当尝试在NSIS安装程序之前的任何版本上安装时,某些文件没有被提取,这导致我们的产品崩溃

我试图查找并了解NSIS是如何检查“ifnewer”的,但似乎没有任何东西能够详细解释我可以解决这个问题

应该注意的是,从一个NSIS安装的版本切换到另一个版本可以正常工作。因此,这是尝试在未使用NSIS安装的产品版本上安装的直接结果


谢谢

旧安装程序是否存在上次修改日期问题?(将来等)

我刚用旧安装程序重新安装。上次修改的日期和时间与安装时间相同。使用新的NSIS安装程序,上次修改保持不变,唯一需要更改的是上次访问的时间。这就是为什么我想知道NSIS如何处理其对ifnewer的检查,如果它经过上次修改,应该不会有问题。它使用WIN32_FIND_DATA.ftLastWriteTime上的CompareFinite函数来检查现有文件(因此“新”文件需要比这更新)@Anders:“新”文件不总是有当前时间的LastWriteTime吗?或者它在进行NSIS编译之前存储了文件的LastWriteTime并使用它进行比较?事实上,现在我想起来了,这并不能解释问题,那么为什么在使用NSIS安装程序的产品副本上进行安装可以很好地工作呢。假设该文件在用户使用它的不同时间被修改,那么即使安装了NSIS,旧文件也可能比“新”文件更新。