我很困惑。现在我使用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