用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。
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。
相关文章推荐
- 【软件-InstallAnywhere】Java软件打包:将指定的文件创建快捷方式并安装到桌面(工具installanywhere2012)
- vs打包程序步骤 开始程序和卸载以及桌面快捷方式
- .Net程序打包安装与卸载制作 ——怎样创建网页快捷方式(“开始与程序”菜单中)?(七)
- java实现软件程序开机自动启动和创建程序的桌面快捷方式源代码
- android程序卸载后无法删除桌面快捷方式的解决办法
- VS2008 c# 创建快捷方式 卸载程序
- CentOS 7 创建程序(FireFox)桌面快捷方式
- Inno Setup入门(四)——为程序创建桌面快捷方式
- C#程序打包安装部署之创建快捷方式
- 批处理实现c/s程序部署,以及创建桌面快捷方式
- 【转载】C++实现在桌面创建程序的快捷方式
- VB6自带Package & Deployment 生成桌面快捷方式
- 创建指定程序的桌面快捷方式--以记事本为例
- Inno Setup入门(四)——为程序创建桌面快捷方式
- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜单 快捷方式
- Android程序开发之手机APP创建桌面快捷方式
- Windows服务System权限下在当前用户桌面创建快捷方式C#实例程序
- Inno Setup入门(四)——为程序创建桌面快捷方式
- install4j打包安装程序时添加桌面快捷方式
- NSIS不能删除其打包的程序桌面快捷方式的解决方式