我很困惑。現在我使用C++和Java編寫一些小應用程序,但不需要安裝它們。爲什麼需要安裝瀏覽器,媒體播放器,遊戲等「大型應用程序」?爲什麼應用程序需要安裝?
回答
有以下幾個原因:
他們掛鉤到系統中。當您安裝瀏覽器時,如果您打開以「http://」開頭或以「.html」結尾的文件,它將啓動。
使用應用程序的用戶用於安裝它們。如果您的應用程序不附帶安裝程序,用戶會感到困惑,因此無法啓動並運行。他們不明白安裝過程中會發生什麼,他們只知道他們總是需要這樣做。因此,一些應用程序(不需要安裝程序)只有一個簡單的安裝程序才能避免混淆。
很多複雜的應用程序都可以用各種方式做事。您可以在安裝過程中更改預設。一個常見的例子是安裝應用程序的哪些部分。對於CAD系統,您可以在會議室安裝整個設備或僅安裝PC的查看器。
許多應用程序要求許可密鑰和/或在線身份驗證以避免盜版。
許多應用程序都帶有DLL。爲了確保他們的工作,他們覆蓋在窗口的系統目錄下的所有DLL(也可能打破所有其他應用程序,但誰在乎;-)
主要是因爲它們寫入系統範圍的數據或目錄。例如,Windows應用程序寫入註冊表並可能C:\ windows \ system32。 UNIX應用程序傾向於寫入主目錄中的隱藏配置文件(例如,將自身添加爲打開特定文件類型的選項),/ usr/share和/ etc。這是除了實際的二進制文件和庫(可能會進入/ usr/bin和/ usr/lib)。
您的應用程序可能是自包含在一個目錄中,這就是爲什麼它不需要安裝。
這裏提到的一切都可以在沒有安裝的情況下完成 – user1363516 2016-09-27 19:16:00
好一個主要的原因是共享庫(例如DLL文件在Windows中) - 而不是它自己的一個DLL的副本,每一個應用程序,這個想法是把它在系統目錄中,所有的應用程序可以訪問它。避免重複的副本可節省磁盤空間。
要確保一切都在正確的地方結束了,因此,你需要一個安裝程序 - 它不再是簡單的只是複製/粘貼包含您的應用程序的目錄。
通常,因爲他們想要與計算機存儲狀態和信息。例如,您的應用程序不會出現在「添加/刪除程序」窗口中。許多程序(我個人不喜歡)喜歡在註冊表中存儲重要信息以進行查找,這意味着您通常需要卸載程序(而不是刪除程序)來執行清理,或者可能會將擴展程序引入到資源管理器或其他項目中。簡單地刪除該程序將不會清除這些添加內容,因此您需要卸載程序。
因爲他們做的事情一樣:
- 寫入註冊表值不同 依賴
- 複製數據
- 創建目錄
等
安裝只是意味着複製文件和設置註冊表設置。應用程序越大,遵循標準程序越容易。
當一個應用程序「安裝」:
- 創建了用戶的便利卸載
- 設置默認設置在註冊表(在Windows上)
- 建立在用戶的默認設置profile
- 將可執行文件複製到標準位置
幕後沒有任何魔法,只是讚美複製。例如,
可能有很多原因。
- 確保依賴安裝(等。NET框架)
- 添加快捷方式到桌面/開始菜單
- 服務需要使用
- 很多用戶註冊的喜歡這個,而不是管理,其中的程序文件住自己
- 將註冊表項添加
- 添加掛鉤Windows資源管理器
- 1. 我需要安裝什麼來開發Windows Phone應用程序?
- 2. 爲什麼大多數Mac應用程序不需要安裝(只需複製到/應用程序)?
- 3. 爲什麼我的應用程序需要很長時間才能安裝?
- 4. 部署ASP.NET網站:爲什麼* .msi需要安裝程序?
- 5. 爲什麼Tomcat需要安裝JDK?
- 6. 爲什麼pymongo需要sudo來安裝?
- 7. 爲什麼coffeescript需要全局安裝?
- 8. 爲什麼SSDT BI安裝需要安裝SQL Server?
- 9. 爲什麼我需要安裝Java來安裝JavaEE6 SDK?
- 10. Android系統安裝程序應用程序「應用程序未安裝」爲什麼?在哪裏登錄?
- 11. 如何爲.NET Windows應用程序編寫安裝程序(需要安裝Access驅動程序)
- 12. 爲什麼程序安裝過程?
- 13. 什麼是Microsoft SQL服務器,爲什麼需要安裝它?
- 14. 爲什麼Java應用程序需要應用程序服務器來託管?
- 15. 我們需要安裝什麼?
- 16. 爲什麼需要在WPF應用程序中調用PropertyChanged
- 17. 爲什麼在使用JSF Web應用程序時需要beans.xml?
- 18. 部署c#應用程序 - 用戶需要安裝.net框架?
- 19. WiX插件安裝程序需要引用主安裝
- 20. 爲什麼我安裝的應用程序無法運行?
- 21. 爲什麼android應用程序無法安裝在HTC Tattoo上?
- 22. 如何爲.NET winforms應用程序創建安裝程序,以便它不需要安裝?
- 23. 我是否需要爲每個要跟蹤安裝的應用程序創建新的應用程序ID?
- 24. 爲什麼sensorManager.registerListener需要處理程序?
- 25. 爲什麼Windows應用程序需要.Net 3.5框架
- 26. 爲什麼Facebook/Twitter應用程序需要2個密鑰?
- 27. 爲Windows Embedded 7 Compact開發應用程序需要什麼?
- 28. 爲什麼Worklight應用程序需要Worklight Server?
- 29. 爲什麼我需要主機應用程序中的寶石
- 30. Windows應用程序聚焦:爲什麼需要點擊?
您如何運行Java應用程序? – 2011-04-07 15:11:27
好問題,以及偶爾偶爾想起我自己的事情。我總是認爲這是因爲「大型應用程序」使用的註冊表值(可能)需要配置爲安裝過程的一部分。 – 2011-04-07 15:13:07
如果您的應用程序依賴於除系統庫之外的任何庫,則需要首先在C++中發佈這些庫,您可以將該dll文件放在應用程序的文件夾中以使其適用於需要註冊的activex。爲了使不需要在mfc應用程序中安裝的應用程序選擇靜態庫而不是共享庫。依賴walker可能會幫助你很多「http://www.dependencywalker.com/」它會告訴你你的應用程序依賴於什麼?系統像「shell32.dll,gdiplus.dll,...」的所有系統都不需要發佈。 – ahmedsafan86 2011-04-07 15:14:55