17404.html

来自「以电子书的形式收集了VB一些常见问题解决方法,可以很方便的查找自己需要解决的问题」· HTML 代码 · 共 23 行

HTML
23
字号
<html>  <head>    <title>Re: 请问Sun Jack……</title>  </head>  <body bgcolor="#FFFFFF" vlink="#808080">    <center>      <h1>Re: 请问Sun Jack……</h1>    </center><hr size=7 width=75%><hr size=7 width=75%><p>Posted by Sun Jack on August 17, 1999 at 14:06:10:<p>In Reply to: <a href="17330.html">请问Sun Jack……</a> posted by Joyce on August 16, 1999 at 08:32:13:<p>: 请问Sun Jack 如何修改 VB6 的 Setup Kit?<p>你需要先评估修改Setup Kit 是否对你有益,我先列出三点供你参考:<br>(1)."An access violation occured while copying the file"是VB6 PDW SP3 的第二严重的Bug,这个 Bug 在VB6原来的版本(未安装 SP3 之前的VB 版本)是排名第一名,虽然在SP3 中有对此Bug 做一些修补的动作,但是仍未彻底解决这个问题,由此可知要解决此Bug 是非常因难,况且这个Bug 所产生的地方,是PDW 中作档案复制最核心的部份,如果修改错误,将会造成安装你的程式的电脑,系统档案毁损(这是真的,我曾做出这种事)<br>(2).修改Setup Kit 要有心理准备,就是你改好的程式,可能在下一版的Service Pack(如果有的话),Microsoft 因为修改其它的Bug ,把程式码做了调整,造成你所改的部份,转至新的Setup Kit 会有问题,举个例子,在国外,曾经有一些人,合力更改了 SP3 之前的 Setup Kit,但是在 SP3 的 Setup Kit中,Microsoft 把程式码做了一些修改,造成之前所修改的部份都白费了.<br>(3).Setup Kit 有Bug 的现像存在已久,很多人已改用 InstallShield<br>(4).Microsoft 也建议用 "Wise Installer"(另一套软体)当作其 Solution<p>如果你看完上面几点后,仍执意要修改Setup Kit,则修改步骤如下:<br>(1).用 PDW 产生安装磁片<br>(2).在你的安装磁片中有一个 Setup.lst,里面有一行<br>Spawn=Setup1.exe<br>把这一行改成<br>Spawn=C:\Program Files\Microsoft Visual Studio\VB98\VB6.EXE D:\Program Files\Microsoft Visual Studio\VB98\Wizards\PDWizard\Setup1\Setup1.vbp /cmd<br>改完后存档,这个目的是告诉Setup Kit ,要叫 VB 的 Source 来Debug,而不是直接执行 Setup Kit 的 EXE <br>(3).执行你的安装磁片的 Setup.exe,你会看到 VB 的 Setup Kit 的Source 被载入<br>(4).按F8 开始单步执行<br>(5). "access violation "的问题是在 basSetup1 中的 CopyFile function 所产生的,但是在你的电脑的上无法模拟出这个状况(因为你的电脑上的 DLL 都是最新的),因此你必须很 "刻意" 的让VB 在处理 MSVCR20.DLL 时,把流程导入需 "OverWrite "此档案的 Source code.<br>(6).修改 CopyFile function 的部份,因为程式太过复杂,因此我在这里只讲解大方向,首先你先要把 Setup Kit 从cab 档所解出来的 MSVCR20.DLL Copy 至 Temp 目录(需具备如何取得 Temp 目录的技巧,Setup Kit 已提供此Function),<br>接下来需判断使用者的OS 是 WIN9x 或 Win NT (Setup Kit 已提供此Function).<br>然后需让系统知道你所 Copy 至 Temp 目录档案,要在下一次开机时, OverWrite 系统的 MSVCR20.DLL,这个部份的作法随着 OS 的不同,而有不同的处理方式(所以会用到上面提到的判断 OS 的Funtion).<br>在Win 9x 的OS,要设定开机时,将档案 Copy 至另一个地方,可用Windows 目录下的 Wininit.ini 来处理,但是你找不到这个档案,因为开机时,已被 OS 处理过,并改名为 Wininit.bak,如果你幸运的话,会找到 Wininit.bak 这个档案,你可以看看里面的内容,了解一下档案格式.<br>在Win Nt 上,并不使用 Wininit.ini 这个作法,你需要使用 MoveFileEx API 来处理,<br>至于这部份程式使用的时机,你在 CopyFile funciton 中,会看到<p>ElseIf lRC And VIF_FILEINUSE Then<br>......<br>ElseIf lRC And VIF_ACCESSVIOLATION Then<br>.......<br>ElseIf lRC And VIF_SHARINGVIOLATION Then<br>.......<p>上面这几个地方,Setup Kit 原来的作法,只是显示一些 Message ,就是你所提到的错误讯息,你需要改成不显示错讯息,并把流程导入你所增加的程式码<p>(7).最后,需让Setup Kit 知道,因为你所修改的部份,需重新开机才能生效,因此需让Windows 重新开机(Setup Kit 已提供此Function).<br>在 basSetup1 的 ExitSetup function,你需要做一点修改,让Setup Kit 知道,当发生所面所处理的状况时,需重新开机(很简单的,Setup Kit 原本只判断安装 MDAC 是否需重新开机,你只要再你的状况也加上去就可以了).<p>(8).切记:在你边 Debug ,边修改程式时,千万不要在未存档前就让流程跑到 ExitSetup function,否则你就会看到 VB从你眼前消失,你所修改的部份,将会是白费.<p><br><br><hr size=7 width=75%><p><a name="followups">Follow Ups:</a><br><ul><!--insert: 17404--></ul><!--end: 17404--><br><hr size=7 width=75%><p></body></html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?