vb怎样才能打包成绿色软件?

yiranoon 2003-09-18 11:03:19
有好的办法或工具吗?
...全文
172 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiranoon 2003-09-29
  • 打赏
  • 举报
回复
1
UpdateING 2003-09-18
  • 打赏
  • 举报
回复
8好意思............lxcc大侠........占了个位置~~~~~~其实偶们的目标是一致滴~~~~~~就是帮助楼主~~~~~~!西西~!
liul17 2003-09-18
  • 打赏
  • 举报
回复
最绿的就是拷个 .exe 就能运行 :)
次之则是(自认为):
安装时全装上卸载时全卸掉不留痕迹!
lxcc 2003-09-18
  • 打赏
  • 举报
回复
呵呵,转的同一个帖子
yijiansong 2003-09-18
  • 打赏
  • 举报
回复
xuexi
lxcc 2003-09-18
  • 打赏
  • 举报
回复
现在非常流行“绿色”软件,不需要什么安装程序只要一个 EXE 文件就可以运行程序

了,而在 VB 的编程中有许多地方需要调用第三方的控件(很难用 API 函数搞定所有的功能),这就需要制做一个安装程序,把所需要的控件、DLL 文件或其他文件打包进去了,那么在 VB 中怎么用变通的方法实现“绿色”软件呢,请看:

示例:

1、主程序.EXE

用 VB6.0 编写的程序,调用了 Winsock 控件,如果在没有安装 VB5.0、6.0 的机器上运行则会出现错误,导致程序运行失败,这时如果按一般的方法,只有把这个程序用 VB5.0、6.0 的安装程序进行打包,不然只有用用2的方法来解决了。

2、注册程序.EXE

用 VB6.0 编写的程序,使用资源文件的方法,把 Winsock 控件封装到本程序中,在运行主程序.EXE之前,先运行本程序,通过 API 函数 GetSystemDirectory 取得系统的 Winddows\System 的目录,然后把 Winsock 控件复制到该目录下,并用 Shell 来完成控件的注册。

⑴启动 VB6.0,在“外接程序→外接程序管理器”中加载“Visual Basic 6 资源编辑器”

⑵在 VB 资源编辑器窗口中,点击“添加自定义资料”,增加 Winsock 控件(C:\Winddows\System\Mswinsck.ocx),再双击刚刚创建的自定义资源,弹出”编辑属性”窗口,定义如下:

类型:
“OCX”

标识号:
101

语言:
中文(中国)


⑶保存资源文件,写如下代码:

Option Explicit

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Const MAX_PATH = 260 '定义足够长的字符串

Private Sub Form_Load()

Dim TempFile() As Byte

Dim FileNum As Integer

Dim TempDir As String

TempDir = GetWinSysDir '自定义函数取得系统的 Winddows\System 的目录

TempFile = LoadResData(101, "OCX") '用以从资源 (.res) 文件装载若干可能类型的数据,并返回一个 Byte 数组

FileNum = FreeFile

Open TempDir & "\Mswinsck.ocx" For Binary Access Write As #FileNum '新建文件(把 Winsock 控件复制到指定目录下)

Put #FileNum, , TempFile

Close #FileNum



'Shell "regsvr32 " & TempDir & "\Mswinsck.ocx ", vbNormalFocus '注册控件,有弹出对话框

Shell "regsvr32 " & TempDir & "\Mswinsck.ocx /s", vbNormalFocus '注册控件,无弹出对话框



MsgBox "注册成功,现在本程序可正常运行了!!", vbOKOnly, "注册控件"



Unload Me

End Sub



Public Function GetWinSysDir() '定义读取Winddows\System 的所在目录的函数

Dim S As String, Length As Long

S = String(MAX_PATH, 0) '赋值

Length = GetSystemDirectory(S, MAX_PATH) 'S为取得目录,MAX_PATH 为长度

S = Left(S, InStr(S, Chr(0)) - 1) '去掉多余的空格

GetWinSysDir = S

End Function

'补充:S 和 MAX_PATH 的值是可以随便赋的,

'如: Dim S As String * 20

' Length = GetSystemDirectory(S, 20)

3、补充说明

在用 VB6.0 保存上述两个程序后,请再使用 VB5.0 重新打开这两个程序,并编译为主程序.EXE、注册文件.EXE。(用 VB5.0 编译的程序,在 Win98、2000 下不需要任何 DLL 文件)

程序运行

4、程序运行

将主程序.EXE、注册文件.EXE两个文件,复制到任意机器上,先运行注册文件.EXE注册第三方的控件,再运行主程序.EXE,就不会有任何的错误了,一个变通的“绿色”软件就完成了。
射天狼 2003-09-18
  • 打赏
  • 举报
