简介:友益文书 8.7.5 映山红心系黄英版是一套面向电子书制作初学者与个人站长的 exe 电子书生成工具,适合把图文内容快速打包为可独立运行的 Windows 电子书程序,省去自行搭建阅读器的步骤,也便于研究同类文档工具的资源组织方式。压缩包共 15 个文件、约 2.26MB,其中 8 个 gif 界面图标与 1 个 css 主题样式负责外观呈现,2 个 js 脚本和 1 个 manifest 清单支撑交互与运行配置,主程序 exe 承担电子书编译,yws 工程文件与 txt 说明则提供示例项目和使用提示,整体结构紧凑,解压后即可对照研究。该版本在社区中被认为破解较为完整,目前已有 379 人浏览学习。读者可以拆解图标、脚本与样式资源,理解电子书程序的界面布局与资源组织方式,并借助示例工程观察章节树、页面导航等模块的实现思路,为 exe 打包与本地文档工具的二次开发积累参考。
1. 装前先把环境摸清:exe 电子书工具为什么也能装崩
上周帮一个做培训资料的朋友装友益文书,8.7.5 这个版本,安装包双击一路下一步,装完打开就提示部件损坏,重装三次都一样。后来查出来跟安装包没关系——系统里同时留着两套运行库,临时目录还被某清理软件改到了带中文的路径。这类 exe 电子书工具看着像绿色小软件,实际对系统环境、字体、输出目录权限都有要求,装不好就是编译到九成卡死、生成的电子书在别人机器上打不开、封皮中文全变方块。这篇按我实际装的顺序写:环境怎么查、8.7.5 怎么装、参数怎么配、翻车了怎么救,适合要批量做 EXE 电子书的人照着走一遍。
2. 安装包核对与 8.7.5 安装:路径、组件、首次启动
搜友益文书的人,十有八九会先撞上一堆来路不明的整合包。我的态度很直接:只装来源清楚的原版安装包,整合版省的那几步,后面排查故障时要花十倍时间还回来。安装包本身是一个 exe,文件名通常很长,版本号 8.7.5 后面跟一串版本代号,下载完先别急着双击,核对比装错版本重要得多。
2.1 装之前先核对系统与安装包
先说环境。这类工具出生的年代偏早,对老系统友好,对新系统反而要动点手脚。下面这份是我自己用的经验值,不是官方硬指标,但按这个配基本不会在安装阶段卡住。
| 项目 | 最低可用 | 我一般配到 |
|---|---|---|
| 操作系统 | Windows 7 SP1 32 位 | Windows 10 64 位 21H2 以上 |
| 内存 | 2GB | 8GB |
| 磁盘 | 系统盘 500MB 可用 | 非系统盘独立目录,预留 2GB |
| 显示 | 1024×768 | 1920×1080,缩放 100% |
| 权限 | 管理员账户 | 管理员账户 + 关闭 UAC 弹窗拦截 |
Win11 上能装,但界面控件在 125% 以上缩放时容易错位,这个后面第 3 章单独讲。系统盘剩余空间别卡太死,编译 EXE 时会在临时目录里生成中间文件,空间不够的表现是编译进度条走到一半直接消失,没有任何报错,这种“黑匣子”式的失败最费时间。
核对安装包本身,用 PowerShell 看三个信息就够:
# 核对安装包:文件名、体积、修改时间、数字签名状态 $pkg = "D:\Downloads\youyi_setup_8.7.5.exe" Get-Item $pkg | Select-Object Name, Length, LastWriteTime Get-AuthenticodeSignature $pkg | Select-Object Status, SignerCertificateLength是字节数,跟下载页标注的大小对不上就重新下,别抱侥幸。Get-AuthenticodeSignature的Status有三种常见结果:Valid说明签名有效;NotSigned在老国产工具里很普遍,不代表文件有问题,但你就得靠来源和体积来判断;HashMismatch是签名和文件内容不匹配,这种直接删掉重下,没有任何商量余地。我一般还会对同一个安装包算一次 SHA256 存到工作目录的checksums.txt里,以后团队里谁装的版本有问题,一比对就知道是不是同一个包。
# 生成并留存哈希,方便多台机器比对是否同一个安装包 Get-FileHash $pkg -Algorithm SHA256 | Format-List Algorithm, Hash, Path-Algorithm选 SHA256 而不是 MD5,不是为了防谁,是为了避免不同文件撞出同一个值这种小概率事件干扰判断。这一步多花十秒,后面少吵很多架。
2.2 安装路径和组件的取舍
安装向导里第一个要动手的是路径。默认往C:\Program Files (x86)里塞,程序本身没问题,但这类工具会把自己的模板、示例、字体缓存放同一层目录下,后面你想单独备份工程配置就很麻烦。我固定用这样一套结构:
D:\Tools\YouYiWenShu\ 程序安装目录,纯英文,无空格 D:\eBookWork\projects\ 工程文件,一个书一个子目录 D:\eBookWork\assets\ 图片、字体、模板等公共素材 D:\eBookWork\output\ 编译输出的 EXE 电子书路径里不要出现中文、空格、括号,也不要放在 OneDrive 或任何同步盘的目录下。同步盘会在编译过程中锁定中间文件,表现是偶发的写入失败,而且不是每次必现,属于典型的玄学问题,遇到了能查一整天。我见过有人在D:\我的文档\电子书(新)\下面编译,十次里失败两三次,换到纯英文路径后一次没再犯。
组件选择这一步,安装向导一般会给主程序、示例模板、附加字体、桌面快捷方式几项。示例模板建议勾上,第一次做书的时候拿来对照目录结构和封皮尺寸很省事;附加字体也勾上,体积不大,能避免后面封皮中文变方块。桌面快捷方式随意,我习惯不勾,统一从开始菜单或固定在任务栏,桌面图标多了反而容易点错版本。
安装过程中如果弹出“是否替换现有文件”或“检测到旧版本”,先停下来。这说明机器上还留着老版本,直接覆盖会留下注册表残留,后面启动报“部件损坏”多半就是这个原因。正确顺序是先到控制面板卸载旧版,重启一次,再装 8.7.5。
2.3 首次启动要做完的三件事
装完第一次启动,别急着新建工程,先把三件事做完。
第一,设置默认工程目录。在选项或设置里把“默认打开/保存目录”指到D:\eBookWork\projects,不设的话它默认落在安装目录下,重装一次全丢。第二,关掉自动检查更新。老版本的更新提示有时候会覆盖掉你调好的配置文件,尤其是界面语言和模板路径这两项,我一般直接在设置里把自动更新关掉,需要时手动去查。第三,确认界面语言和默认字体。有的安装包会根据系统区域自动选语言,选错了菜单名会变成半中半英,虽然不影响功能,但找参数的时候很别扭。
这三步做完,退出程序再重新打开一次,确认设置被记住了。记不住说明配置文件写不进去,多半是安装目录权限问题——把程序目录的写权限给当前用户,或者干脆用管理员身份运行一次让它把配置落盘。
3. 配置运行环境:兼容性、运行库、字体三处最容易漏
安装完成只是把文件放进去了,能不能稳定编译出 EXE 电子书,取决于三处环境配置。这三处任何一处不到位,表现都不是“打不开软件”这么直白,而是各种莫名其妙的中间态失败,所以值得单独花一章讲清楚。
3.1 兼容性模式与管理员权限怎么设
8.7.5 在 Win10 上多数情况能直接跑,但涉及写注册表、写系统目录、调用老的打印和编码组件时,权限不够就会静默失败。最稳妥的做法是给主程序同时打上“兼容模式”和“管理员运行”两个标记。手动操作是右键 exe → 属性 → 兼容性 → 勾选“以兼容模式运行这个程序”选 Windows 7,再勾选“以管理员身份运行此程序”。
机器多的时候我会用注册表批量设,改之前先把整个键导出备份:
# 改前备份,出问题能一键还原 reg export "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$env:USERPROFILE\Desktop\compat_backup.reg" # 给主程序打上 Win7 兼容 + 管理员运行标记 $exe = "D:\Tools\YouYiWenShu\YouYi.exe" $key = "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" New-Item -Path $key -Force | Out-Null Set-ItemProperty -Path $key -Name $exe -Value "~ WIN7RTM RUNASADMIN"WIN7RTM对应 Windows 7 兼容层,RUNASADMIN是管理员运行,两个标记用空格分隔,前面的~是固定前缀不能省。这几个值写在当前用户的HKCU下,只对当前登录账户生效,换账户要重设,这也是我不用HKLM全局写的原因——全局写容易和其他软件的兼容性设置互相覆盖。设完重启一次资源管理器或者注销重登,标记才生效。
需要提醒的是,管理员运行会让程序拖拽文件的功能失效。这是 Windows 的机制,不是软件的问题。做书的时候如果要频繁从资源管理器往界面里拖素材,可以临时取消管理员标记,等配置改完再勾回去。
3.2 运行库和字体:缺一样就出方块字
老工具对运行库的依赖逃不掉,常见的做法是提前把 VC++ 运行库和 .NET Framework 补齐,别等报错再一个个装。先查机器上已经有什么:
# 列出已安装的 VC++ 运行库和 .NET 组件 Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | ForEach-Object { (Get-ItemProperty $_.PSPath -ErrorAction SilentlyContinue).DisplayName } | Where-Object { $_ -match "Visual C\+\+|\.NET" } | Sort-Object -Unique输出的列表里,VC++ 2010、2015-2022 这两个是重点,x86 和 x64 都要有,因为这类工具的主程序往往是 32 位的,只装 x64 运行库照样起不来。.NET Framework至少要有 3.5 和 4.x,Win10 自带 4.x 但 3.5 是可选功能,默认没开,需要到“启用或关闭 Windows 功能”里勾上。装完运行库一定要重启,不重启的话注册表里的组件注册信息没刷新,程序照样找不到。
字体是第二个大坑。封皮上写中文变成一排方块,或者目录里某些字显示成问号,基本都是字体缺失。查一下系统里注册了哪些中文字体:
# 检查关键中文字体是否已注册 (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts").PSObject.Properties | Where-Object { $_.Name -match "宋体|黑体|雅黑|楷体|仿宋" } | Select-Object Name, Value宋体、黑体、微软雅黑这三个是底线,缺哪个就从安装包的附加字体里补,或者用系统字体安装功能手动装。有个细节:只把 ttf 文件复制到C:\Windows\Fonts目录不等于安装,注册表里没登记,部分程序就认不到。正确做法是右键字体文件选“安装”,或者复制进去之后重启一次让系统重建字体缓存。
3.3 工作目录与输出目录的规划
目录规划看着是小事,实际是编译失败率最高的诱因之一。三条硬规则:不用中文路径、不用带空格的路径、不放同步盘目录。另外临时目录也要看一眼,某些清理工具会把TEMP改到很深的自定义路径,路径一长,编译时的中间文件写入就可能失败。
# 查看当前用户临时目录,确认路径简短且存在 $env:TEMP Test-Path $env:TEMP如果$env:TEMP指向的路径特别长或者带中文,临时改到D:\eBookWork\tmp再跑编译,只在当前会话里改,不动系统全局设置:
# 仅在当前 PowerShell 会话内改临时目录,关闭即失效 $env:TEMP = "D:\eBookWork\tmp" $env:TMP = "D:\eBookWork\tmp"这样改只影响从这个窗口启动的程序,不影响系统里其他软件,属于比较安全的调试手段。确认问题出在临时目录之后,再考虑要不要在系统层面调整。
输出目录单独放,别和工程目录混在一起。工程目录里是素材和配置文件,输出目录里是编译产物,混在一起的话,下次编译时程序可能把上次的产物当素材扫进去,结果是电子书里莫名其妙多出一份上一版的内容。
4. 制作参数配置:从素材导入到 EXE 封装怎么定参数
环境配好之后,真正决定成品质量的是编译参数。这一章按做一本书的完整顺序走:素材怎么整理、目录和封皮怎么设、最后封装成 EXE 时那几个关键开关怎么定。
4.1 素材整理与导入的目录结构
素材在导入之前就要整理好,别指望在工具里一个个调。我固定用这样一套结构,一本书一个目录:
D:\eBookWork\projects\demo_book\ ├── content\ 正文文件,HTML 或 TXT,统一 UTF-8 │ ├── 01_intro.html │ ├── 02_setup.html │ └── 03_faq.html ├── images\ 所有图片,文件名纯英文小写加下划线 │ ├── cover.jpg │ └── fig_01.png └── config\ 目录配置、封皮配置等文本文件两个要点。第一,正文文件统一 UTF-8 无 BOM 编码,带 BOM 的文件在部分老版本里开头会多出几个乱码字符,位置固定在正文最前面,很容易被当成软件 bug。第二,图片文件名不要用中文和空格,正文里引用图片用相对路径images/fig_01.png,绝对路径换台机器就断。图片体积控制在 200KB 以内,超过的话先压一遍,单张几 MB 的大图在编译阶段会明显拖慢速度,图多了就容易卡死。
TXT 素材导入时注意分段规则,工具一般按空行或固定行宽切分章节,格式不统一的话切出来的章节数量对不上预期。我一般先把 TXT 里的章节标题统一成同一种标记,再导入,比导入之后在目录编辑器里手动改省事得多。
4.2 目录、封皮和页面参数的设置
目录可以直接由正文的标题层级自动生成,也可以手动编辑。自动生成的准则是认<h1>到<h3>,所以正文里的标题标签要规范,别用加粗大字号冒充标题,那样生成出来的目录是空的。手动编辑适合章节少的书,条目多了以后维护成本很高。
封皮参数主要是尺寸和格式。尺寸按你最终设定的阅读窗口比例来,窗口 800×600 就用 4:3 的图,拉伸变形基本都是比例不匹配造成的。格式优先 JPG,PNG 带透明通道的图在某些封装模式下会显示成黑底。封皮上如果要放中文标题,最稳的做法是把文字直接做进图片里,而不是在工具里用文字对象叠加,这样换了机器也不会因为字体缺失变成方块。
页面参数里几个值得调的:
| 参数 | 建议值 | 说明 |
|---|---|---|
| 阅读窗口大小 | 800×600 或 1024×768 | 按目标读者的屏幕定,别默认全屏 |
| 是否显示工具栏 | 显示 | 隐藏后读者找不到目录入口 |
| 页面切换效果 | 无或淡入 | 花哨的翻页效果在老机器上会卡 |
| 正文字号 | 14px 到 16px | 小于 12px 在笔记本上看着吃力 |
| 编码 | UTF-8 | 与素材编码保持一致 |
页面切换效果这条容易被忽略。加了复杂动画之后,在低配机器上翻页会有明显延迟,读者体验反而差。我做培训资料一律关掉动画,稳比炫重要。
4.3 编译输出 EXE 的参数取舍
最后一步是封装成 EXE。几个开关直接关系到分发效果,逐个说。
是否压缩:开了之后体积能小一截,但启动时要解压到临时目录,首次打开会慢一两秒。资料类电子书页数不多的话建议开,几百页带大量图片的就不建议,启动等待明显。
是否允许复制和打印:这两个是权限开关,不是技术开关。给外部读者的资料一般允许打印、限制复制;内部资料可以两个都放开。设了限制之后,读者用截图照样能拿走内容,所以这只是提高门槛,不是防护手段,别在这上面花太多心思。
是否加打开密码:加了之后每次打开都要输,适合确实需要控制的场景。密码忘了没有后悔药,工具本身不提供找回,工程文件里也不一定存明文,所以设完密码一定在工程配置里单独记一份。
EXE 图标替换:换成自己项目的图标,分发出去更像正经资料。图标要用 ico 格式,尺寸至少包含 32×32 和 48×48 两档,只放一档的话在某些系统上会显示成默认图标。
编译前把输出路径指到D:\eBookWork\output,文件名用英文,别用中文书名直接当文件名——中文文件名在部分邮件系统和网盘里会被转码,读者下载下来是一串乱码,第一印象就差了。
5. 避坑与排查:安装和编译阶段最常见的五个翻车点
这一章是我自己踩过、也帮别人排查过的五条,按现象、原因、解决三段写。遇到问题先对照这里,能省掉大部分乱试的时间。
5.1 安装和启动阶段的三条
第一条,启动提示部件损坏或缺少组件。现象是双击图标之后弹一个短提示就退出,重装无效。原因通常是旧版本卸载不干净,注册表里还留着旧路径,或者 VC++ 运行库只装了 x64 没装 x86。解决顺序是:控制面板卸载当前版本,用管理员权限清理安装目录残留文件夹,重启,补齐 x86 运行库,再重新安装 8.7.5。装完先别开程序,重启一次让组件注册生效。
第二条,界面控件错位、按钮点不到。现象是窗口里的按钮叠在一起,或者对话框底部的确定按钮跑到屏幕外面。原因是系统显示缩放设了 125% 或 150%,而老程序的界面是按 96 DPI 写死的。解决办法是右键程序 exe → 属性 → 兼容性 → 更改高 DPI 设置 → 勾选“替代高 DPI 缩放行为”,缩放执行选“应用程序”。这样系统不再强行拉伸界面,控件位置就正常了。临时用的话也可以把系统缩放调回 100%,但那样整个桌面都变小,不划算。
第三条,安装到最后一步卡住不动。现象是进度条停在九成多,等十分钟也没反应。原因多半是杀毒软件在扫描写入的 exe 文件,或者安装目录被其他进程占用。解决方法是先把安装包所在目录和安装目标目录加进杀毒软件的排除列表,关掉资源管理器里打开着的目标文件夹窗口,再重跑安装。如果还是卡,用管理员身份打开命令提示符,从命令行启动安装包,能看到更详细的输出。
5.2 编译和分发阶段的两条
第四条,编译到一半进度条消失,没有任何报错。现象是点了编译之后进度条走到某个位置直接不见,输出目录里没有产物。原因几乎都是素材问题:单张图片过大、正文里有非法字符、或者临时目录空间不足。排查顺序是先看临时目录所在磁盘的剩余空间,再把图片逐张压到 200KB 以内,最后检查正文文件是不是 UTF-8 编码。我一般的做法是先把素材减半编译一次,能过就说明是素材量的问题,再逐步加回去定位到具体文件。
第五条,生成的 EXE 在别人机器上被杀毒软件拦截。现象是自己机器上能正常打开,发给别人之后对方提示有风险或者直接被删。原因是自行封装的 EXE 没有代码签名,启发式扫描容易误判。这不是靠改一个参数能彻底解决的,实际的应对是:分发时用压缩包打包,附一份说明写清楚文件来源和用途;有条件的用带签名的分发渠道;不要用二次打包工具再套一层壳,套壳之后误报率只会更高。这一条没有技术上的后悔药,只能靠分发方式规避。
6. 装完怎么验证跑通:三步验收和一份能复用的检查习惯
装完不等于跑通。我的验收固定分三步,缺一步都不算完。
第一步,本机打开验证。双击生成的 EXE,从封皮开始,依次点目录里的每一个条目,确认能跳转、能返回,图片全部显示,最后一页能正常退出。目录跳转错位是最高频的问题,通常出在正文文件的命名和目录配置对不上,改完重新编译一次即可。
第二步,换一台干净机器验证。这一步最容易被跳过,也最能暴露问题。找一台没装过这个工具的电脑,把 EXE 拷过去直接运行,确认不需要额外装运行库、不需要管理员权限就能打开。如果打不开,说明封装时依赖了本机环境,回到编译参数里检查是否勾选了独立运行相关的选项。
第三步,离线环境验证。拔掉网线或者断掉无线,再打开一次,确认没有任何需要联网加载的资源。有些模板会在运行时去拉在线字体或统计脚本,联网时看不出来,断网就露馅。
产物本身的完整性,用一段脚本核一下:
# 校验输出产物:体积、哈希、PE 文件头 $exe = "D:\eBookWork\output\demo_book.exe" $f = Get-Item $exe "体积: {0:N2} MB" -f ($f.Length / 1MB) Get-FileHash $exe -Algorithm SHA256 | Select-Object Hash # 读取前两个字节,MZ 是合法 Windows 可执行文件的标志 $head = [System.IO.File]::ReadAllBytes($exe)[0..1] -join ($head | ForEach-Object { [char]$_ })最后一行输出MZ说明文件头正常,输出别的字符说明编译产物损坏,直接重新编译,别浪费时间找别的原因。体积也要看一眼,正常一本书的 EXE 在几 MB 到几十 MB 之间,如果只有几十 KB,基本可以断定图片和正文都没打进去,回去检查素材路径是不是用了绝对路径。
这套流程走顺之后,我给自己定了个习惯:每次交付前,本机、干净机、离线三步必须全过一遍,脚本输出和哈希值一起存进工程目录的release_check.txt。有一次偷懒只在本机点了两下就发出去,对方打开是空白页,回头查了半小时才发现是素材目录被我不小心移走了。从那以后我每次编译完都强制走一遍这三步,再忙也不省。希望这套流程能帮到你,少走几段弯路。
本文还有配套的精品资源,点击获取