问题标签 [nsdialogs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1044 浏览

nsis - Electron-builder NSIS,嵌入其他安装程序

我为我的一个朋友创建了一个小电子程序,它是某种私有 metin2 服务器的修补程序。游戏本身真的很旧,所以它需要安装一些可重新安装的东西。 [dxwebsetup0411 / dotNetFx35setup / vcredist_x86(我相信它是 2013 版)]

我想在安装结束时将它们作为一个选项包括在内(甚至在安装之前,并不重要)。我找到了一些如何执行此操作的示例,但它们都适用于独立 NSIS 安装程序,当我尝试包含该脚本(在 build/installer.nsh 文件中)时,构建过程崩溃,可能是因为它不是主要的构建脚本因此禁止添加部分 (?)。

我对 NSIS 脚本和整体 NSIS 真的很陌生。

到目前为止,我只在 nsDialogs 的帮助下想出了如何放置复选框和标签等,但是当我查看它的文档时,似乎没有我可以这样做的选项。

任何帮助将不胜感激。

编辑 :

我的脚本目前几乎是空的,我只更改了默认目录,但无论如何这里是:

我所知道的关于 electron-builder 的 NSIS 主脚本和这个包含的脚本的一切都在这里:

0 投票
1 回答
87 浏览

nsis - 未应用 NSIS SelectFileDialog 过滤器

我在 NSIS 脚本中使用了以下行:

nsDialogs::SelectFileDialog打开 "C:\temp.rar" "*.rar"

当我运行生成的安装程序(在 Windows 10 中)时,文件对话框打开到 C: 应该是,temp.rar显示在文件名字段中,并且 *. rar显示在过滤器下拉列表中。但是过滤器并未应用于文件列表。也就是说,所有文件类型仍然可见,尽管 *. rar是过滤器下拉列表中的唯一条目。

有谁知道可能导致此问题的原因或如何解决?

0 投票
1 回答
175 浏览

nsis - NSIS nsDialog如何检查页面外单选按钮的状态

我正在尝试通过 nsDialog 创建一个自定义页面,其中带有单选按钮,然后会影响进一步的部分。我遇到的问题是这些值似乎没有传播到函数之外CustomPage,如下例所示:

这显然是一个要点,忽略了包含和其他页面,但是当我构建完整版本时,我看到了

在里面提出的消息框上CustomPage,但请参阅

当该部分运行时。

我已经阅读了https://nsis.sourceforge.io/NsDialogs_FAQ#How_to_easily_handle_radiobutton_selections,这个解决方案给了我同样的结果。

$RADIO_*在该部分中是否缺少某些内容?

谢谢

0 投票
1 回答
76 浏览

nsis - 使用 nsDialog 的 listview 安装文件

我有一个包含以下行的 .txt 文件:

  • 应用程序1
  • 应用程序2
  • 应用程序3
  • ...
  • 应用程序N

在我制作安装程序之前,我在 ${srcdir} 中有这些文件:

  • ${srcdir}\app1
  • ${srcdir}\app2
  • ${srcdir}\app3
  • ...
  • ${srcdir}\appN

文件列表总是会改变,所以我需要手动更正 nsi-script。

如何使用取决于 file.txt 的列表视图在自定义页面上制作复选框列表?

现在我正在使用组件页面和简单的构造来检查文件。

0 投票
1 回答
94 浏览

electron - 如何在电子构建的应用程序中启用取消按钮?

我正在使用通过电子生成器构建的电子应用程序。当我生成安装程序并开始使用它进行安装时,我看到取消按钮被禁用。

我查看了一些电子生成器文档并进行了一些谷歌搜索,但我似乎在这里空白。

编辑:发现我可以使用 build/installer.nsh 来实际修改 UI 元素,现在我只是想知道,如何访问按钮来启用/禁用它,我看到的示例使用 .ini 文件存储选项或类似的东西,但我得到了使用 nsDialogs 的建议。

nsDialogs 是我已经可以轻松访问的东西,还是我需要将某些东西导入到我的 installer.nsh 文件中才能使用 nsDialogs?

通过这个令牌,我将如何访问 nsDialogs 中的取消按钮?

是否有一个可配置的值使我能够...启用该取消按钮,以便用户可以在安装期间选择取消?

谢谢!

0 投票
1 回答
35 浏览

design-patterns - 一种通过在 NSIS 安装程序中进行计算的函数来警告用户一点冻结的方法

我正在编写我的第一个 NSIS 脚本,但我在路上发现了一个颠簸。事实上,我认为仅在标题中很难解释,(也许有人可以帮助)所以让我充分解释一下:

我正在创建一个使用一些自定义页面的安装程序,因为我希望用户首先选择一些选项(它使用 nsDialogs),并根据它在安装路径中进行一些调整(主要是自动检测它,因为它可能取决于其他事情)。所有这些工作正常。

在该选项的某些情况下,在检查某些文件是否存在之间,它会对文件进行哈希处理以查看该文件是否是它所期望的文件(因为稍后它将用增量修补它)。我使用了Crypto 插件MD5 插件,两者都很好,都可以做我想做的事,但是它们会挂起安装程序一段时间(大约一秒钟),我想是因为文件有点大(大约超过 100MB)和附近就是问题所在。

通常在这些情况下,您选择该选项,进入下一个(自定义)页面,并在自定义页面的创建者功能中自动检测文件夹,并直接进行文件检查,当检查文件哈希时,它会挂起一秒钟并继续,但一直挂起它只显示一个空白页面,因为它还没有在创建函数中到达nsDialogs::Show指令来显示窗口内容。在该页面中,您可以更改文件夹,如果是这种情况,一旦更改,它会再次运行检查(这是在两种情况下都调用的专用函数)并再次挂起一段时间,但随后窗口显示所有内容并且我可以设置一个文本来表达一些东西(事实上,这是我第一次做的),但是第一次自动我不能这样做。

这就是重点:如何向用户显示一些内容以使他们了解安装程序正在执行哈希计算,而不是仅显示一个空白窗口。

我尝试过或想过要做的事情:

  • 使用 nsDialogs,因为它首先进行计算并且直到后来才到达nsDialogs::Show,所以我当时无法在窗口中显示任何内容(或者,至少是我在我找到的所有文档中阅读的内容关于那个)。而且,就像文档说的那样,它已经过测试,当你按下下一个或后退按钮时,你在nsDialogs::Show指令之后放置的所有内容都会被执行。
  • 看到 nsDialogs 起初似乎不是要走的路,我正在搜索是否可以在安装窗口上方显示一个窗口(类似于 MessageBox)并分别在哈希计算之前和之后自动关闭它,只显示一个文本用“请稍候”之类的。但我没有找到办法。
  • 也许使用计时器并在几毫秒后进行检查可以完成,但在我看来这是一种非常便宜的方法来处理一些等待发生的问题,主要是因为取决于机器速度,我只能在如果它首先使用nsDialogs::Show 显示窗口,然后使用计时器执行检查文件,这是最后的手段。但是,我想在设置文件夹时进行检查,因为该功能启用“下一步”按钮,我希望尽快这样做,并且向其中添加计时器看起来不正确。
  • 或者是其他更时尚的方式来做到这一点,但我还没有弄清楚。

如果对这个主题不太了解,我可以在明天添加一个从头开始创建的小例子来展示这一点,因为我的主要测试太大了,不应该在这里粘贴所有内容。

谢谢!

编辑:

这是问题的原始示例(不要忘记添加标记为大文件的路径):

然而,使用Anders使用 Banner 插件的提示(这就是我正在搜索的内容!),以及带有 nsDialogs Timer 的BgWorker 插件,nsDialogs 渲染窗口,同时它执行显示横幅的哈希,所以现在看起来很完美!(不要忘记添加标记的大文件的路径)。

也许它应该在进行计算的同时禁用按钮,但这些事情很容易。谢谢!

0 投票
1 回答
31 浏览

image - 一个自定义 NSIS 页面中的多个 nsDialogs 图像图标

我正在尝试使用 nsDialogs 将各种图像(作为图标)放在单个自定义页面中。

我提供的这个例子就是这样做的,但它只显示了第一张图片。但是如果我评论/删除第一张图片的代码,显示第二张,如果我对第二张做同样的事情,它会显示第三张,依此类推。

屏幕截图:提供代码的自定义页面:当设置四个具有相同代码时,仅显示一个图标。

对我来说,我错过了一些东西,但我已经搜索了一个使用 NSD_CreateIcon/NSD_SetIcon 来帮助解决这个问题的例子。我也尝试使用 NSD_CreateBitmap/NSD_SetBitmap 代替,但我有同样的问题(我希望图标更好,因为它们具有透明度)。

这是代码:

带有图标和示例的完整包可以在这里下载(更新)

谢谢!

编辑

做更多测试,我发现如果我在第一个页面之后使用nsDialogs创建第二个自定义页面,完全为空,第一页只显示“1”,你可以转到第二页,回到第一页,然后它显示“1”和“2”。我用新示例更新了此页面中的所有内容。