2015-06-22 46 views
1

我正在構建安裝程序並使用heat.exe來收集所有必需的文件。但我需要註冊一些DLL和OCX文件,我環顧四周如何做到這一點,似乎有一些爭論,如何實現註冊這些文件,在stackoverflow以及在其他網站和論壇。 我想使用以下:SelfRegCost="1",因爲它看起來像是最簡單的註冊文件的方式。人們不喜歡它,因爲它可能會在修復或卸載程序時出現問題。如何在wix中正確註冊DLL 3.9

你對這種方法有什麼看法,你會建議我什麼? 推薦的代碼實現的一個例子將不勝感激。

在此先感謝。

回答

1

簡而言之,任何形式的自我註冊(COM就是其中之一)是一種反模式。有各種原因,一些其中有:

1)它們增加了脆弱到安裝

2)他們可以暫停沉默的時候,他們無法安裝。

3)他們沒有記錄他們爲什麼失敗的任何信息。

4)它們沒有處理;安裝程序不知道他們(無維修)

5)他們打破Windows安裝程序(無回滾)

6)的交易性質,他們放慢的安裝下來

7)他們隱藏實現細節,不能被觀察或轉化

我會一直說這不是一個意見問題,而是一個最佳實踐事實問題。但是,我想在一天結束時,最佳做法也只是意見。儘管如此,在過去的20年裏,我編寫了數千名安裝人員,我毫不懷疑自動註冊應儘可能地被忽略。取而代之的是使用Heat來「收穫」COM元數據並將其編寫到您的wxs代碼中,以便MSI可以爲您處理本地數據。如果Heat無法獲得所有細節,還可以使用其他技巧。

最後,儘可能不要使用COM。例如,您可以考慮使用RegFree COM清單來模擬組件的註冊。

參見:Do not use the SelfReg and TypeLib tables

+0

不錯的答案,也許還有看看:[**自我註冊認爲有害**](http://stackoverflow.com/questions/6129816/msi-register-dll-self-registration-considered-harmful/6141538#6141538)。 –

+0

良好的聯繫。標記爲重複。 –

+0

感謝您的反饋,但我確實需要註冊一些DLL的,因爲程序,否則將無法啓動。我不知道程序員爲什麼決定DLL需要註冊。 –