NSIS 打包
1.在移动目标和来源在同一分区(如都在C盘)是可以用 Rename语句 和 执行命令行Move 实现
Rename例子:
"Test.EXE"
Name "Test"
Section
Rename C:\Program Files\Test.txt" "C:\Test.txt"
SectionEnd
2.在不同分区可以使用命令行的Move命令:
OutFile "Test.EXE"
Name "Test"
Section
nsExec::ExecToLog 'cmd /c move "C:\Test.txt" "D:\Test.txt"'
SectionEnd
3、补充一个差不多的
delete + copyfiles
delete "$INSTDIR\1.txt"
copyfiles $EXEdir 1.txt $INSTDIR
先删除安装目录下的1.txt,再从脚本当前目录copy到安装目录.
4、# 静默卸载旧版本并等待它完成后才继续
ExecWait '"$INSTDIR\uninstaller.exe" /S _?=$INSTDIR'
5、删除目录 RMDir
[/r] [/REBOOTOK] 目录名
删除指定的目录(没有通配符的完整路径)。没有 /r 参数时只有在目录为空时才会被删除。如果指定了 /r ,则目录会被递归删除,所以在指定目录下的所有文件和目录均被删除。如果指定了 /REBOOTOK ,任何当前不能删除的文件或目录将会在重启后被删除 -- 如果文件或目录需要在重启时被删除,会放置一个重启的标记。当文件或目录不能被删除时放置一个错误的标记。
RMDir $INSTDIR
RMDir $INSTDIR\data
RMDir /r /REBOOTOK $INSTDIR
RMDir /REBOOTOK $INSTDIR\DLLs
需要注意的是当前的工作目录不能删除。当前的工作目录由 SetOutPath 设定。例如,下面的例子将不能删除该目录。
SetOutPath $TEMP\dir
RMDir $TEMP\dir
而下面的例子将成功地删除该目录。
SetOutPath $TEMP\dir
SetOutPath $TEMP
RMDir $TEMP\dir
警告: 在卸载程序中使用 RMDir /r $INSTDIR 是不安全的。虽然用户不太可能会选择将程序安装到 Program Files 文件夹中,但假如这样的话,这个命令将会递归删除整个 Program Files 文件夹,包括其他和卸载程序没有任何关系的程序(目录)。用户还可以安装除了程序文件之外的其他文件并希望它们能被卸载程序删除。可用的 解决方案 可以轻松地实现只卸载由安装程序释放的唯一文件。
6、http 下载文件 举例:
Section Install
NSISdl::download /TRANSLATE2 '正在下载 %s' '正在连接...' '(剩余 1 秒)' '(剩余 1 分钟)' '(剩余 1 小时)' '(剩余 %u 秒)' '(剩余 %u 分钟)' '(剩余 %u 小时)' '已完成:%skB(%d%%) 大小:%skB 速度:%u.%01ukB/s' /TIMEOUT=7500 /NOIEPROXY 'http://dl_dir.qq.com/invc/tt/tt4.8setupv892.exe' '$EXEDIR\tt4.8setupv892.exe'
Pop $R0
StrCmp $R0 "success" 0 +3
MessageBox MB_YESNO|MB_ICONQUESTION "TT4.8 已成功下载至:$\r$\n$\t$EXEDIR\tt4.8setupv892.exe$\r$\n是否立即执行安装程序?" IDNO +2
ExecWait '$EXEDIR\tt4.8setupv892.exe'
SectionEnd
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?