VMware ThinApp简明教程:制作单文件软件和便携软件

VMware ThinApp简明教程:制作单文件软件和便携软件

VMware ThinApp是一款应用程序虚拟化工具,但对于我来说用的更多的是制作单文件软件和便携软件。

VMware ThinApp将程序相关资源如exe、dll、ocx、注册表项等封装到单一的EXE文件中,程序运行时需要的资源也都从这个单EXE的虚拟环境中,从而实现与操作系统的隔离。

借助VMware ThinApp的封装可以制作比较纯正的单文件软件,而简单设置参数后,VMware ThinApp也能充当制作便携软件的角色,大部分情况下,VMware ThinApp也确实能出色的工作。

之前一直想做一个简单的ThinApp使用教程,不过总是没坚持下来,这次借着新版VMware ThinApp的发布就先整理出一个制作思路来吧,希望能与大家共同探讨学习下。不过现在我还是不太喜欢单文件软件了,尤其是ThinApp封装的,更倾向于绿色软件、便携软件和免安装软件。

VMware ThinApp使用教程

1. 首先运行程序Setup Capture.exe ,ThinApp会以向导模式完成程序打包,点击Next继续。
VMware ThinApp使用教程

2. 这里简单介绍了注意事项,最主要的就是在一个干净的系统上扫描形成系统快照,好处就是能得到程序正常运行所需要的最多信息。
VMware ThinApp使用教程

如需要自定义扫描配置,点击Advanced settings... ,这里可以设置需要扫描的驱动器和注册表分支,设定好之后确定返回。
VMware ThinApp使用教程

3. 点击Next后ThinApp会以扫描当前文件系统和注册表并形成一个快照,ThinApp正在保存快照:
VMware ThinApp使用教程

待系统快照完成之后,VMware ThinApp会给出提示,即开始安装并配置好你需要封装的程序,建议将程序安装到默认位置。一切完成之后点击Next继续:
VMware ThinApp使用教程

4. VMware ThinApp进行程序安装后的系统快照扫描
VMware ThinApp使用教程

扫描完成后将会提示选择程序入口点,即从哪个程序开始启动,一般就是主程序文件,通常ThinApp会自动选择好,点击Next继续。
VMware ThinApp使用教程

5. 进入Sandbox Location设置,Sandbox是Thinapp的沙盘或缓存目录,及程序所作更改的保存路径,以后再运行封装的程序时会从Sandbox中读取配置信息,如果删除Sandbox的话,程序就会复原为默认状态(即快照时的状态)

VMware ThinApp提供了三种模式:
    *  User's profile (%AppData%\Thinstall目录就是系统的Application Data目录;
    *  USB flash / portable media 就是将Sandbox保存到exe文件所在路径,即相当于制作便携软件了、Sandbox路径就跟封装出的程序在同一个目录中。
VMware ThinApp使用教程

6. 点击Next进入System Isolation模式设置;所谓的Isolation modes就是设置虚拟程序所做的更改如何影响到实际的计算机环境

Merged isolation mode(合并模式)允许虚拟程序在实际的文件系统中保存文件(如c:\user路径,但系统目录除外)、或者说封装后的程序(Thinstalled App)对文件系统的更改是合并进现有的文件系统的;

而选择WriteCopy isolation mode模式后,虚拟程序所作的更改只会保存到桌面和文档目录,而保存到其他目录(如c:\user)是不可见的(被重定向并保存到到了Sandbox中),或者说封装后的程序对文件系统的更改将不会在实际的文件系统中可见,转而保存到Sandbox中,如处理后的图片等。这里Merged isolation mode用的比较多。
VMware ThinApp使用教程

7. 点击Next继续,这里可以设置Thinapp工程文件的保存路径,还可以设置封装时的压缩模式(Compression);

No compression即为不压缩, Fast compression为快速压缩模式;建议选择Fast compression ,能提供57%的压缩率,而程序启动时间跟No compression相差不多,就是第一次封装的时候时间较长。
VMware ThinApp使用教程

