一、为什么要做便携软件:

我个人属于爱折腾的,成天重装系统,而重装后装软件又是件麻烦事,加上我对系统有洁癖,就喜欢上了用便携软件(PortableApp)。但是很多软件不一定下得到便携版的,于是就学者开始自己制作便携软件了。

二、准备工作:

我是按照PortableApps的规范来做便携软件的,所以需要用到的工具有:1、一个虚拟机:这是用来构建一个纯净的系统来安装程序的。可以用VMWare Workstation,或者免费的Virtual Box。虚拟机安装好后,装一个纯净的操作系统(注意:一定要干净哦!最好除了系统什么软件都没。什么VC++、.NET之类的补丁一个都没打过。),做一个快照,以后每次要做一个便携软件就恢复到这个纯净的快照先(或者用Deep Freeze把系统冻住o(∩_∩)o ,这样重启虚拟机就恢复了,比较省事。缺点是有可能对某些软件安装有影响,比方说需要重启的)。2、一个行为监控软件:用来监视软件安装后对系统做了哪些改动。可以用Total Uninstall,或者免费的RegShot,或者 VMWare ThinApp。下载好安装在虚拟机里(我个人觉得ThinApp最好,不怕安装过程中重启,而且会自己帮你把文件提出来)。3、PortableApps.com Launcher 和 NSIS Portable Unicode:最关键的两个工具。下载下来后,将它们安装到同一目录。例如:X:\PortableApps\PortableApps.comLauncherX:\PortableApps\NSISPortable4、PortableApps.com Development Toolkit:这个不是必须的,但是很有用,强烈建议下载(除非你是代码狂人)。5、PAL模板 (PortableApps.com Application Template):熟练以后这个也不是必须的,但是初学的时候,用模版改改比较省事,而且不太会出错(其实熟练以后一样可以用模版改改的,省事省心啊!)。6、一个网址:http://portableapps.com/manuals/PortableApps.comLauncher/ ,这个是portablapps的用户手册,很多时候要到这里来查资料的。7、一个提取图标的软件。例如IconWorkshop之类的,这个选择太多了,自己找吧。

三、制作:(进入正题了)

第一步,用前面准备好的行为监控软件给系统做第一个快照。这里不同的软件操作不一样,我就不一一讲了,不难的。
第二步,安装准备制作成便携软件的软件。我就以IconWorkshop为例。全部都安装好以后运行一次,把文件类型关联取消掉,联机注册、自动更新之类的取消掉。当然也可以不运行,安装好结束。
第三步,用监控软件做第二个快照,并对比两次快照。通过两次快照的对比,可以看到IconWorkshop在%ProgramDir%(也就是“Program Files”)底下创建了了一个名为“IconWorkshop”的文件夹,里面是它的程序文件。另外在%AppData%和%LocalAppData%这几个位置都写了文件。另外注册表方面,则是在“HKCU\Software”下增加了“Axialis”这个项。这一步如果用VMWare Thinapp就很省事了,因为它会帮你把所有的改动都提取出来。关于两个变量%AppData%和%LocalAppData%,这两个都是PAL的系统变量,分别代表这些文件夹位置:LOCALAPPDATA:

C:\Documents and Settings\Username\Local Settings\Application Data on XP and 2000,

C:\Users\Username\AppData\Local on Vista and Win7.

APPDATA

C:\Documents and Settings\Username\Application Data on XP and 2000,

C:\Users\Username\AppData\Roaming on Vista and Win7.

