Articles of nsis

使用NSIS将应用程序文件安装到标准的Windows用户

我有一个应用程序,需要一个SQLite数据库才能运行。 在我的NSIS脚本中,数据库被复制到用户Local / AppData文件夹。 如果安装该程序的用户是pipe理员用户,则此工作正常。 但是,如果一个标准用户试图安装程序,安装程序要求inputpipe理员密码(因为标准用户不能在Windows上安装程序)并且正在安装用户,现在正在切换到pipe理员,导致安装数据库pipe理员Local / AppData文件夹,而不是实际的用户AppData文件夹。 所以,实际上,当标准用户试图运行程序时,找不到数据库。 我不知道如何处理这种情况(最好的做法,如果有的话),并不能find答案。 安装程序是否应该将数据库放到公共场所,比如AllUsers,并且首先将数据库从那里复制到他们自己的AppData文件夹中? 所有用户文件夹的问题似乎是任何人都可以偷看它,并可能删除文件。

NSIS支持Linux和Solaris

NSIS是否支持Linux和Solaris? 我读了一个地方,我们可以在Linux上编译nsis脚本,但不能执行在任何其他平台上生成的.exe,但Windows。 有人能提供更多的信息吗?

在nsis中使用iphlpapi dll检查端口可用性

任何人都可以让我知道如何使用iphppi DLL在nsis检查端口的可用性。 任何指针高度赞赏!

在Windows 7中使用NSIS设置环境variables

我想使用NSIS安装程序设置环境variables。 如果重要,我将在Windows 7上运行脚本。 谢谢!

为Python创build一个Windows安装程序+一组依赖项

我需要为Windows创build一个安装程序,该安装程序应该能够安装特定版本的Python解释器(2.7)以及一组依赖项,如ipython,numpy,pandas等。 基本上,这与Active Active为其Active Python发行版所做的是一样的:一个包含interpreter + deps的单一包。 不是一个Windows用户我不知道从哪里开始,除了也许看着NSIS (可以有任何帮助吗?)。

每个Windows操作系统的registry中的CurrentVersion值

我正在使用nsis安装程序。 为此,我想知道每个操作系统的CurrentVersion值 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" 例如:我的电脑上安装了windows 7专业版, CurrentVersion值为6.1 。 从Windows 98开始,任何一个Windows操作系统都能列出它吗?

使Windows刷新图标caching

我真的很喜欢KDE SC 4的氧气外观。我写了一个程序来将这些图标应用到窗口。 该程序是用NSIS编写的,目前function已经完全正常。 但是,我发现使Windows意识到图标更改的唯一方法是杀死explorer.exe,删除图标caching,并respawn explorer.exe。 SHChangeNotify与SHCNE_ASSOCCHANGED似乎无法使Windows意识到对控制面板图标,我的电脑图标等的更改。请build议一个更好,不那么残酷的方法使Windows意识到这些更改。 编辑:我发现了一个名为图标调整程序似乎能够做到这一点,但它是封闭的源,所以我不知道它是如何做到这一点。 (IconTweaker: http ://www.crystalxp.net/galerie/en.id.83-icontweaker.html) 编辑:我有这个工作正常,谢谢安德斯的答复(见下文)。 不过,我只是把我的工作NSIS代码放在这里,以防别人需要它 ReadRegStr $0 HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" IntOp $0 $0 + 1 WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0 SendMessage 0xffff 0x001A 42 0 /TIMEOUT=100000 IntOp $0 $0 – 1 WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0 SendMessage 0xffff […]

如何正确启动安装结束的可执行文件?

我将在安装完成后以这种方式启动我的Windows应用程序: !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchApplication" … Function LaunchApplication ExecShell "" "$INSTDIR\Application.exe" FunctionEnd 但是这有一个奇怪的和不希望的副作用。 显然是我的应用程序与pipe理员权限启动。 我不能在网页浏览器(用Firefox和IEtesting)和我的应用程序之间拖放任何数据。 如果我退出我的应用程序(会话从NSIS开始),并从开始菜单图标重新启动图标一切正常! – 我可以拖放到浏览器没有问题。 所以我怀疑,因为在安装之初有一个UAC请求,不知何故UAC权限被转移到我安装后启动的进程。 由于浏览器运行在安全性较低的进程中,因此Windows拒绝传播任何数据(在使用NSIS启动的进程实例中)。 如何从NSIS启动一个EXE,这样UAC /安全问题不会发生?

可靠的方式从registry中获取Windows版本

我通过检查以下registry项来检查安装程序(使用NSIS)中的Windows版本: HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentVersion" 根据这个post和MSDN的这个页面 ,Windows 10的currentVersion编号应该是10.0。 我刚刚安装了Windows 10 Pro Insider Preview,registry中给出的版本号仍然是6.3,而不是10.10。 有没有另一种可靠的方式在registry中检测Windows 10?

从NSIS中检测已经运行的Java应用程序

是的,这是很好的文件如何得到你的应用程序的exe文件的名称,看看它是否正在运行。 当有问题的应用程序是一个Java应用程序,正在运行的exe文件将始终是java.exe,所以这个方法是平坦的,因为可以有任何数量的java应用程序当前运行,所有java应用程序启动。 每个命令行参数都会有所不同,包括主类名称。 我需要知道的命令行参数为java.exe,所以我可以知道,只有一个说java.exe MyProgram将被终止。 我如何在NSIS中做到这一点?