我們使用InstallShield構建安裝了許多的同類產品相當,各自有停在我們的供應商目錄下的固定目錄的共享文件。我認爲安裝人員應該處理一個DLL地獄問題。如何使用InstallShield診斷/管理DLL地獄?
想象的產品A和B都有文件FOO,安裝在目錄D. FOO不一定是DLL;它可以是任何文件。
在一個理想的世界,FOO的兩個副本是相同的,當兩個產品安裝FOO得到(寫入)d,一切都很好。這就是它在一切都完全相同時的情況。
在實踐中,A和B可以是從不同的世代,因此實際上A具有FOO變體A(FOO_a)和B具有變體FOO_b。現在如果安裝了這兩種產品,則只有FOO_a或FOO_b中的一個將以D結尾,因此A或B中的一個會因爲錯誤的文件存在而被混淆。
我會從安裝程序(和InstallShield)預期的是,對系統上安裝的每個產品P,一個引用計數器將有關地方每個已安裝的文件保存(註冊表?)。因此,當被安裝A和FOO(_a)放置,FOO被標記爲屬於A,並且具有設置爲1的引用計數。如果B現在具有FOO_b相同FOO_a安裝,FOO應該被標記爲也屬於乙,並且引用計數遞增。如果安裝了B,並且FOO_b與FOO_a不同,我希望安裝程序抱怨安裝時提出了不兼容的文件FOO,並且安裝應該中止。當產品被卸載時,我希望每個已安裝文件的引用計數器遞減,並且只有當引用計數爲零時纔會刪除已安裝的文件。
這並不是什麼的InstallShield用來做。它只是在安裝過程中將FOO壓縮到目標目錄中。這實際上和DLL地獄一樣。這是安裝者的預期行爲嗎? InstallShield的? Windows的?
我們認爲我們尋找一種方式來問的InstallShield來管理這一點,但無法找到任何東西。我很高興有人告訴我們在哪裏可以正確配置。還是說InstallShield不能/不會這樣做? [如果是這樣,爲什麼我給他們錢?]
您使用的是什麼項目類型,InstallScript,Windows Installer?這對於設定最佳實踐和預期行爲的討論至關重要。另外,我認爲指責InstallShield爲了賺錢而不是神奇地爲你工作是毫無意義的。這需要一些思考和努力才能正確地獲得這些東西。 (我可以用XML文件的假設來打動你的注意力。) – 2012-03-14 23:49:49
我不是做這項工作的人,所以我將不得不在後面收集「你正在使用哪種類型」。我不是在指責InstallShield;注意IF。被問到的問題事實上假定有一種方法可以做到,我只是要求確認並提示我要在何處解釋InstallShield。 – 2012-03-15 00:47:38
這就是包管理器存在的原因......愚蠢的Windows沒有提供一個 – alternative 2012-03-15 00:49:37