更多变量参见该网址:http://portableapps.chrismorgan.info/launcher/manual/ref/envsub/ 第四步,把之前准备好的PAL模版解压出来,并改名。将下载好的“PortableApps.com_Application_Template_X.X.zip”解压开,会得到一个名为“AppNamePortable”的文件夹,将它重命名,用你的软件的名称替换“AppName”,本例中将“AppNamePortable”改成“IconWorkshopPortable”。第五步,把程序文件复制到“App”文件夹下。我这里把“Program Files”下的整个“IconWorkshop”文件夹复制到“IconWorkshopPortable\App”中。第六步,提取程序图标和注册表。这里就用IconWorkshop把它主程序的图标提取出来,保存到“IconWorkshopPortable\App\Appinfo\Appicon.ico”,并将其导出成 16x16 的 png文件“Appicon_16.png”、32x32 的 “Appicon_32.png” 和 128x128(非必须) 的 “Appicon_128.png”。运行“Regedit”,把“HKCU\Software\Axialis”导出成“IconWorkshopPortable.reg”备用。第七步,提取Application Data。前面已经知道IconWorkshop会在%AppData%和%LocalAppData%这几个位置写文件,再仔细分析后发现,安装完成后,只有“%AppData%\Axialis\IconWorkshop\Color Swatches\”底下有一个“IconWorkshopSwatches”文件的,另外几个只建了个空的文件夹。在“IconWorkshopPortable\App”下建一个文件夹“DefaultData”(DefaultData的作用:顾名思义,它是存放默认数据的地方,当便携软件第一次运行时,会先把它里面的内容拷到“AppNamePortable\Data”中再运行),在里面建个目录,自己起个名字,我这里为了后面好分辨叫“Appdata”,并把整个“%AppData%\Axialis\IconWorkshop”底下的“Color Swatches\IconWorkshopSwatches”目录下拷进去(不连前面的“Axialis\IconWorkshop一起拷进去的原因见底下Launcher.ini部分”)。第八步,准备注册表文件。编辑之前准备好的“IconWorkshopPortable.reg”,把一些无用的信息删除掉,特别是注意下有没有关于程序路径设置的项,有的话要好好分析,没用的删,有用的另外记录下来再删,后面要写进脚本里的。然后把它复制到“DefaultData\settings”底下。第九步,生成Appinfo.ini。这一步有两种方法:一种是直接在“Appinfo”下新建个“Appinfo.ini”,把代码写进去;另一种则是利用前面准备的“PortableApps.com Development Toolkit”,运行后打开自己做的软件目录,如“IconWorkshopPortable”,然后点击“Edit details”,一项项输进去,再保存就OK了。得到类似这样的一个“Appinfo.ini”:[Format]Type=PortableApps.comFormatVersion=2.0[Details]Name=IconWorkshop PortableAppID=IconWorkshopPortablePublisher=Shuewood Forest & PortableApps.comHomepage=PortableApps.com/IconWorkshopPortableCategory=Graphics & PicturesDescription=IconWorkshop is a tool for icon edit.Language=MultilingualTrademarks=Axialis IconWorkshop[License]Shareable=falseOpenSource=falseFreeware=falseCommercialUse=false[Version]PackageVersion=6.8.0.0DisplayVersion=6.8.0.0[Control]Icons=1Start=IconWorkshopPortable.exe第十步,写Launcher.ini。这是最难的一步,也是最关键的一步。它告诉PAL怎么把我们的软件便携化。细分为以下几步:1、创建“App\Appinfo\Launcher\AppNamePortable.ini”。这里的文件名要和上面“Appinfo.ini”中的“AppID”相同。例如:“App\Appinfo\Launcher\IconWorkshopPortable.ini”。2、写代码。这里有一个样例:[Launch]ProgramExecutable=AppName\AppName.exe    ;    主程序位置CloseEXE=AppNameTray.exe    ;    除了AppName.exe,当AppNameTray.exe正在运行时,便携软件也拒绝启动。WaitForExe1=AppNameTray.exe    ;    当AppName.exe关闭后,等待AppNameTray.exe结束才真正结束便携软件。DirectoryMoveOK=yes    ;    路径改变并不会影响便携软件运行,因此检测到路径改变时不提示警告。[Activate]Registry=true ;    表示本软件需要写注册表[DirectoriesMove]-=%LOCALAPPDATA%\AppName   ;    当软件启动时,原%LOCALAPPDATA%\AppName会被重命名(备份)为%LOCALAPPDATA%\AppName-Backup-by-AppNamePortable,;    当软件结束时,%LOCALAPPDATA%\AppName会被删除,;    %LOCALAPPDATA%\AppName-Backup-by-AppNamePortable 被重命名(恢复)为%LOCALAPPDATA%\AppName;    (-=)的意思是程序结束时不将%LOCALAPPDATA%\AppName备份到便携软件Data目录,因为这几个目录主要是日志、;    临时文件,没有备份到便携设备的必要。如果需要备份到Data目录,则将“-”指定为其他名称。-=%APPDATA%\AppName-=%USERPROFILE%\AppData\LocalLow\AppName[DirectoriesCleanupIfEmpty]1=%LOCALAPPDATA%\AppNameAppName   ;    如为空目录,则在结束时删除目录,避免留下垃圾文件。下同2=%LOCALAPPDATA%\AppName3=%APPDATA%\AppName4=%USERPROFILE%\AppData\LocalLow\AppName[RegistryKeys]AppNamePortable=HKCU\Software\AppName   ;    在程序启动时,HKCU\Software\AppName被重命名为;    HKCU\Software\AppName-Backup-by-AppNamePortable,;    Data\settings\AppNamePortable.reg 被导入注册表,在程;    序结束后,反过来导出便携软件键值,恢复本机注册表项。[RegistryValueWrite]HKCU\Software\AppName\AppName\AppNamePath=REG_SZ:%PAL:DataDir%  ;    在程序启动时,在HKCU\Software\AppName\AppName\AppNamePath 中写入便携软件Data目录路径,以将数据库目录设定为便携软件的Data。更多PAL专有变量请参阅文档。  [RegistryCleanupIfEmpty]1=HKCU\Software\AppName   ;    如为空项,则在结束时删除,避免留下注册表垃圾。在本例中生成的“IconWorkshopPortable.ini”如下:[Launch]ProgramExecutable=IconWorkshop\IconWorkshop.exeDirectoryMoveOK=yes [Activate]Registry=true [DirectoriesMove]-=%LOCALAPPDATA%\Axialis\IconWorkshop;这个目录存的都是临时性的文件,不保存它,用完就删,所以等号前用“-”Appdata=%APPDATA%\Axialis\IconWorkshop;这里要调用DefaultData底下的Appdata,所以名字要一样,等号前用目录的名称;这里的基本原则就是:不准备保留也不影响使用的用“-”,需要从DefaultData或者保留修改的起个名字。;还有需要注意的是,当便携软件运行时,会自己生成“%APPDATA%\Axialis\IconWorkshop”目录,再把内容拷进去;所以在保存原有目录内容时,上面两个层级的目录别拷进去。[DirectoriesCleanupIfEmpty]1=%LOCALAPPDATA%\Axialis2=%APPDATA%\Axialis;这里是防止系统因为没装过Axialis的其它软件,在删除IconWorkshop目录后,留下Axialis目录[RegistryKeys]IconWorkshopPortable=HKCU\Software\Axialis\IconWorkshop;这里起了名字而没用用“-”是因为需要用这个名字来备份原注册表,用完还要还原的![RegistryCleanupIfEmpty]1=HKCU\Software\Axialis;这里的目的和上面文件夹的目的是一样的具体各项的意义和其他参数见准备工作第六项的网址。经过上面的步骤,整个便携软件的准备工作就差不多了。但是如果碰上有的软件结束后有后台进程不会自己结束掉的情况,就需要一个额外的步骤了。额外步骤,写Custom Code。在“App\Appinfo\Launcher”下创建“Custom.nsh”,并写入内容。例如上面提到的需要关闭进程的,可以这么写:${SegmentFile}${SegmentPrePrimary}KillProcDLL::KillProc “AppNameBackground.exe”!macroend${SegmentPostPrimary}KillProcDLL::KillProc “AppNameBackground.exe”!macroend