点击Next后VMware ThinApp开始保存工程文件:
VMware ThinApp使用教程

8. 保存完之后,你有两个选择: Build Now直接以默认参数生成虚拟化程序,或Browse Project返回到工程文件目录自定义更多高级选项。
VMware ThinApp使用教程

这是直接选择Build Now后的情况,最后会提示Build Complete,封装后的程序在工程目录的bin文件夹中:
VMware ThinApp使用教程

9. 选择Browse Project浏览到工程文件目录。在这里可以删除一些不必要的文件以减少封装后的文件大小,如删除帮助文件、卸载程序等;而这里的Package.ini就是封装参数配置文件,由build.bat调用,我在这里说明一下常用的参数。修改参数后重新运行build.bat即可生成虚拟化程序
VMware ThinApp使用教程

压缩和分离模式,这在前面的向导已经设置过了,如果不满意地方,也可以直接在Package.ini中更改:
VMware ThinApp使用教程

可选项有:
NoneCompressionType=None
CompressionType=Fast
DirectoryIsolationMode=Merged
DirectoryIsolationMode=WriteCopy

SandboxPath设置:SandboxPath即Sandbox路径,SandboxPath即可以用相对路径,也可用绝对路径。
VMware ThinApp使用教程
SandboxPath=. (EXE文件相同路径下)
SandboxPath=%AppData%\Thinstall (系统的AppData\Thinstall目录)
SandboxPath=LocalSandbox\Subdir1(EXE文件目录下的子目录)
SandboxPath=Z:\Sandboxes

OutDir即打包程序的输出目录,不做过多介绍。

SandboxName即Sandbox的目录名,最好设置为一个更好的名字,默认是软件名。
VMware ThinApp使用教程

RemoveSandboxOnExit:程序结束时是否删除Sandbox。
RemoveSandboxOnExit=1 (删除Sandbox)
RemoveSandboxOnExit=0 (不删除Sandbox)

VirtualDrives:这里保存的是快照时系统的驱动器状态,包括类型、序列号等信息,以便运行虚拟程序时创建虚拟的驱动器状态,我的经验是最好是在一个虚拟机中做快照,且不要有太多分区。

以上就是一些常用的Thinapp封装参数,当然不止这些,还有很多很多高级的选项,需要的请自己参考帮助文件吧,说明都很详细,特别是ThinApp Scripts功能,可以在程序启动或结束时运行批处理或VBS脚本,这样就能实现更多的功能了。需要说明的是VMware ThinApp并不是适合每一个程序,有的封装后就不能运行,只能是通过ThinApp的升级来修复bug、支持更多的软件;强烈建议在一个干净的系统环境中使用VMware ThinApp。我现在对单文件软件不是怎么感兴趣,VMware ThinApp也用的少多了,不过还是希望能与大家多交流交流。

现在Picasa相册不能访问,导致博客页面极不美观,想要恢复Picasa图片显示的可以如下操作:

在Hosts文件里加入:
203.208.39.104 picasaweb.google.com
203.208.39.99 lh1.ggpht.com
203.208.39.99 lh2.ggpht.com
203.208.39.99 lh3.ggpht.com
203.208.39.99 lh4.ggpht.com
203.208.39.99 lh5.ggpht.com
203.208.39.99 lh6.ggpht.com

详细的设置方法可参考:Google Picasa相册不能访问的解决办法

最后下载VMvare Thinapp绿色版

• 本文作者: 黯然过客

• 文章分类: 知识技巧

• 阅读次数: 已有 79121 次浏览

• 最后更新: 2020年1月27日 16:17:46

• 文章链接: https://www.portablesoft.org/vmware-thinapp-tutorial/ (转载请保留出处及文章链接)

相关软件或文章

广告宣传