回复
什么才算绿色软件?!?
UpdateING 2003-09-18
  • 打赏
  • 举报
回复
哇~~~~好多星星呀~~~~~~~~漂亮~~~~~!!

我转个帖子给楼主,希望能对这个问题有点帮助~~!
实现“绿色”软件(影子版主)

现在非常流行“绿色”软件,不需要什么安装程序只要一个 EXE 文件就可以运行程序

了,而在 VB 的编程中有许多地方需要调用第三方的控件(很难用 API 函数搞定所有的功能),这就需要制做一个安装程序,把所需要的控件、DLL 文件或其他文件打包进去了,那么在 VB 中怎么用变通的方法实现“绿色”软件呢,请看:

示例:

1、主程序.EXE

用 VB6.0 编写的程序,调用了 Winsock 控件,如果在没有安装 VB5.0、6.0 的机器上运行则会出现错误,导致程序运行失败,这时如果按一般的方法,只有把这个程序用 VB5.0、6.0 的安装程序进行打包,不然只有用用2的方法来解决了。

2、注册程序.EXE

用 VB6.0 编写的程序,使用资源文件的方法,把 Winsock 控件封装到本程序中,在运行主程序.EXE之前,先运行本程序,通过 API 函数 GetSystemDirectory 取得系统的 Winddows\System 的目录,然后把 Winsock 控件复制到该目录下,并用 Shell 来完成控件的注册。

⑴启动 VB6.0,在“外接程序→外接程序管理器”中加载“Visual Basic 6 资源编辑器”

⑵在 VB 资源编辑器窗口中,点击“添加自定义资料”,增加 Winsock 控件(C:\Winddows\System\Mswinsck.ocx),再双击刚刚创建的自定义资源,弹出”编辑属性”窗口,定义如下:

类型: “OCX”

标识号: 101

语言: 中文(中国)


⑶保存资源文件,写如下代码:

Option Explicit

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Const MAX_PATH = 260 '定义足够长的字符串

Private Sub Form_Load()

Dim TempFile() As Byte

Dim FileNum As Integer

Dim TempDir As String

TempDir = GetWinSysDir '自定义函数取得系统的 Winddows\System 的目录

TempFile = LoadResData(101, "OCX") '用以从资源 (.res) 文件装载若干可能类型的数据,并返回一个 Byte 数组

FileNum = FreeFile

Open TempDir & "\Mswinsck.ocx" For Binary Access Write As #FileNum '新建文件(把 Winsock 控件复制到指定目录下)

Put #FileNum, , TempFile

Close #FileNum



'Shell "regsvr32 " & TempDir & "\Mswinsck.ocx ", vbNormalFocus '注册控件,有弹出对话框

Shell "regsvr32 " & TempDir & "\Mswinsck.ocx /s", vbNormalFocus '注册控件,无弹出对话框



MsgBox "注册成功,现在本程序可正常运行了!!", vbOKOnly, "注册控件"



Unload Me

End Sub



Public Function GetWinSysDir() '定义读取Winddows\System 的所在目录的函数

Dim S As String, Length As Long

S = String(MAX_PATH, 0) '赋值

Length = GetSystemDirectory(S, MAX_PATH) 'S为取得目录,MAX_PATH 为长度

S = Left(S, InStr(S, Chr(0)) - 1) '去掉多余的空格

GetWinSysDir = S

End Function

'补充:S 和 MAX_PATH 的值是可以随便赋的,

'如: Dim S As String * 20

' Length = GetSystemDirectory(S, 20)

3、补充说明

在用 VB6.0 保存上述两个程序后,请再使用 VB5.0 重新打开这两个程序,并编译为主程序.EXE、注册文件.EXE。(用 VB5.0 编译的程序,在 Win98、2000 下不需要任何 DLL 文件)

程序运行

4、程序运行

将主程序.EXE、注册文件.EXE两个文件,复制到任意机器上,先运行注册文件.EXE注册第三方的控件,再运行主程序.EXE,就不会有任何的错误了,一个变通的“绿色”软件就完成了。

TechnoFantasy 2003-09-18
  • 打赏
  • 举报
回复
那要看你的程序写的有多绿 :-),现在主流操作系统都带了VB运行库,所以说一般的小程序,执行文件拷贝过去就可以了。如果调用了组件或者数据库一类的,就比较麻烦了。
yiranoon 2003-09-18
  • 打赏
  • 举报
回复
我没什么多说的了,三个字:谢谢大家!!!

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