在程序启动与退出时结束AppNameBackground.exe进程(可能需要额外安装NSIS的KillPorcDLL插件)。

更多可使用的Segments请参看:http://portableapps.chrismorgan.info/launcher/manual/advanced/segments/#segments

最终步骤,编译与封包。准备工作都到位了以后,最终步骤就简单了。在 PortableApps.com Launcher 中载入 AppNamePortable 目录,按下一步编译。如果成功,会在 AppNamePortable 目录下生成 AppNamePortable.exe。如下图:

需要注意的是,准备步骤的第三步一定要把两个软件放在一起,因为PortableApps.com Launcher需要调用NISI的。

其实最后生成便携软件的就是NISI,前面的步骤都是让PortableApps.com Launcher准备NISI的脚本,所以牛人直接用NISI写PortableApp也是可以的。

便携软件制作入门教程及实例相关推荐

  1. 软件工程师入门教程--KaYiCRM实录(1)

    介绍 作为一个程序员和培训师,在过去的一些年里写了很多程序,上了一些课.一直以来我都想写一本能够帮助那些想要学习软件开发的人轻松地进入学习的教程,现在终于可以动笔了.我无法为这本"教程&qu ...

  2. 便携软件制作_如何仅用$ 8制作自制便携式空调

    便携软件制作 Are you looking for a cheap and easy way to beat the heat? Then this portable air conditioner ...

  3. 浩辰建筑CAD软件新手入门教程:在位编辑

    设计师在使用浩辰建筑CAD软件绘制CAD建筑施工图的过程中,一般情况下修改CAD图纸中的文字都是双击修改,这种方式被称为在位编辑.下面和小编一起来看看在位编辑功能的使用介绍吧! CAD文字编辑:在位编 ...

  4. Spoon Virtual Application Studio 绿色便携软件制作工具

    一个程序的虚拟化工具,可以使得你的软件无需安装即可运行!也是制作绿色便携软件的好工具!它可以使你能够转换Windows, .NET, Java, AIR, Flash, Shockwave或其它Win ...

  5. eBPF Tracing 入门教程与实例

    2019独角兽企业重金招聘Python工程师标准>>> 原文链接 Learn eBPF Tracing: Tutorial and Examples 译者 弃余 在 LPC'18(L ...

  6. python写彩票预测软件_python入门教程NO.6 用python做个简单的彩票号码统计分析工具...

    python入门教程NO.6 用python做个简单的彩票号码统计分析工具-1.jpg (37.04 KB, 下载次数: 0) 2020-11-27 14:29 上传 python入门教程 pytho ...

  7. 智能机器人软件开发入门教程:带你从0到1快速入门

    机器人,现在遍布我们的生活,怎样才能让机器人运作?你了解吗?今天就给大家分享一套智能机器人软件开发教程,教你如何让机器人运作! 对微机原理和硬件控制原理深入理解,使学员更扎实的掌握软硬件开发的核心能力 ...

  8. java入门软件安装教程,PDPS软件-安装入门教程 20200406

    仿真软件PDPS的相关知识点,仅供学习参考,共同探讨,共同进步. 小编这两天一直在努力研究PDPS的安装,由于没有一点基础,只有照着网上的安装教程以及朋友分享的安装参考来进行学习安装,摸索着大概一周的 ...

  9. 3D CG软件blender入门教程:手把手教你使用方法

    翻译:BeforeDawn 大家好,我是bpm,目前在做一些设计师与技术总监相关的工作. 这篇文章主要以blender这个软件作为切入点来为大家讲解一下3D CG软件blender相关概要以及使用的方 ...

  10. CG软件blender入门教程

    大家知道这个名为"blender"的软件吗? 做设计或者影像相关工作的人,以及对这个方面有兴趣的人,想必都听说过这个软件吧! blender是主要以建模和影像编辑来制作3DCG的软 ...

