2014-03-05 189 views
0

我明智地創建了一個安裝程序,用於使用進程內(DLL)COM-Server的Delphi應用程序。 我將Wise項目中的DLL配置爲「不要註冊」,但是在測試安裝之後它仍然被註冊?WISE - COM服務器註冊選項「不註冊」不起作用?

enter image description here

這是明智的「無證功能」還是我做錯了什麼?

有沒有人有解決方法或解決此問題?

P.S.我不想註冊該DLL的原因是,在目標PC上,COM服務器已經可以爲其他應用程序註冊具有特定設置(線程模型,路徑等)的我不想觸摸的目標PC。

回答

1

我發現了一個可能的解決方案或解決方法(可能是因爲我我以前不理解它,直到結束,但它的工作)。

COM DLL將目標電腦上註冊,即使是標有如果登記部署PC上的「不註冊」,以備不時之需。 解決方案:

  • 從本地(部署)未註冊的DLL PC
  • 從安裝包中刪除,保存(和編譯)封裝
  • 再添加COM DLL來包裝,用其標記爲「不註冊「,保存並編譯。

完成這些步驟後,按預期方式工作 - DLL未在目標PC上註冊。

看來,這是因爲Windows安裝程序的廣告發生(這還是我沒有正確理解),但是從WISE的文檔,我發現:

「如何自注冊信息被捕獲 當您添加含COM自注冊信息給 安裝一個.DLL 或.OCX文件,它的註冊信息被掃描,並且 相應註冊表項添加到安裝。此註冊系統 比安裝時在 安裝時讓文件自注冊更爲強大,因爲它不依賴目標計算機上其他 文件的存在或.OCX或.DLL文件 對自身的依賴程度。 。-registration約定」

爲此作爲附加措施之前,上述步驟,我改變WISE廣告選項:

Wise > Tools > Options ... Advertising tab

對於Advertising Setting:選擇Do not scan advertising information選項。
未選中選項Automatically add self-registration


這一切都寫得實際的解決方案,但由於@Christopher畫家響應我在「DLL地獄」術語被引入,特別是對COM DLL文件,以便爲長期的解決方案(透視)我會檢查註冊免費激活COM組件link)。

+1

是的,如果你私下部署你的DLL並使用RegFree COM,你已經隔離了這個組件,並解除了DLL的地獄衝突。這將是一個更好的設計。 –

3

我試圖避免這變成了「我應該使用線程的工具」。也就是說,WiX/IsWiX是免費的開源軟件,應該可以滿足您的需求。 (這很難說,因爲我不知道這個MSI會有什麼其他要求。)

這就是說,有沒有可能DLL已經被註冊了?您是否在快照虛擬機或其他可重現的環境中進行測試,您可以100%確定它不是?

如果是這樣,智慧腳本中是否還有其他任何可能導致註冊的操作。我並不知道明智的缺陷/功能,但如果有的話,您就是SOL,因爲該產品早已死亡,並且沒有可用的支持或更新。

最後一個註釋。你對這個DLL的評論可能已經存在並且被註冊了......這叫做DLL地獄。如果它不在那裏......現在你沒有註冊。無論您使用何種工具,在您希望獲得高質量安裝體驗之前,您都需要解決一些設計問題。

+0

如果DLL未註冊,則當前應用程序將從其路徑註冊它。這是因爲它可能與已經使用並註冊此DLL的另一應用程序(主應用程序,因爲當前是輔助工具)一起安裝在PC上。 – ALZ

+0

是的,我在真正的和虛擬的電腦上測試了DLL,它根本沒有註冊DLL,或者在安裝之前未註冊,並在註冊之後得到註冊......看起來這是明智的「功能」 – ALZ

+0

或者在你不明智的腳本中有單獨的操作不佔。嘗試創建一個全新的腳本,只需安裝一個沒有註冊的文件即可確認。我認爲這首先是錯誤的,因爲我可以想出許多方法使其失敗。 –