有 65 条留言。

  1. 龙二
    09:10 2009/06/20

    沙发,开始做教程了?

    • 黯然过客
      09:18 2009/06/20

      …也不是,这个Thinstall的教程是“姗姗来迟”…早该做了

  2. ache
    10:53 2009/06/20

    谢谢啊!!

  3. 我优秀
    18:18 2009/06/20

    谢谢啦 我可是求了好久了!

    • 黯然过客
      19:59 2009/06/20

      多多交流。我觉得重要的就是Package.ini参数的设置~

  4. 龙二
    02:28 2009/06/21

    绿色版未必得单文件,单文件的绿色软件还是不大好用,保存不了设置嘛,而且我总有这个感觉,用软件就得知道程序包括哪些文件,到底做了什么,保存什么数据,方便扩充嘛,还是像过客一样做真正的绿色软件,不要过分追求单文件版,这样不好。但是教程还是要支持一下

    • 黯然过客
      04:40 2009/06/21

      单文件未必绿色;绿色未必便携;但便携一定绿色…

  5. ragbear
    18:40 2009/06/20

    请教,既然和操作系统分离,那么和绿色软件有什么区别呢

    • 黯然过客
      19:55 2009/06/20

      Thinapp本来是一种程序部署的解决方案、因为实现了隔离可以避免程序间的冲突;Thinapp打包的程序也正好是与绿色软件的概念有相通之处的。

  6. 文中:
    而选择「WriteCopy isolation mode」模式后,虚拟程序所作的更改只会保存到桌面和文档目录,而保存到其他目录(如c:user)是不可见的(被重定向并保存到到了Sandbox中),或者说封装后的程序对文件系统的更改将不会在时间的文件系统中可见,转而保存到Sandbox中,如处理后的图片等。
    ———“时间”莫非是“实际”

    • 黯然过客
      20:16 2009/06/20

      …以后会注意;还有我的意思是比如保存到D:123目录中,但你是看不到这个目录的,放到了Sandbox中去了…

  7. austen2000
    20:15 2009/06/20

    这个一定要学学,学会了就不用来这里了,呵呵。

  8. 刀山
    06:22 2009/06/21

    那楼主现在都用什么软件制作便携软件呢

    • 黯然过客
      06:39 2009/06/22

      我现在就是用total uninstall+nsis来制作了,前者监控软件安装,后者编写loader

  9. 我优秀
    05:43 2009/06/22

    怎么添加的软件:http://lh3.ggpht.com/_-p3wHBAYw-Y/SjzJES-FWGI/AAAAAAAAAxk/ag4bM5FcFqk/s800/VMware%20ThinApp%20How%20to-07.png
    我扫描后还是仅有cmd,注册表,IE

    • 黯然过客
      06:16 2009/06/22

      如果识别不了的话,也是能做Package.ini里自定义的。

  10. 我优秀
    05:59 2009/06/22

    还有,这个图片里http://lh6.ggpht.com/_-p3wHBAYw-Y/Sjy5G7wu4VI/AAAAAAAAAxc/74lJLq4aaA8/s800/VMware%20ThinApp%20How%20to-05.png
    第2条是什么意思!是不是只能封装现安装的程序?!

    • 黯然过客
      06:13 2009/06/22

      是的,thinapp是通过监控软件安装过程实现的,所以需要一个安装~

  11. 不错的教程,写的很详细

    • 黯然过客
      00:57 2009/07/04

      基本的教程,有些高级参数都没涉及到呢,不过那些参数也是用的较少了。

  12. Xun Xun
    21:14 2009/07/06

    还是喜欢Total Uninstall和NSIS,希望博主也写个教程啊……

    • 黯然过客
      21:40 2009/07/06

      这是就是针对thinapp本身的教程~~我平时用的也就是Total Uninstall和NSIS、但是整理出个教程,似乎不太好做

  13. Sdna
    05:30 2009/07/27

    看了博主的教程,獲益良多

    但是博主在一些文中說到 VMware ThinApp 是製作單文件的軟件
    也將 VMware ThinApp 所製作的封裝與便攜文件做比較

    所以我有個小疑問,VMware ThinApp 做出來的文件不也算是便攜文件嗎?
    它不是也做到了不使軟體的設定資料影響到系統嗎?

  14. Sdna
    05:31 2009/07/27

    看了博主的教程,获益良多

    但是博主在一些文中说到 VMware ThinApp 是制作单文件的软件
    也将 VMware ThinApp 所制作的封装与便携文件做比较

    所以我有个小疑问,VMware ThinApp 做出来的文件不也算是便携文件吗?
    它不是也做到了不使软体的设定资料影响到系统吗?

    • 黯然过客
      06:31 2009/07/28

      從“便攜”的角度講,經過簡單的設定,Thinapp做成的程序也是便攜軟體,因為軟體的配置確實是方便“隨身攜帶”了。默認的話Thinapp會使用系統的AppData目錄作為SandBox的保存路徑,這樣的話雖然是不影響系統註冊版,但也會遺留文件。

  15. 77880099
    12:25 2009/08/18

    终于看到你说不喜欢thinapp做的单文件了,,,
    不过真正的纯绿色 或者接近纯绿色的会更麻烦 你也更辛苦了 呵呵

    • 黯然过客
      08:23 2009/08/19

      是啊,主要是单文件本身的限制性太多了;但不排除有人偏爱及某些情况下单文件的便利性…

  16. 想请问下,有没什么方法使sandbox释放目录在.exe文件内部的?也就是说,单文件拥有保存配置的能力。

    • 黯然过客
      05:31 2010/01/27

      理论上不可能吧…exe文件就是固定的了,要是能保存配置,那必须重编译了。

      但是应该可以将一定的初始化配置集成到exe中,要是动态更新的配置就不行。

  17. 看完了
    14:32 2011/05/26

    简直是天书啊,操作步骤过于繁琐,难普及啊。

  18. wchfcoll
    10:41 2011/06/07

    我的技术不行,用了网上能搜到的一些简单的方法都无法打包,我们学校的客户端,不知道楼主是否有兴趣帮下我,我经常重做系统,结果,就是上网客户端太麻烦,楼主大大有时间的话给wchfcoll@163.com发送同意,我将回复软件,他是华为的,可能是要装虚拟驱动.总值超出我的理解能力.盼楼主!!!!

  19. 山虎虎
    17:05 2011/07/07

    这位大哥,我用这个软件来做TeamViewer的单文件,想在WinPE上用远程控制,但是在PE上运行时出现致命错误无法继续。关于在PE上实现远程控制,有什么好的解决办法吗?

    • @山虎虎, PE环境缺少了一些系统组件吧,试试TeamViewer原版的行不行。PE环境的远程控制可以试试Radmin,不过很大程度上取决于PE的兼容性。

      • 山虎虎
        21:01 2011/07/17

        @黯然过客, 在TeamViewer官方下的Portable版在PE里也运行不了,最后用TTVNC解决掉了。最近在弄Photoshop的虚拟化,是在XP上做的,在XP里启动速度还不错,但在物理WIN7里启动就十分慢。WIN7里显示虚拟PS要管理员权限运行,而另外试虚拟的QQ软件管理器就不用管理员权限。不是运行在沙箱里的吗?怎么有些要权限,有些又不需要??

        • @山虎虎, 感谢分享经验。另外虚拟软件的话,记得是可以设置需不需要管理员权限的。运行虚拟PS提示权限,那不给的话,行不行?这可能是Win7自动判断程序可能需要提升权限,然后弹出来的,实际不给权限应该也可以。

          • 山虎虎
            01:43 2011/07/19

            @黯然过客, 制作好的PS图标右下角没有盾的,不会弹出UAC提示,不提权的话能继续,但初始化到一半它自身进程就会自动结束。我用total uninstall监控过它的首次运行,发现它需要在物理机的%appdata%和HKEY_USERS上写东西。这些东西在原来的软件上是找不到的。我又没加脚本进去。十分疑惑。。。

            • @山虎虎, 监控的时候,最好多运行软件、配置好软件,然后再生成快照,这样像%appdata%或HKEY_USERS就能进入sandbox了。

  20. 刚刚要学习这个东西。多谢博主了。

  21. wulishui
    13:27 2011/12/31

    我尝试了这样打包了一个千千静听,没什么问题,可是金山毒霸坚持干掉我要运行的打包文件,说是病毒,非常烦!不知有什么办法?

  22. wihelm
    16:11 2012/01/24

    单文件运行时候右下角的提示不知道朋友知不知道如何去除,求教,谢了~

  23. woods
    08:03 2012/04/01

    奇怪了. 我制作了一个便携版. 制作过程没什么可说的,sanbox location选USB Flash, 软件是装在C盘的, 运行了一下软件, 它有个文件保存目录, 我设为C:DOCS, 并让软件保存了个简单文件在里面…软件制作完成后把bin文件夹拿出来改个名字就可以用了. 然后我想把以前的一些保存文件直接补充到C:DOCS, 发现c没有这个文件夹, 虚拟化怎么理解? 我理解应该是软件处于运行状态, 则C:DOCS存在, 否则不存在…..如果必须去定位便携版软件文件夹, 那么上述软件内的文件保存目录怎么设? U盘盘符是变化的

    • 有点晕乎。。你设定的C:DOCS,在便携版运行的时候,还是保存到sanbox location的,不会出现在实际系统的C盘。由于虚拟化封装,程序会将sanbox location的DOCS文件夹当作是在操作实体系统的DOCS。

    • 笑熬浆糊4
      22:37 2012/05/09

      这种虚拟化技术与一般的临时释放封装单文件方法区别应该很大,我猜的! :oops:

  24. wither
    21:13 2012/07/06

    请问博主 NSIS制作绿色软件单文件运行时候是否能做出任务管理器的进程的路径、名称不变 比如和WINRAR制作的绿色软件不同,后者就是释放到临时目录再运行?

  25. jie
    22:16 2012/08/04

    博主,你好! 我用这个软件制作了个绿色软件, 但和你网站里的那些便携软件比起来,貌似结构差别较大啊。。这个软件貌似只能做单文件的,。而你做的那些,程序目录下还有App、Data等不同的文件夹。。看起来更像个完整的。。你是用什么些工具来做的呢 ?

    • ThinApp只能制作单文件版的软件。至于你说的App、Data的,是用NSIS制作的Loader,做成便携软件。

  26. jie
    22:16 2012/08/04

    博主,你好! 我用这个软件制作了个绿色软件, 但和你网站里的那些便携软件比起来,貌似结构差别较大啊。。这个软件貌似只能做单文件的,。而你做的那些,程序目录下还有App、Data等不同的文件夹。。看起来更像个完整的。。你是用什么些工具来做的呢 ?

  27. top
    12:13 2012/08/11

    博主,你好,请问打包程序运行环境时,ini配置文件不包含进去,这样做出来的单文件 + ini能否运行

    • 单文件后,软件运行还是需要ini,但ini应该也是在虚拟环境中的了。可以的。

  28. 5566
    18:27 2012/08/12

    这个好像不支持驱动的安装,要安装驱动的软件还是要另外处理

  29. rexuss
    17:25 2012/11/14

    对于环境变量支持吗?

  30. 学习了

  31. 19:24 2013/05/29

    为什么我没有生成exe单文件啊,倒是很多的文件夹。

  32. win7 下做的软件,涉及到了HKLM,发现启动不了,把这段直接导入注册表就没有问题了。

  33. 怎么解决呢?

  34. top
    15:33 2013/08/28

    为什么ccleaner做出来 会变成15M这么大。。

  35. fa
    21:22 2013/09/16

    key?

留言

*

(清除已保存的数据?)