0

我使用vs安裝程序爲我的vb6應用程序構建安裝程序包。 和問題是我可以看到,在項目資源管理器下有一個依賴關係列表附加到我的exe文件。什麼是依賴之間的差異,並手動添加一個dll/ocx vs安裝程序6?

alt text http://img505.imageshack.us/img505/9696/croppercapture259lr8.png

和目標機器樹視圖中的文件系統下,我可以在DLL/OCX實際存儲在一個文件夾或在windows系統文件夾本身[左窗口。

alt text http://img101.imageshack.us/img101/9224/croppercapture251qm1.png

所以我不明白的是..有實際區別嗎? 如果我只是設置依賴關係,並沒有將dll或ocx添加到文件夾或win sys文件夾,那麼dll是否也會自動複製過來?

回答

1

不保證所有這些dll都會出現在安裝軟件的系統上。所以他們需要包含在你的安裝程序中。從那裏你有兩個選擇。

您可以將它們安裝在Windows系統文件夾或應用程序文件夾中。不同之處在於,如果將它們安裝在應用程序文件夾中,則可以在XP和Vista上進行設置,以便可以啓動並運行具有不同版本組件的不同版本的軟件。將它們安裝到系統文件夾中會破壞依賴舊版組件的舊版本。

如果某個組件依賴於無法更新的其他組件,則在應用程序文件夾中安裝很少不起作用。發生這種情況時,通常與Microsoft庫一起使用。多年來,他們在這個問題上變得更好。

你可以閱讀更多有關方執行涉及面here

最後的依賴需要在您的安裝,使他們在Windows註冊表中註冊的問題。與大多數.NET程序集不同,即使使用CreateObject和Variant類型來訪問它,任何ActiveX/COM應用程序都需要註冊該組件。

我會承認整個過程是特殊的,並且是有關DLL地獄的故事的來源之一。從MSDN文章開始,使用wikipedia,當然還可以在這裏提出更多問題。

0

對於普通安裝程序包,通常應該沒有「應用程序文件夾」下的「dll」文件夾,但涉及很多因素(私有標準DLL,免註冊COM等)。是的,這些依賴包括在內(除非你的不包括他們)。他們每個人都應該擁有一個屬性,確定他們在目標系統上的安裝位置。

此列表中還有許多組件不是以這種方式重新分發的,因爲它們是依賴於操作系統的系統組件,MDAC組件,或未經許可用於重新分發(例如fm20.dll)。

不幸的是,這是一個可以直接導致用戶系統的DLL Hell的軟件包類型的例子。解決這個問題可能意味着研究MS KB文章中的每個MS組件,以確定什麼可以或應該重新分配以及如何重新分配。

部署可能是一個混亂的業務得到正確的。

相關問題