首页 目录页 热情软件屋 问专家

李海文选

制作VB安装程序问答(二)

李海

本文发表在2000年4月24日 《计算机世界》27期

第1部分

6、如何制作包括子目录的安装程序

问:我用VB+Access开发数据库系统。但到发布时用VB自已的发布向导时,我程序目录中的子目录的文件却加入不正常,向导不按子目录区分,都加入程序目录中。怎么办?

答: VB的安装向导是支持包括子目录的安装程序的。运行安装向导到“文件小节”一步(图2),在对话框中选择“添加”按钮,然后选择应该放置在子目录中的文件添加到文件列表中。

2 添加要安装的文件

然后从文件列表中选择该文件,点击 “文件详细资料”按钮。在图3所示对话框中的设置目标路径。最好不要用绝对路径(如C:\MyProject)来指定安装位置,这样会给用户带来不便。安装向导使用宏来指示文件要安装的位置。这些宏只在安装程序中有效。宏的含义参见表1。如果要将文件放置在应用程序目录下的 \Data 子目录下,可以使用$(AppPath)\Data来指定安装路径。

3 设置文件的安装目录

表1 安装向导使用的宏及其含义

含义

$(WinSysPath)

Windows 95/98下的 \Windows\System 子目录,或 Windows NT 下的 \Winnt\System32 目录。

$(WinSysPathSysFile)

Windows 95/98下的 \Windows\System 子目录, 或 Windows NT 下的\Winnt\System32 目录,作为系统文件,当删除应用程序时它不删除。

$(WinPath)

Windows 95/98 下的 \Windows 或 Window NT 下的 \Winnt。

$(AppPath)

用户指定的应用程序目录,或 Setup.lst文件中 [SETUP] 部分指定的 DefaultDir 值。

$(ProgramFiles)

应用程序通常所安装到的目录,通常为C:\Program Files

$(CommonFiles)

有时安装共享文件的公用目录,通常为C:\Program Files\Common Files

$(MSDAOPath)

数据访问对象 (DAO) 部件在注册表中的位置,不能用于自己的文件。

7、如何让安装程序在桌面上放一个快捷方式

问:安装时,用VB自己的“展开与打包向导”制作安装盘,不知道怎么让程序在桌面上放一个快捷方式?

答:VB“展开与打包向导”所生成的安装程序的工作步骤是这样的:先运行Setup.exe,这个程序将VB的运行库安装到用户的机器上,同时将.cab文件中的文件释放到临时目录中,然后再调用临时目录中Setup1.exe完成余下的安装工作。Setup1.exe是由VB写的(正是这个原因所以要先安装VB的运行库),其源程序可以在VB98\Wizards\PDWizard\Setup1中找到。如果你对VB的安装程序不满意,希望添加新功能,可以直接修改Setup1.vbp。具体到你的问题,在VB中可以打开Setup1.vbp,然后修改Setup1.frmForm_Load事件,在其中可以找到如下几行:

'

' Create program icons (or links, i.e. shortcuts).

'

If (fMainGroupWasCreated = True) Or ((cIcons > 0) And TreatAsWin95()) 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中加上:

(VB 5.0中)
OSfCreateShellLink "..\..\Desktop", _ "我的程序", gstrDIR_DEST + "MyProg.exe", ""

(VB 6.0中)
OSfCreateShellLink "..\..\Desktop", _ "我的程序", gstrDIR_DEST + "MyProg.exe", "", True, "$(Programs)"

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

8DEP文件有什么用

问:用VB5的安装向导制作的程序安装包里,总有一个.DEP文件,请问这个文件有什么用?是否与OCX注册有关?如何打开?如何编辑?

答:只有当你为ActiveX控件制作安装包的时候,才会出现.DEP文件。这个文件主要是供使用你的ActiveX控件的程序设计者制作他自己的程序的安装盘时使用的。你的用户在使用Setup Wizard制作安装盘时,Setup Wizard会读取这个文件,检查你的ActiveX控件需要哪些DLL支持。一般不用手工修改这个文件,如果你认为确有必要,可以使用记事本打开修改。

9、如何修改安装程序的缺省目录

问:我在做成安装文件后,安装过程中系统缺省的目录是 c:\program files\tele,而我需要的是c:\tele2000,请问有办法修改吗?

答:要修改安装程序的缺省目录,可以打开安装盘的setup.lst文件。在这个文件中可以找到下面一行:

DefaultDir=$(ProgramFiles)\tele

将这行中的“$(ProgramFiles)\tele”修改为你想要的目录(如c:\tele2000)就可以了。

10、总是显示$(DllSelfRegisterEx)不能被注册

问:我用VB5.0安装向导生成的安装程序,安装到最后时总是显示“文件c:\windows\system\$(DllSelfRegisterEx)不能被注册,由于它未找到”的提示信息后安装失败,请问为何原因?

问:这是VB5.0/6.0的一个Bug

如果运行Visual Basic 5.0生成的安装盘,会产生下面的错误:

The file '<Windows System Folder>\$(DLLSelfRegisterEx)' could not be registered because it was not found.

如果运行Visual Basic 6.0生成的安装盘,会产生下面的错误:

The file '<TEMP Folder>\Msftqws.pdw\$(DllSelfRegisterEx)' could not be registered because it was not found.

这个问题发生在分发Microsoft Calendar control(MSCal.ocx)时。MSCal.dep文件中的"Register="行被错误地设置成 $(DLLSelfRegisterEx)了。

解决办法如下:

1. 使用记事本打开Setup.lst文件。Setup.lst文件是Setup WizardPDW制作安装盘时生成的。

2. 查找$(DLLSelfRegisterEx)。你将看到在MSCal.ocx的一行中有$(DLLSelfRegisterEx)

3. 修改 $(DLLSelfRegisterEx) $(DLLSelfRegister)

4. 关闭记事本并保存文件。

5.运行Setup.exe

如果希望今后生成的setup.exe都不出这样的错误,可以这样做:

1. 使用记事本打开MSCal.dep文件。你可以在MSCal.ocx所在的目录(通常是Windows 95/98Windows\SystemWindows NTWinnt\System32)找到MSCal.dep文件。

2. 查找$(DLLSelfRegisterEx)。你将可以在"Register="一行看到$(DLLSelfRegisterEx)

3. 修改 $(DLLSelfRegisterEx) $(DLLSelfRegister)

4. 关闭记事本并保存文件。

第1部分

回到《李海文选》目录

如果您有任何建议,请给我发电子邮件:
版权所有 李海,热情软件屋 1997-2006

WU Banner from WebUnion Chinese Network