我正在爲我開發的解決方案構建安裝程序。我的一個項目的輸出是需要註冊的dll。我使用Visual Studio生成MSI,然後使用InstallShield修改它。在Visual Studio中,我添加了需要執行管理員權限的自定義操作,並將dll的註冊屬性設置爲vsdrpCOMSelfReg
。當我在沒有管理員權限的情況下運行msi時,會顯示一條消息,指出操作需要管理員角色,當我確認並更改用戶帳戶時,安裝完成時沒有任何錯誤,但是該dll不會被註冊。 我錯過了什麼嗎?如何正確註冊一個DLL? 任何幫助將不勝感激。Installshield MSI無法註冊dll
1
A
回答
4
SelfRegistration不是Windows安裝程序的最佳實踐。正確的方法是將COM元數據寫入MSI,並允許MSI複製文件並應用註冊表數據。在InstallShield中,通過爲您的DLL創建組件,將該DLL標記爲密鑰文件,然後右鍵單擊該文件並選擇Extract COM來實現此目的。然後,InstallShield將模擬註冊並將該信息創建爲正確的表格。在一臺乾淨的機器上構建和測試。不需要自定義操作,安裝程序將正確支持回滾場景。
2
沒有理由,甚至創建自定義操作要做到這一點,即使是Visual Studio中。將該文件標記爲vsdrfCOM,並將構建時將類註冊解壓縮到MSI的Class表中。即使你堅持自注冊,你也可以將它標記爲vsdrfComSelfReg,它將從MSI文件的SelfReg表中註冊。根本沒有自定義操作。無論如何,正如克里斯托弗所說的那樣,在安裝時進行自我註冊並不是一個好習慣,原因有很多,其中之一是缺少依賴關係。
相關問題
- 1. installshield light ActiveX DLL未註冊
- 2. MSI - 有條件註冊DLL
- 3. MSI Desparation。 MSI不會註冊DLL
- 4. 無法註冊DLL
- 5. 無法註冊.NET COM DLL
- 6. 如何在installshield中禁用字體註冊installscript MSI項目?
- 7. ATL DLL無法註冊到XP
- 8. 無法註冊.dll Windows 7 Professional x64
- 9. 爲什麼我的DLL無法註冊?
- 10. 無法使用regsvr32註冊dll
- 11. 使用WiX無法註冊DLL
- 12. 從MSI多實例InstallShield包中卸載註冊表項的最佳方法
- 13. COM註冊的DLL不會生成MSI安裝程序的註冊類型庫
- 14. 註冊dll/tlb
- 15. 註冊的DLL
- 16. Redemption DLL註冊
- 17. InstallShield X無法將單一值添加到註冊表項
- 18. 無法使用regsvr32註冊dll:模塊「* .dll」加載失敗
- 19. 無法註冊
- 20. Visual Basic腳本註冊一個DLL作爲MSI的一部分
- 21. C++ \ Cli COM程序集無法由MSI註冊
- 22. DLL註冊和取消註冊
- 23. 重新註冊DLL
- 24. Teamcity和註冊DLL
- 25. 託管DLL方法的InstallShield
- 26. 無法註冊flash10c.ocx
- 27. 無法在註冊
- 28. 無法註冊Heroku
- 29. 無法註冊org.restlet.ext.ssl.HttpsClientHelper
- 30. 無法註冊UICollectionViewCells
你爲什麼要構建一個Visual Studio MSI,然後說InstallShield失敗? –
'我用Visual Studio生成一個MSI,然後用InstallShield修改它。「這就是我所說的 – Kira