首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NSIS - 如何在排除文件的同时递归复制?

在使用NSIS(Nullsoft Scriptable Install System)进行安装程序制作时,如果需要在排除文件的同时递归复制,可以使用以下方法:

  1. 使用File指令:

在NSIS脚本中,可以使用File指令来复制文件。例如,以下代码将复制source_folder中的所有文件和子文件夹到destination_folder

代码语言:txt
复制
SetOutPath $INSTDIR\destination_folder
File /r /x "excluded_file" "source_folder\*.*"

其中,/r表示递归复制,/x表示排除指定文件。在这个例子中,excluded_file是需要排除的文件名。

  1. 使用FindFirstFindNext指令:

如果需要更复杂的排除规则,可以使用FindFirstFindNext指令来遍历文件夹并排除不需要的文件。例如,以下代码将复制source_folder中的所有文件和子文件夹到destination_folder,但会排除所有以.开头的隐藏文件:

代码语言:txt
复制
Function exclude_hidden_files
    FindFirst $0 $1 "$INSTDIR\source_folder\*.*"
    loop:
        StrCmp $1 "" done
        StrCpy $2 $1 1
        StrCmp $2 "." exclude
        StrCmp $2 "" exclude
        push $1
        call do_copy
        pop $1
    exclude:
        FindNext $0 $1
        Goto loop
    done:
        FindClose $0
FunctionEnd

Section
    SetOutPath $INSTDIR\destination_folder
    push "$INSTDIR\source_folder"
    call exclude_hidden_files
SectionEnd

在这个例子中,exclude_hidden_files是一个自定义函数,用于遍历文件夹并排除隐藏文件。do_copy是一个未定义的函数,用于复制文件。

  1. 使用!include指令:

如果需要排除多个文件或文件夹,可以使用!include指令将文件列表存储在一个单独的文件中,并在NSIS脚本中包含该文件。例如,以下代码将复制source_folder中的所有文件和子文件夹到destination_folder,但会排除exclude_list.txt中列出的文件和文件夹:

代码语言:txt
复制
!include "exclude_list.txt"

Section
    SetOutPath $INSTDIR\destination_folder
    File /r /x "${exclude_list}" "source_folder\*.*"
SectionEnd

在这个例子中,exclude_list.txt是一个包含要排除的文件和文件夹的文本文件,其格式为exclude_list="file1.txt file2.txt folder1 folder2"

