2011-04-07 150 views
18

我很困惑。现在我使用C++和Java编写一些小应用程序,但不需要安装它们。为什么需要安装浏览器,媒体播放器,游戏等“大型应用程序”?为什么应用程序需要安装?

+0

您如何运行Java应用程序? – 2011-04-07 15:11:27

+0

好问题,以及偶尔偶尔想起我自己的事情。我总是认为这是因为“大型应用程序”使用的注册表值(可能)需要配置为安装过程的一部分。 – 2011-04-07 15:13:07

+0

如果您的应用程序依赖于除系统库之外的任何库,则需要首先在C++中发布这些库,您可以将该dll文件放在应用程序的文件夹中以使其适用于需要注册的activex。为了使不需要在mfc应用程序中安装的应用程序选择静态库而不是共享库。依赖walker可能会帮助你很多“http://www.dependencywalker.com/”它会告诉你你的应用程序依赖于什么?系统像“shell32.dll,gdiplus.dll,...”的所有系统都不需要发布。 – ahmedsafan86 2011-04-07 15:14:55

回答

12

有以下几个原因:

  1. 他们挂钩到系统中。当您安装浏览器时,如果您打开以“http://”开头或以“.html”结尾的文件,它将启动。

  2. 使用应用程序的用户用于安装它们。如果您的应用程序不附带安装程序,用户会感到困惑,因此无法启动并运行。他们不明白安装过程中会发生什么,他们只知道他们总是需要这样做。因此,一些应用程序(不需要安装程序)只有一个简单的安装程序才能避免混淆。

  3. 很多复杂的应用程序都可以用各种方式做事。您可以在安装过程中更改预设。一个常见的例子是安装应用程序的哪些部分。对于CAD系统,您可以在会议室安装整个设备或仅安装PC的查看器。

  4. 许多应用程序要求许可密钥和/或在线身份验证以避免盗版。

  5. 许多应用程序都带有DLL。为了确保他们的工作,他们覆盖在窗口的系统目录下的所有DLL(也可能打破所有其他应用程序,但谁在乎;-)

2

主要是因为它们写入系统范围的数据或目录。例如,Windows应用程序写入注册表并可能C:\ windows \ system32。 UNIX应用程序倾向于写入主目录中的隐藏配置文件(例如,将自身添加为打开特定文件类型的选项),/ usr/share和/ etc。这是除了实际的二进制文件和库(可能会进入/ usr/bin和/ usr/lib)。

您的应用程序可能是自包含在一个目录中,这就是为什么它不需要安装。

+0

这里提到的一切都可以在没有安装的情况下完成 – user1363516 2016-09-27 19:16:00

2

好一个主要的原因是共享库(例如DLL文件在Windows中) - 而不是它自己的一个DLL的副本,每一个应用程序,这个想法是把它在系统目录中,所有的应用程序可以访问它。避免重复的副本可节省磁盘空间。

要确保一切都在正确的地方结束了,因此,你需要一个安装程序 - 它不再是简单的只是复制/粘贴包含您的应用程序的目录。

5

通常,因为他们想要与计算机存储状态和信息。例如,您的应用程序不会出现在“添加/删除程序”窗口中。许多程序(我个人不喜欢)喜欢在注册表中存储重要信息以进行查找,这意味着您通常需要卸载程序(而不是删除程序)来执行清理,或者可能会将扩展程序引入到资源管理器或其他项目中。简单地删除该程序将不会清除这些添加内容,因此您需要卸载程序。

0

因为他们做的事情一样:

  • 写入注册表值不同 依赖
  • 复制数据
  • 创建目录

1

安装只是意味着复制文件和设置注册表设置。应用程序越大,遵循标准程序越容易。

当一个应用程序“安装”:

  • 创建了用户的便利卸载
  • 设置默认设置在注册表(在Windows上)
  • 建立在用户的默认设置profile
  • 将可执行文件复制到标准位置

幕后没有任何魔法,只是赞美复制。例如,

2

可能有很多原因。

  • 确保依赖安装(等。NET框架)
  • 添加快捷方式到桌面/开始菜单
  • 服务需要使用
  • 很多用户注册的喜欢这个,而不是管理,其中的程序文​​件住自己
  • 将注册表项添加
  • 添加挂钩Windows资源管理器
相关问题