Portableapps.com便携版程序的三大问题

Portableapps.comPortableapps.com是非常著名的便携程序制作网站,它主要是将当前的主要流行程序的安装版文件修改制作成便携版程序再发布。Portableapps.com受欢迎,正是因为它制作的便携版是真正的便携版,可以任意复制到任何目录和电脑,而程序所有的配置和数据库保持不变。
Portableapps.com制作的主要是免费软件freeware和开源软件open source software,而且是有非常有名的软件才有“资格”。著名同步备份程序Toucan的官网发布地址居然就是Portableapps.com。
国内用户接触多的一般应该是Firefox和Chrome这两个程序的便携版,国内很多下载站提供的便携版都是Portableapps.com发布的。
http://portableapps.com/apps还有很多不同种类的软件,甚至还包括了Warzone 2100等开源游戏。


两大突出问题

Portableapps.com制作的便携版程序虽然是真正便携版软件,但不是完美的便携版软件。
以Firefox为例:启动的时候,有一个启动画面splash;而且在后台进程中一直会有一个firefoxportable.exe进程。

1.引导进程不能自动退出

Firefoxportable.exe这个附加进程,只是作用于启动的时候,强制执行便携版软件设定的程序配置文件路径。所以这个对于启动缓慢的Firefox是有影响的,不过影响不大,机器才测得出来的延迟。
在Firefox启动后,这个进程通常已经没有工作价值了,但是依然占据着系统的可用内存。即使是手动在系统任务管理器里面停用了这个Firefoxportable.exe进程,对于Firefox当前的运行也没有任何影响。当然,部分程序必须保证xxxportable.exe进程在后台运行。
但是,有些像Miranda IM等本身就有官方便携版的软件,被Portableapps.com改造后反而还多了一个完全没用的进程和启动时的引导。
所以像Firefox,Chrome这样的常用软件,其便携版可以使用蓝冰工作室或者甲壳虫的引导程序,他们的启动引导程序就具有自动退出的功能。

2.强加的启动画面

启动画面splash问题则不同于附加进程。
Portableapps.com制作的便携版程序都会被强制加入一个启动画面,诸如Firefox这样:

Portableapps splash

这个启动画面完全是多余,是可以直接去掉的,直接修改一下官方文件。
打开OtherSource文件目录,
将FirefoxPortable.ini里面的
DisableSplashScreen=false
改为
DisableSplashScreen=true
其他程序查找相同的*portable.ini文件,如果没有DisableSplashScreen这项,现在新版的程序都可以直接添加。


第三个根本性问题

如果说前面两个问题都属于可有可无的小问题的话,那么Portableapps程序还有一个根本性问题——默认是将程序所有组件都安装。
比如Libreoffice的Portableapps版本是将所有的组件全部安装,虽然现在新增了自动删除多余语言的功能,但是其他程序组件是全部安装。
不同的用户使用Libreoffice应该需要不同的组件,有很多组件是多余的。之所以强调这个问题,是因为Libreoffice这类软件,组件安装越多,程序运行越慢。而且Libreoffice还依赖Java,组件过多还可能导致整个系统缓慢。
在这一点上,Portableapps就没有Cameyo等制作的便携版灵活。


非必要,最好不用Portableapps的修改版本,因为软件的升级将依赖于Portableapps作者的更新。

评论

