我已經用x-copy部署了我的.NET程序集多年,沒有任何問題。 從上週開始,我們有一個小團隊,其任務是構建包括 .NET程序集和exe和C++遺留exe和dll(更多200個文件)的設置。 第一次安裝後,我的wpf應用程序出現問題:啓動時間非常長。 我已經通過procmon 描述了我的一個wpf應用程序(ps:.NET程序集是GACed和NGened),我已經看到該進程對所有其他無關(> 200)文件和I認爲 這是導致應用程序啓動時間過慢的主要原因。 這與.NET發佈者策略有關嗎?我如何禁用這種行爲,使我的應用程序再次快速? 在此先感謝!由於發佈策略導致wpf啓動緩慢......也許
0
A
回答
1
那痕跡集似乎與基於「公佈」 COM類COM實例。在不瞭解MSI如何組織成功能,組件和COM註冊的情況下,很難完全確定。
但無論如何,如果COM類使用MSI文件中的類表註冊,那麼它們有一個名爲Darwin描述符的InprocServer32註冊表值(不是關鍵字)。它通過功能名稱,產品代碼和組件代碼引用了COM實例化的目標,這可能是您看到對註冊表中的Windows Installer功能和組件鍵的引用的原因。通常使用該描述符調用MsiProvideComponent,如果發生任何問題,將導致恢復檢查和修復。
你不說你使用什麼工具,但如果你有大量的COM註冊的這一切都通過註冊在MSI的Class表廣告,可能是這個問題。不知道你使用什麼工具來構建MSI並查看MSI文件,這很難確定。但WiX的,例如,您可以使用類表登記,但使用廣告=沒有,而且在登記結果使用註冊表項,這是相當明顯的其他方式來創建COM註冊,同時避免廣告/彈性的檢查正在進行。
另外,也許最重要的是,您需要確保您的產品安裝實際上並未在啓動時自行修復 - 這會讓它變慢很多!例如,如果安裝後刪除了任何文件或註冊表項,則可能會引入修復。查找MsiInstaller事件日誌條目,在應用程序事件日誌中引用缺少的組件。
相關問題
- 1. 許多協會導致查詢緩慢
- 2. 由於使用'it'而導致的(Num(也許a0))的實例
- 3. MVC3發佈策略
- 4. Websockets問題,也許是同源策略?
- 5. 存在新對象的緩存策略導致緩存失效
- 6. 由於數據綁定導致的緩慢頁面轉儲
- 7. Apache Camel緩慢啓動路由
- 8. iPhone imageView層masksToBound導致緩慢滾動
- 9. 需要關於發佈管理策略的建議或指導
- 10. PHP:導致緩慢的SESSIONS
- 11. Hazelcast緩慢啓動
- 12. 分支和發佈策略
- 13. 發佈分支策略
- 14. 緩存策略
- 15. 從服務啓動對話活動導致'MainActivity'也啓動
- 16. Visual Studio - 快速發現緩慢啓動
- 17. IAM策略未啓動
- 18. 由於休眠狀態,Tomcat慢啓動
- 19. 許多併發讀取+一個寫入導致ObjectHotFoundException由於ehcache
- 20. 從Java啓動C#WPF會導致FileNotFoundExceptions
- 21. Docker-compose重啓策略導致日誌被削減
- 22. 導入許多scss文件的策略
- 23. Akamai緩存策略
- 24. NSURLRequest緩存策略
- 25. iOS緩存策略
- 26. ServiceStack緩存策略
- 27. 緩存策略,AFNetworking
- 28. C程序啓動緩慢
- 29. IronPython啓動非常緩慢
- 30. JBoss 7.1啓動緩慢
@PhilDW您好,感謝您詳細的解答。今天我得到了新聞,我的設置團隊使用Install Shield創建msi文件。 Install Shield中有一些選項可以避免上述問題? – laertes
我不知道,對不起,你需要看看是否有使用像「非廣告的COM註冊」或「使用註冊表,而不是Class表」條款的選項。 – PhilDW