是否存在从NSIS安装程序自动下载和安装.NET 4.0 Framework的标准/首选方法(如果计算机尚未安装)?
有几个例子可以在旧版本的框架上使用它,但看起来它们都不适用于4.0.在我自己一起破解某些东西之前,我想知道是否有人知道那里已有的东西.
感谢您的时间.
我对NSIS很新.我试图请求管理员权限以运行安装程序,因为它与注册表有点混淆.我对"RequestExecutionLevel"和"MULTIUSER_EXECUTIONLEVEL"的问题是,即使在上下文菜单中选择"以管理员身份运行",它们也绝对阻止任何非管理员用户打开安装程序.我已经尝试过使用RunAs DLL,但是我没有找到一个关于将什么放入传递给"RunAsW"函数的$ command变量的线程.
这是我的(非常黑客)代码:
StrCpy $0 0
StrCpy $1 ""
System::Call 'RunAs::GetAdministrators(w r1, *i .r0) i .r2 ? u'
System::Alloc 64
Pop $4
StrCpy $4 $2
StrCpy $5 ""
loop:
IntCmp $0 0 endloop
System::Call '*$4(w .r3)'
StrCpy $5 "$5|$3"
endloop:
System::Free $4 ; we free the memory used by the array
StrCpy $5 "$5" "" 1
!insertmacro MUI_INSTALLOPTIONS_WRITE "Settings.ini" "Field 1" "ListItems" $5
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "Settings.ini"
!insertmacro MUI_INSTALLOPTIONS_READ $1 "UserPass" "Field 1" "State"
!insertmacro MUI_INSTALLOPTIONS_READ $2 "Settings.ini" "Field 2" …Run Code Online (Sandbox Code Playgroud) 我目前有一个项目,其中包含我使用NSIS制作的安装程序,但我希望对只有更改过的文件的新版本进行更新,并显示更改日志.目标平台是windows.你有什么方法/建议吗?
我需要递归复制一个目录,但要在其中排除几个目录.
NSIS的文档说File命令采用/r和/x参数,但我无法使它们正常工作.
包含我的.nsi脚本的目录结构是:
parent-dir
dir-to-exclude-1
setup.nsi
dir-to-copy-1
dir-to-copy-2
dir-to-copy-3
dir-to-exclude-2
Run Code Online (Sandbox Code Playgroud)
我尝试了以下内容,但它对我不起作用:
SetOutPath $INSTDIR
File /r "..\**" /x "..\dir-to-exclude-1\**" /x "..\dir-to-exclude-2\**"
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助.
编辑: 我越来越近,所以现在我有:
File /r /x \dir-to-exclude-1\*.* /x \dir-to-exclude-2\*.* ..\*
Run Code Online (Sandbox Code Playgroud)
现在它将编译并安装所有文件,但不排除我想要的目录.有关如何排除这些内容的任何指导?
我在NSIS RmDir方法的文档中注意到了这个警告:
警告:在卸载程序中使用RMDir/r $ INSTDIR是不安全的.虽然不太可能,但用户可能会选择安装到Program Files文件夹,因此该命令将清除整个Program Files文件夹,包括与卸载程序无关的其他程序.
这让我感到害怕,因为直到现在我还没有考虑过这种可能性,而且我的脚本中有这么一条线.但是,当我测试是否会通过将我的程序安装到包含预先存在的文件的预先存在的位置然后RmDir /r /REBOOTOK $INSTDIR在其中运行我的卸载程序来实现这一点时,现有文件保持不受损害.
这是一个过时的警告吗?我正在使用NSIS v.2.66.
谢谢
我在NSIS中寻找AppData的环境变量.我需要在我的安装中将fils复制到AppData目录.
谢谢!
我正在通过检查以下注册表项来检查安装程序(由NSIS制作)中的Windows版本:
HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentVersion"
Run Code Online (Sandbox Code Playgroud)
根据这篇文章和MSDN的这个页面,Windows 10的当前版本号应该是10.0.
我刚刚安装了Windows 10 Pro Insider预览版,注册表中给出的版本号仍为6.3,而不是10.10.
在注册表中是否有另一种可靠的方法来检测Windows 10?
如何解决“7998:不推荐使用 ANSI 目标”?
当我添加Unicode True
我得到错误,
错误:数据已压缩或标题已更改后,无法更改目标字符集!
脚本错误 -- 第 58 行
-- 中止创建过程
我正在使用以下NSIS脚本:
Name "My app wrapper"
Outfile "MyAppSetup.exe"
InstallDir $TEMP\MyApp\Install
Function .onInit
SetSilent silent
FunctionEnd
Section ""
SetOutPath $TEMP\MyApp\Install
File installer.msi
File setup.exe
Exec setup.exe
SectionEnd
Run Code Online (Sandbox Code Playgroud)
目的是安装程序将这两个文件:installer.msi和setup.exe(它是一个安装prereq的引导程序然后调用installer.msi)包装到MyApp Setup.exe文件中.运行MyAppSetup.exe时,它应将installer.msi和setup.exe解压缩到$ Temp\MyApp\Install目录,并且应该从该目录运行setup.exe.
但是,当我从桌面运行MyAppSetup时,它会执行它在桌面上找到的setup.exe文件,我甚至都看不到C:\ Temp中的MyApp\Install目录.
要使此脚本将文件安装到正确的位置并执行正确的文件,我需要做什么?
nsis ×10
installer ×4
.net ×1
.net-4.0 ×1
appdata ×1
installation ×1
registry ×1
runas ×1
windows ×1
windows-10 ×1