总之,在使用NSIS进行安装程序制作时,可以使用File指令、FindFirstFindNext指令以及!include指令来在排除文件的同时递归复制。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • PHP递归实现文件复制、删除、查看大小操作示例

    本文实例讲述了PHP递归实现文件复制、删除、查看大小操作。...文件是可以复制文件夹是不能复制(但可以创建),如果要达到复制文件效果,就需要生成一个和原始文件夹相同目录结构文件夹,然后将文件按照原目录结构复制到新文件夹。...按照递归思想,不用一开始就生成完整目录结构,只需要遍历当前目录,发现文件夹不存在再创建即可,然后再将文件复制到对应文件夹。...使用递归处理逻辑是,找到当前目录下所有文件文件夹,删除其中所有文件,再遍历下一层目录删除所有文件……直至最后一层目录,此时整个文件夹已经没有文件了(但是文件夹还在),此时递归开始返回,每向上返回一层就删除这一层所有空目录...,当返回到最顶层/ /时候,递归就结束了,同时所有的文件和目录也都删除了。

    99620

    PHP递归实现文件复制、删除、查看大小操作示例

    本文实例讲述了PHP递归实现文件复制、删除、查看大小操作。...文件是可以复制文件夹是不能复制(但可以创建),如果要达到复制文件效果,就需要生成一个和原始文件夹相同目录结构文件夹,然后将文件按照原目录结构复制到新文件夹。...按照递归思想,不用一开始就生成完整目录结构,只需要遍历当前目录,发现文件夹不存在再创建即可,然后再将文件复制到对应文件夹。...使用递归处理逻辑是,找到当前目录下所有文件文件夹,删除其中所有文件,再遍历下一层目录删除所有文件……直至最后一层目录,此时整个文件夹已经没有文件了(但是文件夹还在),此时递归开始返回,每向上返回一层就删除这一层所有空目录...,当返回到最顶层/【本文中一些PHP版本可能是以前,如果不是一定要,建议PHP尽量使用7.2以上版本】/时候,递归就结束了,同时所有的文件和目录也都删除了。

    89020

    NSIS 打包脚本基础

    $PROFILE 用户个人配置目录。一个典型路径 C:\Documents and Settings\Foo。 该常量在 Windows 2000 及以上有效。...如果使用了 /nonfatal 开关且当文件未找到时使用警告来代替错误 如果使用了 /a 开关,则被添加文件属性将会保持 如果使用了 /r 开关,匹配文件将会在子目录里被递归搜索。...如果目录名匹配则所有包含内容都会被递归添加,目录结构也会被保持 使用 /x 开关可以用来来排除文件或目录 例: 将ProjectFiles目录下所有文件释放到输出目录 SetOutPath "$...作用:创建 (递归创建) 指定目录。...$0 "a bbbbbbbb" 3就有$0 = "a b" StrCmp 作用:比较(不区分大小写)“字串1”和“字串2”,如果两者相等,跳转到“相同时跳转标记”,否则跳转到“不相同时跳转标记”。

    4.9K60

    使用 Swift 递归搜索目录中文件内容,同时支持 Glob 模式和正则表达式

    如果新团队中代码库有一个 GitHub CODEOWNERS 文件,可以反映拥有的每个文件文件组。这是对了解整个框架有很大帮助,如果没有,可以尝试创建一个。...每个 OwnershipRule 结构体包含文件路径和相应团队。搜索匹配文件脚本使用 FileManager 遍历当前代码库中所有 .swift 文件。...getOwnersForFile(_:_:) 函数根据文件路径和规则数组,确定文件拥有者团队。输出结果将文件所有者为 @MyAwesomeOrg/cool-beans 匹配文件打印输出。...通过这段脚本可以帮助开发者快速找到特定团队拥有的文件,并检查其中是否包含特定文本。它可扩展性取决于 CODEOWNERS 文件格式和内容,以及要搜索文本类型。...在未来,可以考虑添加更多文件过滤规则或支持其他类型文本搜索,以增强功能。例如,可以添加对不同文件类型支持,或者实现更复杂团队匹配逻辑。

    11832

    何在 Linux 中使用 chown 命令递归更改文件和目录用户和组所有权?

    您可以在 Linux 中使用 chown 命令更改文件和目录所有权,使用起来非常简单。...owner_name:group_name folder_name让我们详细看看它,并看看如何递归地更改用户和组,如果您熟悉文件所有权和权限概念,事情就会更容易理解。...⚠️ 您需要成为 root 或使用 sudo 来更改文件所有权。...递归 chown要递归更改目录所有权,请像这样使用它:chown -R new_owner_name directory_name如果您必须更改多个目录及其内容所有权,您可以在同一行中执行此操作:chown...要递归更改目录所有者和组及其所有内容,请使用 chown 命令,如下所示:chown -R user_name:group_name directory_name您可以使用相同方法更改多个文件所有权

    15.9K30

    【C++】Qt:基于windeployqt+nsis程序打包和发布

    1.windeployqt和nsis介绍 windeployqt是一个Qt提供非常有用命令行工具,用于将Qt应用程序所需所有依赖项自动复制到应用程序构建目录中,以便在没有Qt安装计算机上运行应用程序...windeployqt可以自动查找并复制应用程序所需Qt库文件、插件、QML文件以及其他依赖文件。...它还会自动解析应用程序依赖关系,确保所有依赖文件都正确复制到目标目录中,以便应用程序能够正确运行。 使用windeployqt非常简单。...而无需手动复制所有的依赖项。...nsis我用版本是: nsis-3.02.1(最新版nsis是包含了下面的nisedit) 2.用nisedit制作脚本 1.新建向导脚本 2.填写应用信息 3.设置图标、语言等 4.设置目录与授权信息

    50210

    GuLoader 转向使用 NSIS 历程

    【PE 文件 NSIS 压缩数据】 垃圾邮件 2021 年 11 月,攻击者开始使用 NSIS 可执行文件前,研究人员发现了一个可疑 ZIP 文件。...【执行流程】 2022 年,攻击者转向使用 NSIS 可执行文件。例如将 NSIS 可执行文件嵌入在 ZIP 文件中或者 ISO 镜像文件中。...【ZIP 文件 NSIS】 【ISO 镜像文件 NSIS】 在压缩文件与镜像文件中嵌入可执行文件是能够进行检测逃避,在野发现可用于嵌入 NSIS 可执行文件格式如下所示: 【格式列表】...【简单 NSIS 脚本】 后来,攻击者开始使用混淆 NSIS 脚本。在 2022 年 4 月,攻击者对其进行两次改进。首先,Shellcode 文件扩展名从 .dat 更改为随机扩展名。...【使用 cmd 或 powershell 解密】 字符串加密 此前,加密字符串位于 GuLoader 特定位置,加密数据和加密数据长度复制并传递给解密函数。

    68530

    windows nsis安装包制作

    3.06.1/nsis-3.06.1-setup.exe 使用方式 NSIS EDIT:使用向导创建打包脚本 菜单栏: 文件 -> 新建脚本:向导 下一步 NSIS_1.png ------ 填写对应安装包信息...英语) NSIS_3.png ------ 选择对应许可证文件 下一步 许可证文件: BOM-UTF-8格式TXT NSIS_4.png ------ 选择安装包需要添加文件文件夹 下一步...文件:右侧第一个图标 文件夹:右侧第二个图标 NSIS_5.png ------ 选择需要生成快捷方式(默认即可) 下一步 NSIS_6.png ----- 选择安装包启动参数(如果没有,...默认即可) NSIS_7.png ------ 卸载程序相关(非特殊需要,默认即可) 下一步 NSIS_8.png ------ 保存脚本信息 完成 NSIS_9.png ------ 保存安装包脚本到磁盘...NSIS_10.png ------ 保存完成之后会自动打开刚刚创建脚本 菜单栏: NSIS(N) -> 编译脚本 编译完成之后,底部输出框显示编译结果及保存位置 NSIS_11.png

    2.9K00

    如何使用 TmpwatchTmpreaper 删除旧文件

    什么是 tmpwatch tmpwatch 会在指定目录中递归删除指定时间段内未被访问文件。通常,它用于自动清除临时文件系统目录,例如 /tmp 和 /var/tmp。...除非是更改文件属性,否则大多数情况下 ctime 和 mtime 会相同。 ctime(文件上次更改时间):显示文件元数据更改时间。这意味着更改文件属性时间(所有权或组等)。...例如,运行以下命令以递归方式删除过去 5 个小时未访问文件。 # tmpwatch 5 /tmp 运行以下命令删除最近 10 个小时未修改文件。...# tmpwatch -am 12 /tmp 如何在 tmpwatch 中排除目录 以下命令将删除过去 10 个小时未修改所有文件,并排除目录。...# tmpwatch -am 10 --nodirs /home/daygeek/Downloads 如何在 tmpwatch 中排除特定路径 以下命令将删除过去 10 个小时未被修改所有文件,除了下面排除文件

    3.8K10

    C# Windows桌面应用打包指南

    在弹出窗口中,选择发布位置,可以是本地文件夹、网络路径或者 FTP 服务器。配置应用程序更新方式,如是否启用自动更新。...在安装项目中添加需要打包文件(例如应用程序文件、依赖库等)。配置安装包属性(版本号、安装路径等)。生成安装包,Visual Studio 会创建 .msi 文件。...Inno Setup 和 NSIS第三方工具:Inno Setup 和 NSISInno Setup 和 NSIS 是两款常见第三方打包工具,它们提供了更灵活安装包配置选项。...使用其内置脚本编辑器,编写安装脚本,定义要打包文件、安装路径等。编译脚本,生成安装包。NSIS 打包步骤:下载并安装 NSIS。编写 NSIS 安装脚本,配置安装过程中各项细节。...可能缺乏某些高级功能(自动更新)。

    19232

    Package Easy(基于NSIS打包工具) 使用方法(五)

    所以,新一版V1.0.5 它来了更新内容* 解决多语言切换问题* 解决安装可以选择复制文件到指定目录* 解决无法配置NSIS路径问题* 解决在结束页面不设置监视进程时无法编译通过问题* 新增批量删除...,批量选择,批量变更目录* 新增忽略列表,解决反复添加不需要文件问题功能说明多语言切换问题修改多语言实现方案,多语言实时切换 图片解决安装可以选择复制文件到指定目录在组件设置中可以选择已存在文件不进行复制...修复原来NSIS配置路径功能无效问题4. 解决在结束页面不设置监视进程时无法编译通过问题5. 新增批量删除,批量选择,批量变更目录 a. 程序集列表可以进行多条编辑或者忽略 b....文件清单详情取消行详情展示,新增相关列,新增右键菜单操作 c. 新增选择性复制文件 d....新增忽略列表结语 每次更新我都会尽最大努力去解决一些问题,目前问题来源主要是使用中一些问题,如果各位有更好意见建议,欢迎留言~仓库地址GitHub地址:https://github.com/tangmanger

    17110

    Notepad2替代系统自带记事本

    事情是这样,平时我经常把一些文字复制到记事本中编辑好了再复制到目标位置,可以在系统自带记事本中替换删除一些内容,记事本小巧,占用很少资源,我很喜欢;但今天复制内容中有很多数字和一些我不想要内容...Notepad2是一个相当优秀轻量级文本编辑器,开源软件,具有很多特色功能,代码高亮、编码转换、行号显示、多步Ctrl+Z等,是不可多得记事本替代方案。...而 Notepad2-mod 是 Notepad2 修改版、更新很及时,支持代码折叠、NSIS、Inno、AHK语法高亮等。 ?...,INI, REG, INF, BAT,DIFF等众多脚本文件。...使用了几天后发现一个问题我把notepad2编辑过txt文档发给没有安装该软件电脑上使用时换行挂了,另外从中间复制出来内容贴到word中去段落标记好像也有些问题。

    2K20

    公司居然把所有在线音乐都屏蔽了,所以我决定......

    如何将应用程序打包(Win) 1、关于package.js文件详解 完整实例如下: "build": { "productName":"xxxx",//项目名 这也是生成exe文件前缀名..."output": "build" }, "nsis": { "oneClick": false, // 是否一键安装 "allowElevation": true...打包 electron-builder比electron-packager有更丰富功能,支持更多平台,同时也支持了自动更新。...「特点:」 1、electron-builder 可以打包成msi、exe、dmg文件,macOS系统,只能打包dmg文件,window系统才能打包exe,msi文件; 2、几乎支持了所有平台所有格式...整体感受 万事开头难,在开发环境搭建及应用程序打包方面花费时间是最多,目前网上博主真的好多,但是靠谱真的很少,大部分都是复制别人,真的很坑。

    92020

    Notepad2替代系统自带记事本Notepad

    Notepad2替代系统自带记事本Notepad 原博文链接:https://www.cnblogs.com/best/p/5819858.html 事情是这样,平时我经常把一些文字复制到记事本中编辑好了再复制到目标位置...Notepad2是一个相当优秀轻量级文本编辑器,开源软件,具有很多特色功能,代码高亮、编码转换、行号显示、多步Ctrl+Z等,是不可多得记事本替代方案。...而 Notepad2-mod 是 Notepad2 修改版、更新很及时,支持代码折叠、NSIS、Inno、AHK语法高亮等。 ?..., INI, REG, INF, BAT, DIFF等众多脚本文件。    ...文档发给没有安装该软件电脑上使用时换行挂了,另外从中间复制出来内容贴到word中去段落标记好像也有些问题。

    3.3K20

    Electron实用技巧-electron-builder中用户协议(license)使用及多语言支持

    # 1 通常pc软件安装过程中,会加入用户协议,: 下面介绍一下使用electron-builder打包应用,如何加入license。...首先参考官网介绍:windows:nsis[1],macOS:dmg[2] # 2 官网上关于license配置说明写不是很详细,下面是我实践总结出正确姿势: 最简单方法是在你项目/build...目录下新建license.text文件,然后正常打包就可以了,无需其他设置。...# 3 如果要支持多语言,只需修改license文件名添加对应语言代码后缀,:license_xxx.txt。...: true, }, 打包后安装,选择语言: 英文: 中文: macOS: 参考资料 [1] nsis: https://www.electron.build/configuration/nsis [

    2.6K40
    领券