|
本帖最后由 Bluebells 于 2024-10-26 10:41 编辑
一提到 Paragon APFS for Windows, 某人就默认这是个只在 WinPE 使用且没啥用处的应用程序
我觉得这是一个很搞笑的结论! Paragon 有很多文件系统解决方案的产品, 但人家本身是设计用于正常的操作系统
Paragon APFS for Win10/11PE x64 的制作其实就是该应用程序的运行环境初始化(所谓的"绿化")问题
某些人说, 若要在 WinPE 使用, 需要该 WinPE 支持 msi 安装组件, 那是因为他直接使用该软件的安装包
其实只要解包出来, 再执行该应用程序的运行环境初始化就可以, 根本无需 WinPE 支持 msi 安装组件(当然, 这涉及软件绿化门槛问题)
1. 安装包解包
解包方式有很多, 这里推荐使用 LessMSI
2. 整理文件结构
提取并整理后的文件目录树结构如下:
│ APFS for Windows by Paragon Software.exe
│ dokan.dll
│ extmounter.exe
│ FS4WinUI_lang.qm
│ libeay32.dll
│ msvcp140.dll ;VC 运行库文件之一, 可根据所使用的 WinPE 是否需要该文件而放置到此处(其它运行库文件也一样)
│ paragon_service.exe
│ Qt5Core.dll
│ Qt5Gui.dll
│ Qt5Network.dll
│ Qt5WebSockets.dll
│ Qt5Widgets.dll
│ qtbase.qm
│ ssleay32.dll
│ vcruntime140.dll ;VC 运行库文件之一
│
├─dokandrv10x64
│ dokan.cat
│ dokan.inf
│ dokan.sys
│
├─platforms
│ qwindows.dll
│
└─utils
fsdump.exe
3. 编写程序运行环境初始化脚本
- _SUB GetNTVersion
- TEAM SET$# &pMajorVersion=*4 0| SET$# &pMinorVersion=*4 0| SET$# &pBuildNumber=*4 0
- CALL $--qd --ret:&&ret ntdll.dll,RtlGetNtVersionNumbers,*&pMajorVersion,*&pMinorVersion,*&pBuildNumber
- IFEX #%&ret%=0,EXIT
- TEAM ENVI?int &pMajorVersion=&MajorVersion| ENVI?int &pMinorVersion=&MinorVersion| ENVI?int &pBuildNumber=&BuildNumber
- ENVI-ret %~1=%MajorVersion%
- ENVI-ret %~2=%MinorVersion%
- ENVI-ret %~3=%BuildNumber%
- _END
- _SUB DetectRunningEnvironment
- IFEX "%&CurDir%\APFS for Windows by Paragon Software.exe",! EXIT FILE
- IFEX "%&CurDir%\dokandrv10x64\dokan.inf",! EXIT FILE
- CALL GetNTVersion &MajorVersion
- IFEX $%&MajorVersion%<10,EXIT FILE
- IFEX $%&bX64%=0,EXIT FILE
- REGI $HKLM\SYSTEM\CurrentControlSet\Control\SystemStartOptions,&&SSO
- SED &&MNT=?:0,MININT,,%&SSO%
- FIND $%&MNT%=0,EXIT FILE
- _END
- _SUB Initialize
- SITE ?&FVER,&PVER=FVER,%&CurDir%\APFS for Windows by Paragon Software.exe
- IFEX $%&PVER%<4,ENVI &DFN=Paragon! ENVI &DFN=Paragon Software
- ;安装并启动 dokan 驱动程序
- SERV ?&Ret2 dokan
- IFEX |%&Ret2%=1,
- {
- ENVI^ DisX64=1,OldCfg
- DEVI $%&CurDir%\dokandrv10x64\dokan.inf,DefaultInstall,128
- ENVI^ DisX64=%OldCfg%
- SERV dokan
- }
- ;预定义一些配置(禁用自动更新, 禁止收集匿名统计信息, 禁用日志记录)
- REGI #HKLM\SOFTWARE\Wow6432Node\Paragon Software\APFS for Windows by Paragon Software\service\\AutoUpdate=0
- REGI #HKLM\SOFTWARE\Wow6432Node\Paragon Software\APFS for Windows by Paragon Software\service\\CollectAnonymStatistics=0
- REGI #HKLM\SOFTWARE\Wow6432Node\Paragon Software\APFS for Windows by Paragon Software\service\\Logging=0
- ;添加版本号信息到注册表(没啥用, 强迫症患者所需)
- REGI $HKLM\SOFTWARE\Wow6432Node\Paragon Software\APFS for Windows by Paragon Software\Update\\version=%&PVER%
- ;某些和谐版本需要存在"%ProgramData%\Paragon\APFS for Windows"目录才能成为已注册版本
- IFEX "%ProgramData%\%&DFN%\APFS for Windows",! MDIR "%ProgramData%\%&DFN%\APFS for Windows"
- ;创建并启动 ParagonAPFSMounter 服务项
- SERV-Create ParagonAPFSMounter,%&CurDir%\paragon_service.exe,16,2,1,,,,ParagonAPFSMounter
- SERV ParagonAPFSMounter
- ;创建桌面快捷方式
- IFEX "%&Desktop%\APFS for Windows.lnk",! LINK %&Desktop%\APFS for Windows,%&CurDir%\APFS for Windows by Paragon Software.exe
- _END
- CALL DetectRunningEnvironment
- SERV ?&Ret1 ParagonAPFSMounter
- IFEX |%&Ret1%=1,CALL Initialize
复制代码 将上述脚本代码保存为 Initialize.ini 文本文件, 并将该文件放置在 APFS for Windows 主程序所在目录即可
PS: 如果你不需要进行运行环境判断, 直接使用 _SUB Initialize 代码段里面的内容即可
4. 使用 PECMD 的 LOAD 命令加载上面创建的 Initialize.ini 文件即可完成 APFS for Windows 的运行环境初始化过程
|
|