NSIS:如何检查我安装的*.dll是否在$SYSDIR中?

NSIS:如何检查我安装的*.dll是否在$SYSDIR中?,nsis,Nsis,我想写一个NSIS脚本,现在就调用setup.nsi,然后检查 如果$SYSDIR中已存在多个必需的dll文件 让我强调“几个”一词 我从nsis文件中了解到,如果我输入: IfFileExists$SYSDIR\blablabla.dll+2+1 然后检查blabla.dll是否在$SYSDIR中。。但是,如果我想知道setup.nsi从何处复制文件的*.dll(即我感兴趣安装的*.dll…,它们有很多…,所以我不能到处检查所有名称)是否存在于$SYSDIR中,该怎么办 在卸载过程中,我希望能

我想写一个NSIS脚本,现在就调用setup.nsi,然后检查 如果$SYSDIR中已存在多个必需的dll文件

让我强调“几个”一词

我从nsis文件中了解到,如果我输入:

IfFileExists$SYSDIR\blablabla.dll+2+1

然后检查blabla.dll是否在$SYSDIR中。。但是,如果我想知道setup.nsi从何处复制文件的*.dll(即我感兴趣安装的*.dll…,它们有很多…,所以我不能到处检查所有名称)是否存在于$SYSDIR中,该怎么办

在卸载过程中,我希望能够从$SYSDIR中删除它们(使用一些uninstall.log来查看我是否真的在$SYSDIR中复制了它们..还有通配符问题)


请耐心等待我,因为我对NSIS脚本非常陌生。

是否确实需要在
$SYSDIR
中编写和删除?除非您的文件是系统文件,否则没有理由将其放在$\uu SYS\uu DIR中。如果需要使用库的特定版本,请考虑DLL重定向(在应用程序DIR中放置DLL并使用.Load特性)-参见和./P>
另外,您只需输入一次就可以破坏用户的计算机(“已删除:C:\Windows\System32\user32.dll”)

正如Piskvor提到的,我认为您不应该担心在卸载程序中删除系统DLL。如果要用更新版本覆盖系统DLL,可能需要查看该命令。它允许您在更新的情况下覆盖文件。

Windows XP(SP2?)和up对system32具有文件保护,因此您无法覆盖其中的系统关键文件

一定要远离那件事

另外,要特别检查您的文件,请查看是否有NSIS插件可以计算校验和并在卸载时进行比较。如果你真的需要的话,那可能是最安全的


我建议在其他地方安装文件并将其添加到PATH。

+1-我不会尝试在SYSDIR中使用通配符删除DLL。我也会将它们保存在您的应用程序目录中,除非有必要这样做。