最新文章

  1. 人,是否应该不要去好高骛远
  2. IT运维管理员如何写好一份年终总结?
  3. php wget,Linux_Linux下载工具wget和axel简介,Wget Wget是一个十分常用命令 - phpStudy
  4. 《构建之法》读书笔记
  5. VS.NET 2005 Beta2的稳定性太差了:(
  6. 【专升本计算机】专升本计算机期末考试复习题(B卷附答案)
  7. CSS中position属性(abusolute | relative | static | fixed)区别
  8. npm切换淘宝源,yarn切换淘宝源
  9. C++ 多态的实现及原理
  10. java c s 比 c c s_Java技术学习笔记:C/S 与B/S 区别
  11. esxi 命令行查看设备
  12. Python3快速入门——(2)list和tuple(列表和元组)
  13. C# 中取绝对值的函数
  14. 算法Big O Notation
  15. 我裸辞全职接单第一个月的收入
  16. Kali linux 学习笔记(三十四)无线渗透——WPA攻击(PSK破解、AIROLIB、JTR、cowpatty、pyrit) 2020.3.13
  17. .net and oracle
  18. 【笔记】自适应卡尔曼滤波 Adaptive Extended Kalman Filter
  19. 设置固定ip,还有一个自动分配ip
  20. 一个成熟的项目经理,需经历这三个层次

热门文章

  1. 迪斯尼电影经典台词精选
  2. 在小鸟云新春采购节买到划算的云服务器
  3. 【python与数据分析】实验十三 北京市空气质量
  4. summery(一)
  5. (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  6. [全解] 刷机, BL 锁, Bootloader, Recovery, Magisk, Root, ADB, 线刷, 卡刷, 9008, 绕过 FRP
  7. 网心科技 | 三分钟带你了解中国CDN发展史
  8. python:实现abbreviation缩写算法(附完整源码)
  9. frm文件导入mysql_.frm文件怎么导入到数据库
  10. 【阶段二】Python数据分析Pandas工具使用07篇:探索性数据分析:数据的描述:数据的集中趋势