问题标签 [nsis]

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 投票
3 回答
2708 浏览

nsis - 如何隐藏所有窗口,直到我在 NSIS 中需要它们

我有一个 NSIS 安装程序,除非它需要下载其他文件,否则我希望完全保持沉默。我可以使用 SilentInstall 让它完全静音,但是我不能让我的下载对话框出现(我正在使用 InetLoad::load)。

我想告诉 NSIS 在我这样说之前不要显示任何窗口。我能想到的最好的方法是 HideWindow。Unfortantly 看起来 NSIS 默认显示窗口然后隐藏它导致闪烁。

如何防止闪烁的窗口?

示例代码:

0 投票
4 回答
13906 浏览

debugging - 调试 NSIS 安装程序的方法?

尽管 NSIS 允许您构建功能强大的安装程序,但 NSIS 使用的“让我想起汇编的低级语言”很容易出错,因此,当您希望安装程序执行比编写文件更复杂的事情时,调试是必须的。

到目前为止,我使用了以下类似 Dr Printf的调试技术:

  • .nsh我到处都包含的文件中,我根据定义的值定义了一个 NSIS_DEBUG_MSGDEBUG
    • 如果打开,宏将触发带有调试消息DEBUGMessageBox
    • 如果关闭,宏将不执行任何DEBUG操作

这种方法对我很有帮助,但也有一些缺点:

  • 它要求我填写我认为失败的代码,NSIS_DEBUG_MSG并多次调用并重建安装程序,直到我获得足够的信息来解决问题
  • 如果我的问题是安装程序本身失败(如果安装程序死掉),那对我没有好处

所以我想知道的是你对这些安装程序使用什么调试方法,希望我能改进我的。

0 投票
2 回答
3634 浏览

nsis - NSIS:任务计划程序:仅在登录时运行复选框

我在使用 NSIS 设置计划任务时遇到问题。

  1. 我不会知道我为其设置任务的用户的所有密码,因此我需要选中“仅在登录时运行”复选框来解决这个问题。
  2. 除了设置任务之外,我无权将其他软件安装到计算机上,因此我必须最好使用 Windows 任务计划程序。
  3. 下面的任务设置任务,选中复选框但不运行设置的任务。它不会运行任务,直到我再次浏览到同一个文件,然后单击确定。现在任务将运行得很好。我在另一个关于 JT.exe 的论坛上询问了这种行为,因为它做同样的事情并被告知“它没有将登录设置为由 schtasks.exe 或 GUI 设置的批处理作业用户权限。”
  4. 我试图创建任务,然后通过命令行对其进行修改。它仍然不起作用。
  5. 目标是使用 NSIS(或其他任何东西)创建一个 Windows XP 计划任务,该任务可以正确执行并选中 Task Scheduler 1.0 中的“仅在登录时运行”复选框。

有人可以帮忙吗?

这是当前的 NSIS 脚本

0 投票
1 回答
134 浏览

installation - 作为 NSIS 安装程序脚本的一部分对 Windows 驱动器进行碎片整理?

我需要安装一个包含很多文件的软件。我们的经验表明,在高度碎片化的硬盘上会导致性能非常差。所以我想在我的安装程序中包含自动磁盘碎片整理(我打算使用 NSIS 编写)。如何在安装程序中包含碎片整理命令并读取结果?

0 投票
3 回答
3180 浏览

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

我想写一个 NSIS 脚本,我们暂时称它为 setup.nsi,并检查 $SYSDIR 中是否已经存在几个所需的 dll 文件

让我强调一下“几个”这个词

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

IfFileExists $SYSDIR\blabla.dll +2 +1

然后它检查 blabla.dll 是否在 $SYSDIR 中 .. 但是如果我想知道 *.dll 是否从 setup.nsi 复制文件的位置(即我有兴趣安装的 *.dll ......他们是很多..所以我不能到处检查所有的名字)存在于 $SYSDIR

在卸载过程中,我希望能够从 $SYSDIR 中删除它们(使用一些卸载日志来查看我是否真的将它们复制到 $SYSDIR 中......以及通配符问题)。

请耐心等待我,因为我对 NSIS 脚本真的很陌生。

0 投票
5 回答
7165 浏览

windows - 32 位 NSIS 是否可以启动 64 位程序?

我正在从 32 -> 64 位移植一个 Windows 程序。它有一个使用 NSIS 编写的 32 位安装程序。我可以使用 32 位 NSIS 安装程序启动我的新 64 位 exe 之一吗?我认为没有 64 位版本的 NSIS ......

0 投票
1 回答
441 浏览

silverlight - 用于安装 silverlight 的 nullsoft 安装程序

有谁知道silverlight是否可以打包到NSIS等安装程序中?

0 投票
2 回答
1434 浏览

windows-7 - 如何通过 NSIS 在 windows7 中清除 IconCache

我在 Windows 7 中通过 NSIS 安装我的应用程序时遇到问题。应用程序安装成功,但 myApplicationsIcon 窗口显示通用图标而不是。我知道如何手动解决这个问题(删除 AppData\Local 中的 IconCache.db),但是如何使用 NSIS 脚本来解决这个问题?

问候,德米特里。

0 投票
1 回答
1799 浏览

wix - 使用 WiX 编写可升级的 msi 包

我正在为现有产品编写安装程序,早期的安装程序是用NSIS(Nullsoft Scriptable Install System)编写的。我必须使用WiX为这个产品编写一个基于 msi 的安装程序。我对此有一定的疑问:-

  1. 如何检测我的应用程序是否安装在目标机器上?该应用程序可能已使用 NSIS(旧版本)或 MSI(现在开始)安装。
  2. 如果目标机器上安装了旧/相同版本的产品,如何编写可以升级的 WiX 安装程序。我在几个网站上找到了这个主题,但所有这些都不起作用。具体来说,我想知道每个版本的软件需要在安装程序代码中更改哪些信息(GUID、版本等)。
  3. 我们产品的三个/四个版本每年都会发布。哪种安装程序最适合我?

请注意,如果我只是在 Wix 代码中更改产品元素的版本,那么新的安装程序将无法替换旧的安装程序。当我双击较新版本的安装程序时,它会显示一个错误对话框,说

该产品的另一个版本已安装。无法继续安装此版本。要配置或删除此产品的现有版本,请使用“控制面板”上的“添加/删除程序”。

示例代码:

0 投票
3 回答
31662 浏览

windows-installer - 将 NSIS 脚本构建为 MSI 包

有没有办法将 Nullsoft 安装程序脚本 (NSI) 设置编译为 MSI 包而不是 EXE?