您的位置:首页 > 编程语言 > VB

用VB6自带打包工具创建桌面快捷方式和卸载程序

2009-06-09 23:52 585 查看
  最近因一个小活需要用vb写,遇到了打包时不能创建桌面快捷方式和无卸载功能的问题,嫌换打包工具费事,所以找了一些网上的文章并自己研究了一下,成功,现总结如下:

A、创建卸载程序

在启动菜单项那里新建项,在对话框的“名称”文本框中输入菜单项的名称,如“卸载VBTERM”。“目标”栏中为 $(WinPath)/st6unst.exe -n "$(AppPath)/ST6UNST.LOG",在“开始”为“$(WinPath)”。

B、创建桌面快捷方式

VB展开与打包向导生成的安装程序的工作步骤是这样的:先运行Setup.exe,这个程序将VB的运行库安装到用户的机器上,然后再调用 Setup1.exe。Setup1.exe是由VB写的(正是这个原因所以要先安装VB的运行库),其源程序可以在VB98/Wizards /PDWizard/Setup1中找到。所以如果对VB的安装程序不满,就可以直接修改Setup1.vbp。

在VB中可以打开 Setup1.vbp,然后修改Setup1.frm的Form_Load事件,首先添加必要的变量声明,如:

Dim strDeskTopPath As String
Dim lngIDLDesktop As Long
Dim oMallocDesktop As IVBMalloc

然后,在Setup1.frm的Form_Load事件代码中找到如下几行:
'
' Create program icons (or links, i.e. shortcuts).
'
If fMainGroupWasCreated Or (cIcons > 0) Then
ShowStaticMessageDialog ResolveResString(resPROGMAN)
CreateIcons gsICONGROUP
'
' Do the same for other sections in SETUP.LST if you've added your own.
'
'CreateIcons "MySection"
'CreateIcons "MyOtherSection"
'

End If

在If.. End If中加上:
If SHGetSpecialFolderLocation(frmSetup1.hWnd, sfidDESKTOP, lngIDLDesktop) = NOERROR Then
strDeskTopPath = String$(gintMAX_PATH_LEN, 0)
SHGetPathFromIDListA lngIDLDesktop, strDeskTopPath
SHGetMalloc oMallocDesktop
oMallocDesktop.Free lngIDLDesktop
strDeskTopPath = StringFromBuffer(strDeskTopPath)
End If

OSfCreateShellLink "../.." & Mid(strDeskTopPath, InStrRev(strDeskTopPath, "/")), _
gstrAppName, gstrDestDir + gstrAppExe, "", True, "$(Programs)"

 重新编译Setup1.vbp,用Setup1.exe替换原来的Setup1.exe即可。

对于Setup1.vbp中引用的“VB-friendly shell interfaces”对应的是VB98/Wizards /PDWizard/Setup1目录下的“VBSHELL.TLB”库,生成的Setup1.exe文件在VB98/Wizards /PDWizard目录下。

 对于新添代码中的“SHGetSpecialFolderLocation”和“sfidDESKTOP”等的定义可参看模块modShell。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: