程序怎么打包生成安装程序

时间:2022-08-27 18:42:20
用vb写的程序,想要打包后拿到别人机器上安装,不知该用什么工具,怎么操作?

16 个解决方案

#1


用VB系统提供的“Package & Deployment 向导”选定工程,基本按照缺省设置,一步一步便可完成安装包的设置,但您必须注意应用环境的限制,例如您的VB打包在Win98下制作,在Win2000Server下安装可能就有问题,当然解决的一个简单方法就是直接在Win2000Server下打包。
    如果您要求打包的程序能够象商业软件一样拥有漂亮的安装界面,推荐您使用InstallShield进行程序打包,由于相关操作有些复杂,建议您参考有关站点,或直接上书店买本书入门。

#2


可以使用其它软件诸如wise, vise, setup factory等,这些软件不但功能强大而且使用非常简单

#3


建议用VB自带的“Package & Deployment “工具,其实非常简单的,有些人不喜欢它,有可能没能真正理解它。又简单又好用!

#4


没有发现“Package & Deployment ”这个菜单啊,要另外定制安装吗?使用呢?半路出家,手头没什么资料可看。

#5


在前面的中文版工具里!

或者外接加载!

#6


在“外接程序”菜单下的“外接程序管理器”,打开后在弹出的窗口中选择“打包和展开向导”. 之后按向导的指引一步一步做就可以了,很简单的。

#7


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


  制作安装程序往往是程序设计的最后一步,同时也是重要的一步,因为运行安装程序往往是用户的第一个操作。有不少读者询问这方面的问题,《答疑解惑》将分两期介绍一些制作Visual Basic安装程序时常遇到问题的解决方法。 

  问题:假如我用VB 5开发的程序很简单,只用到了 ShellExecute()这个API函数及Command Button,我能不能不做安装盘,使其在所有客户机上(Win 95/98/NT)都能正常使用?如不制作安装程序,与EXE放在一起的应该包括哪些文件? 

   

  答:对于一个非常简单的VB 5程序,没有使用额外的OCX控件,在Win 98/2000下是可以正常运行的(不需要制作安装盘)。因为Win 98/2000带有VB 5程序所需要的DLL文件。但在Win 95/NT 4.0下一般是不行的,因为缺少必要的文件。如果用户的机器上安装有IE 4.0/5.0,那么应该也是可以不制作安装盘的。在一般情况下,不制作安装盘就不能保证程序的正确运行。 

  你制作的安装盘所包括的DLL中,除了Vb5stkit.dll只是安装时使用、安装后就不需要了,其它DLL都是不可缺少的。虽然对于某些机器而言,由于安装过其它软件,可能不需要某个DLL,但要想在所有的机器上都能正确运行,一个文件都不能少。所以为了避免由于缺少某个文件或注册不正确而使程序无法运行,我建议你还是制作安装盘比较保险。 

  如果你的程序是放在网上供别人下载的,为了减少下载文件的大小,可以这样做:将你的程序单独打成一个包,如果用户已经有了运行VB 5程序所需要的有关文件,就只需下载你的程序;然后,在网页上提供一个VB 5的运行时间库的链接(如http://download.microsoft.com/download/vb50pro/utility/1/win98/EN-US/Msvbvm50.exe),如果用户的机器上没有这些文件,则让他单独下载运行库。这是一种比较通行的方法。 

   

  问题:若在一个程序中使用了其它控件, 如何在没有注册该控件的机器上运行, 是不是一定要制作安装程序或注册该控件呢? 

  答:在Win 95/98下,如果你的控件和EXE文件在同一个目录中,或者控件文件放置在System目录中,EXE程序运行时会自动找到所需要的OCX文件并注册。但是这种方法在Win NT下不适用,NT下必须先注册控件才能保证EXE文件的正常运行。另外,这种自动注册有一些毛病,如果机器已经存在一个低版本的控件,自动注册可能会失败。所以,如果你希望自己的程序能够非常好地工作,最好还是制作安装程序,否则可能会有麻烦。 

   

  问题:请介绍一下如何利用VB 6给自己的软件加上像商业软件一样的卸载功能? 

   

  答:VB 6的安装向导制作的安装程序本身包括卸载功能,不过这个功能并不出现在“开始”选单中。安装后,要进行卸载工作,可以打开“控制面板”,点击“安装/删除程序”图标,然后选择想要卸载的软件。 

    如果希望在选单中添加卸载程序选项,可以在制作安装程序包时加入相应的程序项。VB 6的“Package & Deployment 向导”支持安装程序创建自己的程序组和选单项。在“Package & Deployment 向导”的“启动选单项”一步(图1),选择“新建项”按钮,此时会出现一个对话框。在对话框的 “名称”文本框中输入选单项的名称,如“卸载VBTerm”。在“目标”框中输入卸载项的命令为:$(WinPath)st6unst.exe -n ″$(AppPath)ST6UNST.LOG″ 。然后选择确定关闭该对话框。这样生成的安装程序中将包括一个卸载程序的选单项。 


  图1 在启动选单项中添加一个卸载项 

  问题:本人用VB 6.0制作了一个程序,但在某个机器上安装时,会出现以下错误: 

  1. “system error &H80004005(02147467259)未指定错误” 

  2.“can not found ′c:windows empmsftqws.pdwst6unst.ext′” 

  3.无法开始系统安装程序。 

  请问原因?     

   

  答:这是由于VB 6的一个Bug导致的,你可以升级到VB 6 SP3(从http://msdn.microsoft.com/vstudio/sp/default.asp下载),在这个升级版本中修复了这个错误。 

   

  问题:本人用VB 6制作了一个程序,但在安装该软件时系统报告: 

  错误: 在′C:WINDOWSSYSTEMexpsrv.dll′中未发现DllRegisterServer() 的WINDOWSSYSTEMexpsrv.dll″输入点;在本操作期间: DllSelfRegister: ″C:;错误: 注册文件 ′C:WINDOWSSYSTEMexpsrv.dll′时出错;错误: (用户响应′忽略′)。 

  忽略错误后安装完成。在Windows 98下安装也有同样的问题。 

   

  答:DLL有两种,一种是标准DLL,另一种是ActiveX DLL。前者拷贝到用户机器上就可以工作了,而后者还需要调用DLL中的DllRegisterServer或者使用RegSvr32进行注册才能使用。你可以打开VB98WizardsPDWizardVB6dep.ini文件。下面是这个文件的片断: 

  [ExpSrv.dll] 

  Dest=$(WinSysPathSysFile) 

  CABFileName=MSJet35.cab 

  CABDefaultURL=http://activex.microsoft.com/controls/vb6 

  CABINFFile=MSJet35.inf 

  [MSRD2x35.dll] 

  Dest=$(WinSysPathSysFile) 

  Register=$(DLLSelfRegister) 

  CABFileName=MSJet35.cab 

  CABDefaultURL=http://activex.microsoft.com/controls/vb6 

  CABINFFile=MSJet35.inf 

   

  可以看到MSRD2x35.dll比ExpSrv.dll多一行Register=$(DLLSelfRegister),这是因为MSRD2x35.dll是ActiveX DLL。ExpSrv.dll是普通的DLL,没有DllRegisterServer,也用不着注册。你所遇到的问题是VB 6的一个Bug(在VB 6 SP3中已经修复)。如果你的VB6dep.ini文件的ExpSrv.dll多了Register一行,应该删除。或者打开安装程序的Setup.lst,删除其中ExpSrv.dll一行中的“$(DLLSelfRegister)”字样。 

   

  问题:我在做成安装文件后,安装过程中系统缺省的目录是C:Program FilesTele,而我需要的是C:Tele2000,请问有办法修改吗? 

   

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

  DefaultDir=$(ProgramFiles) ele 

  将这行中的“$(ProgramFiles) ele”修改为你想要的目录(如C:Tele2000)就可以了。 

   

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

   

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

   

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

   

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





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



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

   

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

  OSfCreateShellLink ″....Desktop″, _ 

       ″我的程序″, gstrDIR—DEST+″MyProg.exe″, ″ ″ 

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

   

  问题:我用VB 5.0安装向导生成的安装程序,安装到最后时总是显示“文件C:WindowsSystem$(DllSelfRegisterEx)不能被注册,由于它未找到”的提示信息后安装失败,请问原因? 

   

  答:这是VB 5.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)′ 

#8


制作VB安装程序问答(二) 
(作者:李海) 


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



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

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

  图1 设置文件的安装目录 



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



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

  OSfCreateShellLink ″....Desktop″, _ 

    ″我的程序″, gstrDIR—DEST+″MyProg.exe″, ″ ″ 

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



  问题:用VB 5.0安装向导生成的安装程序,安装到最后时总是显示“文件C:WindowsSystem$(DllSelfRegisterEx)不能被注册,由于它未找到”的提示信息后安装失败,请问原因。 



  答:这是VB 5.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 Wizard或PDW制作安装盘时生成的。 

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

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

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

  5.运行Setup.exe。 

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

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

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

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

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

表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)部件在注册表中的位置,不能用于自己的文件。 

#9


Package & Deployment wizard 提示说 path without file, 是怎么回事?

#10


救我啊

#11


Package & Deployment wizard 提示说 path without file, 是怎么回事?

是不是说在目录下找不到指定的文件?(你在打包后把某些文件删了,下一次Wizard就找不到这个文件了)

#12


选中工程文件就可以了

#13


在程序菜单中选择VB 运行时有个 Package & Deployment 向导用它就行了
还有老兄这么长了也不结啊

#14


avi11lang(萧十一郎):不好意思,实在是上网不方便,而且问题也确实没有解决。我就是用的 Package & Deployment wizard,出了问题。

yjmking(Privacy):在那里要选中工程文件?

zhangxu421(Sniper):我什么都没干啊。不过工程中引用了一个别人发布的动态连接库。

#15


同意ARROW1971说的
用VB 带的就可以了

#16


用VB中的package  & deployment 向导,按照提示即可完成

#1


用VB系统提供的“Package & Deployment 向导”选定工程,基本按照缺省设置,一步一步便可完成安装包的设置,但您必须注意应用环境的限制,例如您的VB打包在Win98下制作,在Win2000Server下安装可能就有问题,当然解决的一个简单方法就是直接在Win2000Server下打包。
    如果您要求打包的程序能够象商业软件一样拥有漂亮的安装界面,推荐您使用InstallShield进行程序打包,由于相关操作有些复杂,建议您参考有关站点,或直接上书店买本书入门。

#2


可以使用其它软件诸如wise, vise, setup factory等,这些软件不但功能强大而且使用非常简单

#3


建议用VB自带的“Package & Deployment “工具,其实非常简单的,有些人不喜欢它,有可能没能真正理解它。又简单又好用!

#4


没有发现“Package & Deployment ”这个菜单啊,要另外定制安装吗?使用呢?半路出家,手头没什么资料可看。

#5


在前面的中文版工具里!

或者外接加载!

#6


在“外接程序”菜单下的“外接程序管理器”,打开后在弹出的窗口中选择“打包和展开向导”. 之后按向导的指引一步一步做就可以了,很简单的。

