安裝 PrintManager 和 SQL Server 所遇到的問題
最後更新:2017-02-28
來源:互聯網
上載者:User
server|問題
安裝 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,弄一個比較友好的小工具出來。