首页便携软件 › 便携软件制作入门教程及实例

便携软件制作入门教程及实例

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

    我个人属于爱折腾的,成天重装系统,而重装后装软件又是件麻烦事,加上我对系统有洁癖,就喜欢上了用便携软件(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.comLauncher

       X:\PortableApps\NSISPortable

    4、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”,并将其导出成 16×16 的 png文件“Appicon_16.png”、32×32 的 “Appicon_32.png” 和 128×128(非必须) 的 “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”:

    第十步,写Launcher.ini。这是最难的一步,也是最关键的一步。它告诉PAL怎么把我们的软件便携化。细分为以下几步:

    1、创建“App\Appinfo\Launcher\AppNamePortable.ini”这里的文件名要和上面“Appinfo.ini”中的“AppID”相同。例如:“App\Appinfo\Launcher\IconWorkshopPortable.ini”。

    2、写代码。这里有一个样例:

    在本例中生成的“IconWorkshopPortable.ini”如下:

具体各项的意义和其他参数见准备工作第六项的网址。

    经过上面的步骤,整个便携软件的准备工作就差不多了。但是如果碰上有的软件结束后有后台进程不会自己结束掉的情况,就需要一个额外的步骤了。

    额外步骤,写Custom Code。在“App\Appinfo\Launcher”下创建“Custom.nsh”,并写入内容。例如上面提到的需要关闭进程的,可以这么写:

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

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

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

u4653401_13cb304afd7g2_blog

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

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

NSISPortable_2.46.5_Rev_2_English.paf
PortableApps.com_Application_Template_2.4
PortableApps.comDevelopmentToolkit_1.0_Alpha_1_English.paf
PortableApps.comLauncher_2.2.paf
RegshotPortable_1.9.0.paf
PortableApps.comInstaller_3.0.11.paf

发表评论