我写的小软件不打包,不封装,在本机是绿色的,但放在其它没有装过VB的机器上就不能运行了,我知道打包可以让它在任何机器上运行。
但它还要在其它机器上安装,请问有什么办法在其它机器上不安装就可以运行吗?

解决方案 »

  1.   

    VB做不出真正的绿色软件,最多只能把需要的DLL,OCX封装到资源文件中,运行时候释放出来。
      

  2.   

    Win 98se 以上版本自带VB6的运行库,所以只要程序中不用第三方控件或.dll,只用标准控件,在这些操作系统下就是绿色的。好像限制多了些,不过没办法。
      

  3.   

    vb在2000和xp下不用那几个标准的文件(系统内置的有)但是如果你用象commondalog等还需要加载一个ocx(系统没有)
    打包和封装不一样,打包多用于程序的最后一步,打包后就可以发布了。封装一班指函数的设计方面的
    不知道我说的对不对:)
      

  4.   

    不知道我的看法对不对:
    打包就是制作安装程序,做好后就是安装程序,可以直接发布。
    封装是OOP的一个很重要的概念,应该是一种对类的处理办法。
      

  5.   

    用VB制作绿色软件最主要的一个限制是不能使用第三方控件,包括像VB自己提供的那些Gird、DTPicker、Common Controls一类的控件,以及用户自定义的、需要单独编译的控件。只要满足这个条件,那么一般是可以制作出绿色软件的,方法很简单,你只要把msvbvm等几个基本库和你build好的exe文件放在一起就行了,因为windows的exe文件需要用到其他dll(不是com的dll)的时候,首先会在system或者system32下找,找不到的时候就会在当前路径下找,所以,只要这些文件和你的程序在一起,那么无论系统原先有没有msvbvm,程序都可以使用。
    顺便说一句msvbvm是不需要注册的,vb运行所需要的最基本的几个dll也是不需要注册的。
      

  6.   

    那么就是说要做成绿色软件,WINSOCK控件也不能用了?
      

  7.   

    不一定,有些控件是可以的。据我所知,winsock、mscomm、richtext这几个可能都可以,而common dialog、common controls(包含listview、treeview的那个)等好像都有一定的局限性。
    具体的可以自己试一下。
    不过,上面提到的这些控件,很多都可以避免调。比如common controls,在所有的操作系统下都有,但是版本不一样,所以只要不使用其中具有版本差异的方法、事件,并且使用运行时加载的方式就可以用了。而对于winsock这类的控件,虽然我好像没有听说过有版本差异的,但是因为winsock控件实际是对windows下wsock32.dll的封装,所以完全可以直接使用wsock32下的API,而wsock32这个dll是不需要注册的。
      

  8.   

    AresChen(AresChen) 说的方法值得借鉴 
    收藏
      

  9.   

    调用的控键文件放在一个目录下。
    运行程序是用 app.path调入。
    然后找一台机器安装。
    安装完拷贝一下安装目录。