安装 PrintManager 和 SQL Server 所遇到的问题
2024-08-31 00:48:01
供稿:网友
安装 autodest printmanager 所遇到的问题 / 安装 sql server 所遇到的问题
为了参考一下打印服务器的工作流程,特地找了个autodest printmanager 来看看。
autodest printmanager的安装步骤:
步骤一.printmanager数据库安装
步骤二.printmanager web站点安装
步骤三.printmanager打印服务安装
步骤四.注册
主要是在“步骤一.printmanager数据库安装”碰上了问题。
问题1:
printmanager数据库需要安装在有sql server的机器上,所以得先安装sql server。
安装sql server2000时,系统弹出一个警告信息框,显示"以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机!"。
重启后问题依旧。
于是上google搜索:
出现最多的文章是"一次sql server 2000 安装奇遇",但却不知所云,文章并没找到问题实质;
继续搜索,终于找到答案了,删除hkey_local_machine ystem/currentcontrolset/control ession manager/pendingfilerenameoperations即可。
造成问题的直接原因牵涉到一个老问题————psdriver,参看附录。
问题2:
安装sql server2000后,继续安装printmanager数据库,提示错误"[dbnetlib][connection(connect()).]sql server does not exists or access denied."
查阅printmanagerde文档,原来是printmanager要求sql server的sa用户必须设置口令,于是不得不重装一次sql server。
由于只是想看看printmanager是如何工作的,所以注册与否并不重要。不过用softice简单跟了下,printmanager的注册保护似乎并不是很复杂,有空时可以试试。
附录:psdriver的老问题
psdriver是很久以前的东西了。
简单地讲,psdriver就是在window2000下,创建一个虚拟打印机,其他的application可以方便地通过这个打印机生成ps文件,再加上acrobat distillr的配合,就可以生成pdf了。
现在由于print manager的缘故又把它牵扯出来了,尽管目前涉及的只是个小问题而已。
psdriver是调用addprinterdriver来安装打印机的。
addprinterdriver的调用者只需要把有关的驱动程序拷贝到目录:%system% pool/drivers/w32x86
调用addprinterdriver时,系统会把这些文件拷贝到目录:%system% pool/drivers/w32x86/3
具体到ppd:
第一次安装时,系统把ppd文件拷贝到"%system% ystem32 pool/drivers/w32x86/3"下,并生成一个bpd文件。当重复安装时,系统会根据ppd文件的修改日期来决定是否更新ppd。如果ppd是新的,替换掉旧的ppd,也就是再拷贝一次;否则,do nothing!
现在的问题是,如果最开始提供的ppd文件是只读的话,系统只是拷贝文件,文件属性不会改变。当需要更新ppd时,因为"%system% ystem32 pool/drivers/w32x86/3"下的ppd也是只读的,系统拷贝将会失败!!!
于是,系统会修改注册表,在:
hkey_local_machine ystem/currentcontrolset/control ession manager/
下写入一个键值:
pendingfilerenameoperations = "/??/c:/winnt ystem32 pool/drivers/w32x86/3/new/test.ppd/??/c:/winnt ystem32 pool/drivers/w32x86/3/test.ppd/??/c:/winnt ystem32 pool/drivers/w32x86/3/old/test.ppd/??/c:/winnt ystem32 pool/drivers/w32x86/3/old"
最后的尾巴没了,可以看出,前面一段是指出在系统重启时,用c:/winnt ystem32 pool/drivers/w32x86/3/new/test.ppd覆盖c:/winnt ystem32 pool/drivers/w32x86/3/test.ppd,这样以达到更新ppd的目的。
注:这是典型的安装驱动的处理策略,但在目标文件是可读的情况下,这样是行不通的。
后面一段代码尾巴没了,不明所以。
重启机器后,实际的情况为:
pendingfilerenameoperations = "/??/c:/winnt ystem32 pool/drivers/w32x86/3/old/test.ppd"
显然这是不合语法的,而且只能手工删除,正是它的存在,导致了上述sql server的安装错误!!!
补充一下,这个问题早已经处理过了,就是在安装时,去掉ppd的只读属性即可。现在之所以碰到问题只是因为注册表里的垃圾没清理干净而已。
过几天整理一下psdriver,弄一个比较友好的小工具出来。