如何在运行时 (NSIS) 中获取 nsh 代码中丢失的 dll 文件错误回调

Posted

技术标签:

【中文标题】如何在运行时 (NSIS) 中获取 nsh 代码中丢失的 dll 文件错误回调【英文标题】:How to get missing dll file error callback in nsh code in run time (NSIS) 【发布时间】:2019-04-15 03:31:13 【问题描述】:

我正在使用 NSIS 为我的软件创建安装程序。我的软件依赖于 Microsoft c++ 再分发软件。因此,在安装我的软件时,如果用户系统有一些 .dll 文件丢失/损坏,那么安装程序会显示错误。

我希望每当出现此类错误时,NSIS 脚本都会收到错误回调,我首先启动 c++ 再分发软件安装。

那么如何实现呢?

谢谢

【问题讨论】:

安装程序在技术上并未显示此错误,它是 Windows 加载程序。您还忘记发布代码以显示您的执行方式。 【参考方案1】:

发送这个可执行文件。 https://www.microsoft.com/en-us/download/details.aspx?id=48145

安装

ExecWait '"vc_redist.x86.exe"'

一个不让它到处乱扔的聪明方法是:

InitPluginsDir  ; If you haven't already
SetOutPath $PLUGINSDIR
File vc_redist.x86.exe
ExecWait '"vc_redist.x86.exe"'
SetOutPath $INSTDIR

它会在控制面板中创建自己的安装条目,因此您在卸载时什么也不做。

(如果您的程序是 64 位,则需要 64 位版本,并且在这种情况下会发现 pluginsdir 方法更不容易出错。)

【讨论】:

以上是关于如何在运行时 (NSIS) 中获取 nsh 代码中丢失的 dll 文件错误回调的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows x64 和 NSIS 中使用 .INF 安装打印机

为啥安装游戏出现nsis错误?

NSIS - 强制用户选择不同的目录

如何在nsis中获取其他应用程序的退出代码

如何在NSIS卸载时线运行一个EXE文件?(EXE文件在卸载程序目录下)用啥代码?

NSIS 安装程序许可证页面仅显示“关闭”和“取消”按钮