18 条对“Portableapps.com便携版程序的三大问题”的回复

  1. 我正在准备开发自己的便携软件launcher。。。

    1. 沙丘

      这个,有技术果然NB

      1. 就是可能发行存在限制。。。因为我只会Vb.Net和学的不是很好的C#,都需要.Net Frame Work,而这个简直就是给绿色软件这个名字扇了一个大耳光。。。

        1. 沙丘

          .net Framework虽然是系统标配,不过的确运行有些慢。

          1. 慢?做好了还真不慢,就是启动稍稍慢一点

            但是,便携软件可能携带到公司,网吧,朋友家,甚至,很多喜欢绿色软件的人也使用精简掉.Net Framework的系统,所以…

          2. 沙丘

            个人也觉得.net framework不是好方向,至少我很讨厌。自用的XP是把它精简了的,Win7也尽量避免

  2. 其实楼主大可不必纠结与这个守护进程,如果你阅读源代码的话,就会看到在整个程序真实运行过程中,Launcher只在做一件事:Execwait,就是等待程序结束,没有楼上朋友说的监控软件的行为,占用的资源其实并不多。

    Portableapps的运行原理,其实就是在程序启动时进行一次安装,在程序结束后进行一次卸载,当然这个时间一般非常快。在“安装”结束后,您当然可以强制结束Launcher,不会影响程序运行,但是在程序结束后,就不会进行“卸载”了。系统中就会留下垃圾。有些软件将配置留在注册表或者AppData,就不会被备份到便携目录,从而有丢失数据的危险。

    不过,PortableApps.com选择的软件一般都支持设置用户数据目录,因此强制结束Launcher,丢失数据的风险不会那么大。但是您可是试着在一台没装过Firefox的机器上运行Firefox Portable,然后强制结束Launcher,关闭Firefox后去看看AppData,是不是留下个Mozilla?在本机留下垃圾文件,就不符合便携软件的原则了。所以对于PortableApps,强制结束Launcher是得不偿失的。

    您说的“完美便携版”,其实是指在程序本身制作过程中,就设定将一切数据保存在本目录的软件。这种“天生便携”的软件,Launcher当然可以”Launch and Exit”,或者根本就不需要Launcher。但是PortableApps Launcher是对那些本身不为便携设计的软件的一种修正,所以只能退而求其次,加上一个守护进程了。

    1. 沙丘

      诚然,PortableApps.com的进程是必须的,但是个人是不会接受的。尤其是本身就是便携软件,而像Firefox之类,我宁愿使用AHK的引导器有C盘残留,也不喜欢多一个进程。

  3. 楼主没有弄清PortableApps Launcher的工作原理。
    Launcher必须早于程序运行,晚于程序结束。才能完成整个便携化工作。Firefox可以用-profile参数运行,所以你强制结束以后,感觉不到太大变化。有些便携软件,如果不正常退出,完成恢复工作,数据就不能保存,系统中安装的同种程序也被破坏了。

    1. 沙丘

      你说的是正确的,但是我说的没有和你的矛盾阿。“引导进程不能自动退出”是针对“完美便携版”而言。诸如Firefox之类完全可以设定自动退出,而miranda类完全没有必要附加一个引导进程。
      虽然理论上说引导进程需要数据保存后再退出,但是我还真没有发现portableapps有哪款软件强制退出出现数据保存错误的,因为这个引导进程和AHK不同,启动时就占据了系统缓存。

  4. coco240

    环境不同,我还是坚持我的观点,同时我也看到了,你坚持你的观点得到的益处。
    “99%的软件属于官方便携版或者是自己制作的便携版软件。”——饿,太强了
    “我从来不用QQ,”——你怎么做到的,在中国不要Q?
    你如此与众不同,我也是。幸会幸会

    1. 沙丘

      由于习惯使用returnil,所以“不得不”完全使用便携软件
      不是与众不同,而是一开始就是接触MSN,我的同学、同事和朋友都不用QQ,这个也很广泛的

  5. 一。赞同:
    1.Portableapps的引导进程在程序启动时,强制将程序的注册表和C盘写入“定位”到程序所在的物理文件夹,并将这个“更改”记录到系统缓存中。(即启动时实际导写入文件和注册表到系统中)
    2.至于云端虚拟化技术和Portableapps的引导法是完全不同的东西。简单的说,云端虚拟化是映射了程序的所有,(即文件实时写入到其他地方而不是系统中)Portabnleapps只是强制引导更改了程序运行时的写入。所以云端程序对系统的影响是非常明显的,并不是便携程序的最佳方案。(赞同,我也在找绿化软件完全 解决方案,现在盯上啦VMware ThinApp和HIPS。你有什么好的解决方案)
    不敢苟同:
    1.引导进程不能自动退出
    (Portableapps在软件退出时会再次扫描改动并转储,你觉得常变配置的软件在他之下能脱离它的后台程序吗?)
    2.强加的启动画面
    (说真的,有那个启动界面我才知道现在用的是便携程序,才敢在我系统大胆的用。反正可以关掉。不算缺点吧?)
    3.所以在程序启动后再删除引导进程,对于程序的便携没有任何影响。至于频繁读写注册表和C盘的程序,Portableapps是没有制作这样的程序,因为引导进程方法并不支持这些程序的便携化。(同1.说明,本人亲测)
    3.绿色软件则必定应该以便携版为首要推荐,(同意)不是指第三方更改的便携版,而是原生支持便携版的软件。(不同意)比如将注册表信息写入ini,或者自带引导程序等。(不同意)只有便携版才能尽量减少程序对系统的“写入”,(同意)一般的绿色软件通常导致系统注册表的多余垃圾。(不同意)
    (INI文件局限性多,但又有便携的优势,注册表扩展能力强,但不便携所以现在的软件和游戏多是,两者结合着编程,实现重装系统软件游戏可开,但配置变默认的。对于我们这些玩软件的花了时间去配置的实在是痛苦。几百个软件啊!!!你指望好用的软件 好玩的游戏都 自家出便携版啊,我很现实。我要找到第三方解决方案。不是简单的绿化。而是系统软件隔离化。最后更正你个观点 绿化软件 分 广义 和狭义,便携软件属于 绿色软件的狭义范畴。我也不喜欢广义的绿色软件,它们还是要导入REG的!)
    我也在找绿化软件完全 解决方案,现在盯上啦VMware ThinApp和HIPS。你有什么好的解决方案。。。共同交流下哇

    1. 沙丘

      1.引导进程会驻留缓存,所以直接退出不受影响。当然,不是所有软件都可以这样,所以Portableapps只有那么几个软件;而像java这类系统级程序最好是不要退出,因为不能决定每台电脑是否有更多的系统级操作;
      2.启动画面本身不是原版程序所有,这个有“违规”嫌疑。而且加载一张启动图片会占用“没有必要”的内存,对一些有官方便携版的软件来说这个启动画面还延迟了启动时间;
      3.文中便携软件和绿色软件的范畴并没有和你定义的广义和狭义冲突啊?
      4.ThinApp属于共享软件,完全不予考虑。云端虽然免费,但是问题太多。Cameyo(非常看好)免费,但是还远远不够。自己动手提取注册表也只能局限于配置文件独立的软件。由于一直使用returnil对HIPS没有经验,也正是returnil认识到很多所谓绿色软件残留的注册信息太多。所以便携版软件最好还是依靠官方发布;当然,现在有不少以AHK等为基础的引导程序,比如Firefox和Chrome等,这个可以解决一些没有官方便携版的问题,而且避免了Portableapps的问题。
      5.我和软件行业没有关系,所有这些都仅仅是使用过程中的理解罢了,但是至少我的系统里面99%的软件属于官方便携版或者是自己制作的便携版软件。
      6.你的文字我去掉了第一段和最后一段,大家相互交流,不用那么客气。此外,我从来不用QQ,删掉了你的QQ号码,避免被恶意软件采集。

  6. 你错了,那个背后程序 对于 频繁读写 注册表 或 C盘的程序很有帮助。它在监控文件和配置的改变。你去 了解下 云端 的路径 映射 技术就明白了。只有它在后台。你改变的配置才会被完全记录。所以绿色软件不推荐用便携版

    1. 沙丘

      Portableapps的引导进程在程序启动时,强制将程序的注册表和C盘写入“定位”到程序所在的物理文件夹,并将这个“更改”记录到系统缓存中。所以在程序启动后再删除引导进程,对于程序的便携没有任何影响。至于频繁读写注册表和C盘的程序,Portableapps是没有制作这样的程序,因为引导进程方法并不支持这些程序的便携化。
      至于云端虚拟化技术和Portableapps的引导法是完全不同的东西。简单的说,云端虚拟化是映射了程序的所有,Portabnleapps只是强制引导更改了程序运行时的写入。所以云端程序对系统的影响是非常明显的,并不是便携程序的最佳方案。
      绿色软件则必定应该以便携版为首要推荐,不是指第三方更改的便携版,而是原生支持便携版的软件。比如将注册表信息写入ini,或者自带引导程序等。只有便携版才能尽量减少程序对系统的“写入”,一般的绿色软件通常导致系统注册表的多余垃圾。

  7. 又学习了!人在学习中进步啊!多谢

    1. 沙丘

      不敢当。最开始折腾便携版也是从portableapps.com开始,现在基本不用它的东西了。