#7


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


  制作安装程序往往是程序设计的最后一步,同时也是重要的一步,因为运行安装程序往往是用户的第一个操作。有不少读者询问这方面的问题,《答疑解惑》将分两期介绍一些制作Visual Basic安装程序时常遇到问题的解决方法。 

  问题:假如我用VB 5开发的程序很简单,只用到了 ShellExecute()这个API函数及Command Button,我能不能不做安装盘,使其在所有客户机上(Win 95/98/NT)都能正常使用?如不制作安装程序,与EXE放在一起的应该包括哪些文件? 

   

  答:对于一个非常简单的VB 5程序,没有使用额外的OCX控件,在Win 98/2000下是可以正常运行的(不需要制作安装盘)。因为Win 98/2000带有VB 5程序所需要的DLL文件。但在Win 95/NT 4.0下一般是不行的,因为缺少必要的文件。如果用户的机器上安装有IE 4.0/5.0,那么应该也是可以不制作安装盘的。在一般情况下,不制作安装盘就不能保证程序的正确运行。 

  你制作的安装盘所包括的DLL中,除了Vb5stkit.dll只是安装时使用、安装后就不需要了,其它DLL都是不可缺少的。虽然对于某些机器而言,由于安装过其它软件,可能不需要某个DLL,但要想在所有的机器上都能正确运行,一个文件都不能少。所以为了避免由于缺少某个文件或注册不正确而使程序无法运行,我建议你还是制作安装盘比较保险。 

  如果你的程序是放在网上供别人下载的,为了减少下载文件的大小,可以这样做:将你的程序单独打成一个包,如果用户已经有了运行VB 5程序所需要的有关文件,就只需下载你的程序;然后,在网页上提供一个VB 5的运行时间库的链接(如http://download.microsoft.com/download/vb50pro/utility/1/win98/EN-US/Msvbvm50.exe),如果用户的机器上没有这些文件,则让他单独下载运行库。这是一种比较通行的方法。 

   

  问题:若在一个程序中使用了其它控件, 如何在没有注册该控件的机器上运行, 是不是一定要制作安装程序或注册该控件呢? 

  答:在Win 95/98下,如果你的控件和EXE文件在同一个目录中,或者控件文件放置在System目录中,EXE程序运行时会自动找到所需要的OCX文件并注册。但是这种方法在Win NT下不适用,NT下必须先注册控件才能保证EXE文件的正常运行。另外,这种自动注册有一些毛病,如果机器已经存在一个低版本的控件,自动注册可能会失败。所以,如果你希望自己的程序能够非常好地工作,最好还是制作安装程序,否则可能会有麻烦。 

   

  问题:请介绍一下如何利用VB 6给自己的软件加上像商业软件一样的卸载功能? 

   

  答:VB 6的安装向导制作的安装程序本身包括卸载功能,不过这个功能并不出现在“开始”选单中。安装后,要进行卸载工作,可以打开“控制面板”,点击“安装/删除程序”图标,然后选择想要卸载的软件。 

    如果希望在选单中添加卸载程序选项,可以在制作安装程序包时加入相应的程序项。VB 6的“Package & Deployment 向导”支持安装程序创建自己的程序组和选单项。在“Package & Deployment 向导”的“启动选单项”一步(图1),选择“新建项”按钮,此时会出现一个对话框。在对话框的 “名称”文本框中输入选单项的名称,如“卸载VBTerm”。在“目标”框中输入卸载项的命令为:$(WinPath)st6unst.exe -n ″$(AppPath)ST6UNST.LOG″ 。然后选择确定关闭该对话框。这样生成的安装程序中将包括一个卸载程序的选单项。 


  图1 在启动选单项中添加一个卸载项 

  问题:本人用VB 6.0制作了一个程序,但在某个机器上安装时,会出现以下错误: 

  1. “system error &H80004005(02147467259)未指定错误” 

  2.“can not found ′c:windows empmsftqws.pdwst6unst.ext′” 

  3.无法开始系统安装程序。 

  请问原因?     

   

  答:这是由于VB 6的一个Bug导致的,你可以升级到VB 6 SP3(从http://msdn.microsoft.com/vstudio/sp/default.asp下载),在这个升级版本中修复了这个错误。 

   

  问题:本人用VB 6制作了一个程序,但在安装该软件时系统报告: 

  错误: 在′C:WINDOWSSYSTEMexpsrv.dll′中未发现DllRegisterServer() 的WINDOWSSYSTEMexpsrv.dll″输入点;在本操作期间: DllSelfRegister: ″C:;错误: 注册文件 ′C:WINDOWSSYSTEMexpsrv.dll′时出错;错误: (用户响应′忽略′)。 

  忽略错误后安装完成。在Windows 98下安装也有同样的问题。 

   

  答:DLL有两种,一种是标准DLL,另一种是ActiveX DLL。前者拷贝到用户机器上就可以工作了,而后者还需要调用DLL中的DllRegisterServer或者使用RegSvr32进行注册才能使用。你可以打开VB98WizardsPDWizardVB6dep.ini文件。下面是这个文件的片断: 

  [ExpSrv.dll] 

  Dest=$(WinSysPathSysFile) 

  CABFileName=MSJet35.cab 

  CABDefaultURL=http://activex.microsoft.com/controls/vb6 

  CABINFFile=MSJet35.inf 

  [MSRD2x35.dll] 

  Dest=$(WinSysPathSysFile) 

  Register=$(DLLSelfRegister) 

  CABFileName=MSJet35.cab 

  CABDefaultURL=http://activex.microsoft.com/controls/vb6 

  CABINFFile=MSJet35.inf 

   

  可以看到MSRD2x35.dll比ExpSrv.dll多一行Register=$(DLLSelfRegister),这是因为MSRD2x35.dll是ActiveX DLL。ExpSrv.dll是普通的DLL,没有DllRegisterServer,也用不着注册。你所遇到的问题是VB 6的一个Bug(在VB 6 SP3中已经修复)。如果你的VB6dep.ini文件的ExpSrv.dll多了Register一行,应该删除。或者打开安装程序的Setup.lst,删除其中ExpSrv.dll一行中的“$(DLLSelfRegister)”字样。 

   

  问题:我在做成安装文件后,安装过程中系统缺省的目录是C:Program FilesTele,而我需要的是C:Tele2000,请问有办法修改吗? 

   

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

  DefaultDir=$(ProgramFiles) ele 

  将这行中的“$(ProgramFiles) ele”修改为你想要的目录(如C:Tele2000)就可以了。 

   

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

   

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

   

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

   

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





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



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

   

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

  OSfCreateShellLink ″....Desktop″, _ 

       ″我的程序″, gstrDIR—DEST+″MyProg.exe″, ″ ″ 

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

   

  问题:我用VB 5.0安装向导生成的安装程序,安装到最后时总是显示“文件C:WindowsSystem$(DllSelfRegisterEx)不能被注册,由于它未找到”的提示信息后安装失败,请问原因? 

   

  答:这是VB 5.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)′ 

#8


制作VB安装程序问答(二) 
(作者:李海) 


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



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

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

  图1 设置文件的安装目录 



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



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

  OSfCreateShellLink ″....Desktop″, _ 

    ″我的程序″, gstrDIR—DEST+″MyProg.exe″, ″ ″ 

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



  问题:用VB 5.0安装向导生成的安装程序,安装到最后时总是显示“文件C:WindowsSystem$(DllSelfRegisterEx)不能被注册,由于它未找到”的提示信息后安装失败,请问原因。 



  答:这是VB 5.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 Wizard或PDW制作安装盘时生成的。 

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

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

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

  5.运行Setup.exe。 

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

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

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

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

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

表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)部件在注册表中的位置,不能用于自己的文件。 

#9


Package & Deployment wizard 提示说 path without file, 是怎么回事?

#10


救我啊

#11


Package & Deployment wizard 提示说 path without file, 是怎么回事?

是不是说在目录下找不到指定的文件?(你在打包后把某些文件删了,下一次Wizard就找不到这个文件了)

#12


选中工程文件就可以了

#13


在程序菜单中选择VB 运行时有个 Package & Deployment 向导用它就行了
还有老兄这么长了也不结啊

#14


avi11lang(萧十一郎):不好意思,实在是上网不方便,而且问题也确实没有解决。我就是用的 Package & Deployment wizard,出了问题。

yjmking(Privacy):在那里要选中工程文件?

zhangxu421(Sniper):我什么都没干啊。不过工程中引用了一个别人发布的动态连接库。

#15


同意ARROW1971说的
用VB 带的就可以了

#16


用VB中的package  & deployment 向导,按照提示即可完成