文章搜集于网络,一为分享,二为备忘。 使用Portableapps.com Launcher制作便携软件:以Evernote Portable为例PortableApps.com Launcher(以下简称PAL)是PortableApps.com开发的便携软件制作工具。本质而言,它是一个NSIS代码生成器,让使用者不需要直接写代码便可以制作NSIS便携软件。 在制作便携软件前,我们需要准备如下工具: 一个虚拟机软件,例如 VMWare ,Windows Virtual PC,或者免费的 VirtualBox 。在虚拟机中安装 Windows XP ,Windows 7 系统,如果有条件,建议同时安装 64 位系统以便进一步测试。装好系统后,切勿安装任何额外软件、运行库,在最纯净的环境下建立快照,此后每次测试软件,均从此快照启动。 一个软件行为监控软件,例如 Total Uninstall,或者免费的 RegShot 。安装到虚拟机内。 下载 PortableApps.com Launcher 和 NSIS Portable Unicode。将它们安装到同一目录。例如: PAL模板 (PortableApps.com Application Template)。 1. 分析将 Evernote 安装程序拷贝到虚拟机内,运行 Total Uninstall (或 RegShot)扫描系统,安装程序,再次扫描,对比快照。 通过对比,可发现Evernote在 %APPDATA% 、 %LOCALAPPDATA% 以及NT6.0以上的 LocalLow 中写入文件,在注册表 HKCU\Software\Evernote 中写入键值, HKCU\Software\Evernote\Evernote\EvernotePath 的值为Evernote数据库的位置。 在虚拟机中提取纯净的程序文件,位于: C:\Program Files\Evernote 。 我们要制作这样一个便携软件启动器(Launcher): Launcher启动——备份本地数据——导入便携数据——将数据库路径写入注册表——启动主程序——主程序退出——导出便携软件数据——清理便携软件垃圾——恢复本地数据——Launcher退出。 2. AppInfo下载PAL模板,解压后,重命名AppNamePortable为EvernotePortable。在App下新建Evernote目录,将提取出的程序文件复制到此处。 创建 App\AppInfo\appinfo.ini ,此目录下的文件主要是为PortableApps.com Platform提供信息,使用PAL创建便携软件,此目录是不可缺少的。)在appinfo.ini中这样写: [Format] [Details] [Control] [License] [Version] 你也可以使用 PortableApps.com Development Toolkit 方便地定制appinfo.ini。 导出Evernote.exe的图标(可以使用IconLover),保存为 App\AppInfo\appicon.ico ,并导出为appicon_16.png(16px),appicon_32.png(32px),appicon_128.png(128px,非必须)。 3. Launcher.ini创建 App\Appinfo\Launcher\EvernotePortable.ini ,这个INI是制作便携软件的关键,它告诉PAL如何使我们的软件便携化。 [Launch] [Activate] [DirectoriesMove] [DirectoriesCleanupIfEmpty] [RegistryKeys] [RegistryValueWrite] [RegistryCleanupIfEmpty] 4. DefaultDataEvernote便携版是不能通过官方来自动升级的,因此,我们需要修改程序的默认设置,关闭自动升级选项。通过观察注册表,可知自动升级主要由2个键值控制。在程序第一次运行时,需要将这两个键值设为0,以关闭默认升级。 新建 App\DefaultData\settings\EvernotePortable.reg ,写入如下内容: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USERSoftwareEvernoteEvernote] DeafultData目录中的所有内容,会在首次运行时被复制到Data目录后导入。从而达到修改默认设置的目的。 5. Custom CodeEvernote的便携化基本完成了。但是,Evernote有一个残余进程EvernoteClipper.exe,并不会在程序结束后自动退出。PAL并没有结束进程的功能,因此需要用到一段Custom Code。在 App\AppInfo\Launcher 目录下新建Custom.nsh,写入如下内容: ${SegmentFile} ${SegmentPrePrimary} ${SegmentPostPrimary} 在程序启动与退出时结束EvernoteClipper.exe进程(可能需要额外安装NSIS的KillPorcDLL插件)。 这里列出了更多可供使用的Segment。 6. 编译与封包在 PortableApps.com Launcher 中载入 EvernotePortable 目录,按下一步编译。如果成功,会在 EvernotePortable 目录下生成 EvernotePortable.exe。 至此便携软件已经制作完毕。 |
|