一个build脚本欣赏

2023-10-26

build scripts

My basic build.bat file looks like this:

@echo off
erase ThemeChanger*.exe
copy ../Loader/ArmRel/Loader.exe ./
copy ../Setupdll/ArmRel/setup.dll ./
copy ../ArmRel/ThemeChanger.exe ./
copy ../ThemeChangerChTr/ArmRel/*.mui ./
copy ../ThemeChangerDa/ArmRel/*.mui ./
copy ../ThemeChangerEn/ArmRel/*.mui ./
copy ../ThemeChangerFr/ArmRel/*.mui ./
copy ../ThemeChangerIt/ArmRel/*.mui ./
copy ../ThemeChangerPo/ArmRel/*.mui ./
copy ../ThemeChangerGe/ArmRel/*.mui ./
"C:/Program Files/Windows CE Tools/wce300/SMARTPHONE 2002/Tools/cabwizsp.exe" Theme_Changer_SP2002.STRONGARM.inf /postxml postinstall.xml
erase Theme_Changer_SP2002.STRONGARM.cab
rename Theme_Changer_SP2002.cab Theme_Changer_SP2002.STRONGARM.cab
ezsetup -l english -i ThemeChanger.ini -r readme.txt -e eula.txt -o ThemeChanger_setup.exe
tagnzip ThemeChanger_setup ThemeChanger Theme_Changer_SP2002.STRONGARM.cab

I copy the built files over, note don't do this in the Post-Build step of EVC as the files won't be signed. I then build my cab manually, which I find is the most powerful. ezsetup is a setup exe creater which is free, if you don't need to install files on the PC I highly recommend it, it creates exe's MUCH smaller than commercial offerings I have used.
Lastly I zip it up using pkzip 2.50 (which has long filename support) and its ready for uploading to the web.

and tagnzip looks this this:

@echo off

rem move %1.exe %2MAJOR_MINOR.exe

echo move %1.exe %2> t1.bat
grep "MAJOR" ../majorminor.h | cut -d" " -f3 >>t1.bat
echo _>> t1.bat
grep "MINOR" ../majorminor.h | cut -d" " -f3 | tr -d "L""" >>t1.bat
echo .exe >> t1.bat
tr -d '/n/r' < t1.bat > t2.bat
erase t1.bat
call t2.bat
erase t2.bat

rem pkzip -a -n+ %2MAJOR_MINOR.zip %2MAJOR_MINOR.exe

echo pkzip -a -n+ %2%lt; t1.bat
grep "MAJOR" ../majorminor.h | cut -d" " -f3 >>t1.bat
echo _>> t1.bat
grep "MINOR" ../majorminor.h | cut -d" " -f3 | tr -d "L""" >>t1.bat
echo .zip >> t1.bat
echo %2>> t1.bat
grep "MAJOR" ../majorminor.h | cut -d" " -f3 >>t1.bat
echo _>> t1.bat
grep "MINOR" ../majorminor.h | cut -d" " -f3 | tr -d "L""" >>t1.bat
echo .exe >> t1.bat
tr -d '/n/r' < t1.bat > t2.bat
erase t1.bat
call t2.bat
erase t2.bat

rem move %3 %2MAJOR_MINOR.cab

echo move %3 %2> t1.bat
grep "MAJOR" ../majorminor.h | cut -d" " -f3 >>t1.bat
echo _>> t1.bat
grep "MINOR" ../majorminor.h | cut -d" " -f3 | tr -d "L""" >>t1.bat
echo .cab >> t1.bat
tr -d '/n/r' < t1.bat > t2.bat
erase t1.bat
call t2.bat
erase t2.bat

@echo on

The native windows ports of these UNIX tools (tr, grep, and cut) are availble here: UnxUtils. Getting a commandline version of pkzip 2.50+ is a bit trickier, as I don't believe its available now.

My .inf file looks like this:

[Version]
Signature = "$Windows NT$"
Provider = "Rikisoft" ; maximum of 30 characters, full app name will be "<Provider> <AppName>"
CESignature = "$Windows CE$"

[CEStrings]
AppName = "Theme Changer" ; maximum of 40 characters, full app name will be "<Provider> <AppName>"
InstallDir=%CE1%/ThemeChanger/ ; /PSM/Program Files/ThemeChanger/

[SourceDisksNames]
1 = , "Common Files",,

[SourceDisksFiles]
setup.dll = 1
ThemeChanger.exe = 1
ThemeChanger.exe.0404.mui = 1
ThemeChanger.exe.0406.mui = 1
ThemeChanger.exe.0407.mui = 1
ThemeChanger.exe.0409.mui = 1
ThemeChanger.exe.040c.mui = 1
ThemeChanger.exe.0410.mui = 1
ThemeChanger.exe.0415.mui = 1

[DefaultInstall]
CopyFiles = CopyToThemeChanger
CEShortcuts = Shortcuts1
CESetupDLL = setup.dll

[DestinationDirs]
CopyToThemeChanger = 0, %InstallDir%
Shortcuts1 = 0,%CE11% ; Install in /PSM/Windows/Start Menu/

[CopyToThemeChanger]
"ThemeChanger.exe", ThemeChanger.exe
"ThemeChanger.exe.0404.mui", ThemeChanger.exe.0404.mui
"ThemeChanger.exe.0407.mui", ThemeChanger.exe.0407.mui
"ThemeChanger.exe.0406.mui", ThemeChanger.exe.0406.mui
"ThemeChanger.exe.0409.mui", ThemeChanger.exe.0409.mui
"ThemeChanger.exe.040c.mui", ThemeChanger.exe.040c.mui
"ThemeChanger.exe.0410.mui", ThemeChanger.exe.0410.mui
"ThemeChanger.exe.0415.mui", ThemeChanger.exe.0415.mui

[Shortcuts1]
%AppName%,0,ThemeChanger.exe

it's all pretty standard, note the shortcut which points to the loader. If your having trouble with it there are plenty of helpful pages on the web.
And lastly my .ini file

[CEAppManager]
Version = 1.0
Component = Theme Changer

[Theme Changer]
Description = "Advanced .CAB Theme Changer"
Uninstall = "Rikisoft Theme Changer"
CabFiles = Theme_Changer_SP2002.STRONGARM.cab

Again run of the mill.

General Tips

Lastly I include some tips and tricks I've picked up, most people won't need them, but from time to time they might answer someones question, so keep them in mind, you might use them one day.

 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个build脚本欣赏 的相关文章

  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • NodeJS Express Windows 最大连接数设置

    在哪里设置nodejs的最大连接数 用于使用express get 在 Windows 10 中 与linux中的最大文件 描述符 设置有关吗 有该设置的 Windows 版本吗 最好是在nodejs中进行设置 以便在迁移到unix时兼容
  • 从数据库和文件系统中删除文件

    我有一个表引用我们网络上共享位置中的文件 将文件路径存储在数据库中 我有一个按钮需要从数据库中删除记录并从文件系统中删除文件 foreach var report in reports string filePath report Repo
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 在哪里可以找到 Windows 7 UX 指南中推荐的图标/动画?

    Windows 7 UX 指南有很好的插图和图标示例 但我在 SDK 中确实找不到它们 他们藏在某个地方 还是找不到 如果您谈论的是常见的 UI 图标 那么您应该以编程方式获取它们 例如 您可以使用 var errIcon HICON be
  • 非托管 C++ 中的默认打印机

    我正在寻找一种使用非托管 C 查找 Windows 默认打印机名称的方法 找到了大量 NET 示例 但非托管没有成功 谢谢 以下是如何获取当前打印机和默认打印机的列表 如果有一台设置为默认打印机 另请注意 如果用户没有打印机或未将打印机名称
  • 卸载以前的版本安装新版本的安装项目

    我创建了一个安装项目并安装在Windows系统中 在安装安装项目之前 我将其设置为 DetectNewInstallerVersion true and RemovePreviousVersion True 我也每次都换版本 但是 如果我重
  • 尽管 if 语句,Visual Studio 仍尝试包含 Linux 标头

    我正在尝试创建一个强大的头文件 无需更改即可在 Windows 和 Linux 上进行编译 为此 我的包含内容中有一个 if 语句 如下所示 if defined WINDOWS include
  • Google Cloud SDK 无法安装“.exe;.bat;.com”不是可识别的命令

    我正在尝试在 Windows 10 笔记本电脑上安装 google cloud SDK 我尝试删除安装文件夹中的空格 并将路径添加到我的环境变量中 完整的错误是 Output folder C Users user Documents Do
  • Windows 中的蓝牙 AVRCP 命令会触发哪些事件

    可以这么说 只是在做一些高级侦察 对于我的潘多拉客户 Elpis http elpis adamhaile net 我支持全局媒体键 键盘上的 MediaPlayPause MediaNext 等 并且我希望能够支持AVRCP http e
  • 将所有文件与指定目录(和子目录)中的所有文件进行二进制比较

    我需要将目录及其子目录中包含的所有文件与同一目录及其子目录中包含的所有其他文件进行比较 并将匹配文件的路径记录到文本文件或 CSV 我意识到有一些软件工具可以做到这一点 但除非它可以在 Windows 中开箱即用 否则我将不被允许在我的网络
  • 使用管理员权限打开cmd(Windows 10)

    我有自己的 python 脚本来管理我的计算机上的 IP 地址 它主要在命令行 Windows 10 中执行netsh命令 您必须具有管理员权限 这是我自己的计算机 我是管理员 运行脚本时我已经使用管理员类型的用户 Adrian 登录 我无
  • 将 kinit 与 keytab 文件一起使用时会发生什么

    希望对kinit和keytab文件的使用有更多的了解 例如 如果我已经为某个服务生成了一个密钥表文件 该服务通过以下方式注册到活动目录 ktpass mapuser to someuseraccount ktab k mykeytab a
  • TRACKER:错误TRK0005:无法找到:“CL.exe”。该系统找不到指定的文件

    我尝试在 Windows 8 上的 Node js 项目中执行以下命令 npm 安装 电子邮件受保护 cdn cgi l email protection 但我收到一个错误 我不知道如何处理 TRACKER 错误TRK0005 无法找到 C
  • 将变量写入 Ansible 中的文件

    我通过 URI 模块提取 JSON 并希望将接收到的内容写入文件 我能够获取内容并将其输出到调试器 因此我知道已收到内容 但我不知道写入文件的最佳实践 来自的重要评论tmoschou https stackoverflow com user
  • npm package.json bin 无法在 Windows 上运行

    我正在尝试通过 package json 启动我的 cli 工具bin财产 我有以下内容 name mycli bin bin mycli 当我在包路径中打开 cmd 并输入 mycli 时 它表示该命令无法识别 我应该运行 npm 命令吗
  • 将文件夹中的每个文件移动到以该文件命名的自己的文件夹中的批处理脚本?

    所以如果我有 folder file1 txt folder file2 jpg folder file3 py 我想创建 folder file1 file1 txt folder file2 file2 jpg folder file3
  • Windows 上最快的屏幕捕获方法

    我想为Windows平台编写一个截屏程序 但不确定如何捕获屏幕 我知道的唯一方法是使用 GDI 但我很好奇是否还有其他方法可以实现此目的 如果有的话 哪种方法产生的开销最小 速度是首要任务 截屏程序将用于录制游戏镜头 不过 如果这确实缩小了
  • 从 make 文件中禁用 make 内置规则和变量

    我想根据传递禁用内置规则和变量 r and R options http www gnu org software make manual make html Options Summary从 make 文件内部到 GNU make 也欢迎

随机推荐

  • 软件测试面试HR常问问题及回答技巧,看完丝毫不需要慌,稳过

    前言 当你去一家公司面试 可能会经历好几轮的面试 然后到HR面试 很多公司的HR都有一票否决权 可以直接决定录不录用你 就算你的技术很硬 实例很强 HR不满意还是可以不录用你 尤其对于技术一般的人 HR的这关面试就显得极为重要了 我这个里准
  • memtool使用指南

    最近在用Infineon Memtool 的过程中遇到的一点问题 看了英文help解决了 现总结一下memtool的使用指南 1 target选择change 选择芯片型号 添加配置文件 打开电源 2 对右边的各个rom进行remove a
  • GNU Linux核心命令和工具的源代码路径

    GNU Linux核心命令和工具的源代码路径 2015 08 20 09 44 57 分类 LINUX 原文地址 GNU Linux核心命令和工具的源代码路径 作者 ubuntuer Commands and Utilities The t
  • Linux系统下安装Redis-7.0.0

    一 准备工作 1 下载安装新版的gcc编译器 redis的安装需要gcc环境的支持 所以首先要检查下服务器上时候已经安装了gcc环境 离线安装gcc包 执行安装命令 rpm ivh rpm nodeps force 1 1 下载Redis客
  • 前端面试题(js篇)

    1 解释一下什么是闭包 什么是闭包 函数使用了不属于自己的局部变量 函数套函数 里面函数使用了外面函数定义的变量 闭包的作用 避免全局污染 闭包的缺点 使用过多会造成内存泄漏 占用的内存释放不掉 2 js中的本地存储有哪些 区别是什么 1
  • QT日常报错解决方案

    日常报错 3 1 undefined reference to vtable vtable 表示的是虚表 这个错误出现时 请检查你的父类所有虚函数是否实现 或者子类是否把父类的虚函数都处理完 注意 析构函数也算 有时候一开始没有添加Q OB
  • 专业程序员开发-老狼孩插件懒人精灵版

    老狼孩插件懒人版 综合分类版 v1 7 5有新版啦 完全开放 免费使用 全新改版 1 优化 调试输出默认延迟1000毫秒 2 新增 更新类 阿里云json版热更新 定时关闭界面自动更新 无界面自动更新 3 新增 更新类 坚果云json版热更
  • 服务器太小是什么情况 显示小,服务器内存显示的比实际的小

    服务器内存显示的比实际的小 内容精选 换一换 弹性云服务器创建成功后 使用free m命令查询内存大小 查询结果与实际配置不符 较之创建时的配置要小一些 示例 假设创建该弹性云服务器时 配置的实际内存大小为4194304KB 即4096MB
  • QT之QChart的简介

    QT之QChart的简介 1 创建图表 2 设置图表标题和坐标轴标签 3 定制图表样式 4 显示图表 5 保存图表为图像 QChart 是 Qt Charts 模块中的一个主要类 用于创建和管理图表 QChart 提供了一组用于创建各种类型
  • Vue实现面包屑功能(el-breadcrumb)

    vue3 elementPlus 实现面包屑功能 文章后面附效果图 数据结构 首先展示一下数据基础结构 红色框框是默认存在的数据 其他数据就是通过选中侧边栏菜单进行数据插入 关键数据字段为 path meta 准备侧边栏 首先需要自己准备一
  • 常用对象类型之间的转换

    ads point 是原来的ADS 编程中定义的一种数据类型 其定义为 typedef ads real ads point 3 而ads real 则被定义为 typedef double ads real 可以看出 ads point
  • 前端知识14:webpack打包图片资源

    需要下载url loader 和 file loader两个包 前者依赖于后者 安装 npm i url loader file loader D 图片在css中使用的场景 注意图片在src目录下 注意图片路径的写法用的是相对路径 引用插件
  • C++ vector 容器浅析

    C STL 教程 C STL 教程 C vector 容器浅析 C vector 容器浅析 个人理解 vector就是一个模板类 具有元素多少可以变化的优点 一般为了根据数据类型 会选择显式实例化 下为一个利用vector模板 将一维数组转
  • 【华为OD统一考试B卷

    题目描述 一群大雁往南飞 给定一个字符串记录地面上的游客听到的大雁叫声 请给出叫声最少由几只大雁发出 具体的 1 大雁发出的完整叫声为 quack 因为有多只大雁同一时间嘎嘎作响 所以字符串中可能会混合多个 quack 2 大雁会依次完整发
  • blender 线框效果/Line Art

    Blender 2 93 新功能 Line Art 效果 哔哩哔哩 bilibilihttps www bilibili com video BV19Z4y1w7mk from search seid 1496511710922071136
  • 在Linux系统如何修改profile文件后立即生效呢?

    方法1 让 etc profile文件修改后立即生效 可以使用如下命令 etc profile 注意 和 etc profile 有空格 方法2 让 etc profile文件修改后立即生效 可以使用如下命令 source etc prof
  • go语言字符类型byte与rune

    字符串中的每一个元素叫做 字符 在遍历或者单个获取字符串元素时可以获得字符 Go语言的字符有以下两种 一种是 byte 型 是 uint8 的别名 代表了 ASCII 码的一个字符 另一种是 rune 类型 代表一个 UTF 8 字符 当需
  • Java中JDBC的数据库连接池

    数据库连接池 池参数 所有池参数都有默认值 初始大小 10个 最小空闲连接数 3个 增量 一次创建的最小单位 5个 最大空闲连接数 12个 最大连接数 20个 最大的等待时间 1000毫秒 四大连接参数 连接池也是使用四大连接参数来完成创建
  • 快速+完美+准确解决SpringBoot项目打包后的SNAPSHOT.jar中没有主清单属性的问题

    目录 问题再现 问题解决 结果 问题再现 xxxx 0 0 1 SNAPSHOT jar中没有主清单属性 问题解决 1 出问题的pom xml文件
  • 一个build脚本欣赏

    build scripts My basic build bat file looks like this echo off erase ThemeChanger exe copy Loader ArmRel Loader exe copy