安装软件时提示nsis

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安装软件时提示nsis相关的知识,希望对你有一定的参考价值。

参考技术A 可能是文件出错,或者你用的别的语言操作系统运行中文的安装文件。或者把文件名改为数字再试一试
想安装程序按照下面操作
在左下角的运行里输入这样的命令试试:
F:\***.exe /NCRC
这里的F:\***.exe替换成你要安装的文件的具体位置,在后面+空格,然后输入/NCR
如果以上的方法不行,那么:
你的电脑很可能是中了一种病毒,99%的可能。当然硬件故障比如内存损坏、磁盘出错、坏道等,或是下载失败也有可能导致“NSIS ERROR”错误,但概率很小。
CPU fan error是物理故障,一是你风扇的接线没有插到原来的那个 cpu 风扇的电源接口; 或者就是这个风扇没有提高转速信号.
BIos检测到CPU风扇转数达不到BIos设置的标准,也有可能报错,将CPU风扇转速设置到合适的值即可
你看看吧

使用NSIS打包超大型软件的几个注意事项

NSIS 超大软件 超过2G 打包

1,NSIS原版不支持超过2G的软件打包,因此需要用NSISBI。官网下载NSISBI,用里面的内容替代原始的NSIS软件目录。

2,原有NSIS目录中的插件不要忘记拷贝到新NSIS目录中;由于NSISBI的Plugins目录中根据平台分了多个子目录,需要拷贝到相应平台的子目录中。

 

 

 3,NSISBI可以正常打包超过2G的安装包,但是如果原始软件文件大小超过4G多,在安装解压缩时显示的进度百分比会不正常。

这是因为进度条数值一般是利用NSIS的7z插件的"nsis7zU::ExtractWithCallback"方法来获取进度

    GetFunctionAddress $R9 ExtractCallback
    nsis7zU::ExtractWithCallback "$INSTDIR\\$INSTALL_7Z_NAME" $R9

"nsis7zU::ExtractWithCallback"方法会吐给Callback处理方法两个数值:当前解压缩字节数,最大字节数;通过这两个字节数的比值可以获得百分比。

问题在于这两个字节数貌似返回的是int32型,最大42亿。

如果打包的软件文件大小超过4个G多时,字节数就超过int32的最大值,导致溢出。

返回的最大字节数一开始就是溢出值,当前解压缩字节数逐步增大最后也会溢出,所以计算而得的百分比自然不正确了。

 

因为不知道nsis7z插件是否有新版提供int64返回值的支持,所以采用了一个对百分比取模的方法,一旦百分比超过100则舍去。

Function ExtractCallback
# $1为解压缩字节数,$2为字节总数。$0为取模后的百分比数值
    Pop $1
    Pop $2
    System::Int64Op $2 / 100
    Pop $3
    System::Int64Op $1 / $3
	Pop $4
	System::Int64Op $4 % 100
    Pop $0

...	

  

这样UI上的显示就是:百分比滚动条到达百分百,然后归零,再次达到百分百,重复N次。

虽然看起来效果不佳,但至少能够持续看到安装进程的变化。

 

 

参考文档:

如何解决NSIS 2G文件的限制

https://sourceforge.net/projects/nsisbi/

https://nsis.sourceforge.io/Nsis7z_plug-in

https://github.com/bajins/NSIS_SetupSkin

 

以上是关于安装软件时提示nsis的主要内容,如果未能解决你的问题,请参考以下文章

NSIS 如何在卸载时检测软件是不是运行并提示用户

nsis现代化安装界面无法弹出

电脑每次安装程序时就弹安装游戏老是安装不下来,总是出现: NSIS 错误 正在尝试使用已经损坏或不完整的安

nsis error解决方法

nsis error是啥意思求解决方法

总是显示NSIS ERROR怎么办?卸载不了软件