程序安装的好处和真正目的是什么? [英] What is the benefit and real purpose of program installation?

查看:242
本文介绍了程序安装的好处和真正目的是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

到目前为止我写的所有程序中,如果我想要在另一个工作站上工作,我只需复制并粘贴可执行文件和必要的文件,使其运行(例如:.o文件,二进制文件。 。)。



但是,所有用于商业用途的程序总是带有一个安装程序。例如PC游戏。所以我的问题是:当我们可以简单地将文件复制到目标工作站时,安装的主要优点/原因是什么?



- 原因之一可能是为了防止盗版。但除此之外,我相信还有其他更强的原因?

解决方案

部署的复杂性



只有最简单的应用程序可以使用简单的文件复制,即使这样,您需要一个方便的方法来实际下载并执行将将文件复制到正确的位置 - 这是一个设置。该设置也是一种营销工具,可用于产品中的品牌一致性,并允许安装试用版的产品 - 销售软件的一个非常重要的部分。



最后一个设置为新版本提供了升级和修补功能以及当用户想要删除您的软件时,系统的卸载和清理。也可以使用数字证书签署良好的设置,以确保文件在传输过程中不会受到阻碍,并且供应商是可证明的,因此严重。所有这些都对于严重的产品至关重要。



重要的是要记住,设置体验是用户第一次遇到与您的产品的质量如果安装失败,则无法对产品进行评估。这似乎是软件开发中最昂贵的错误。



部署中的错误是累积的<在某种意义上说,一旦出现部署错误,您通常无法访问有问题的机器进行调试,而修复程序可能会造成更多的损坏。您正在管理传递过程,而不仅仅是调试代码和二进制文件。每个交货都会增加风险复杂性,很快,如果您不小心,您可能无法维护您的手。此外,您的设置运行的所有机器几乎肯定与另一台计算机完全不同。



因此,部署(安装)是复杂的迁移过程任何计算机从一个稳定状态到另一个。这需要有纪律的方法。安装程序应安装所有必需的文件和设置,并确保产品配置为首次启动或准备在启动时进行配置,而不会发生故障。这可能是一项非常复杂的任务。 列表的设置可能需要做的是一直在增长,对于Windows的每个新版本,似乎都有新的障碍使部署变得更加困难。这些障碍包括终端服务器上的 UAC提示自我修复锁定已更改核心MSI缓存行为,新的文件夹重定向,虚拟化功能,使用加密和数字证书的新增和更改的签名功能 Active X killbits安全锁定 64位复杂性等...列表继续。



部署任务概述



在基本概述级别,部署必须考虑到:



设置基本原理




  • 检查系统是否适合安装

  • 提供适合从用户输入所需设置的GUI

  • 扫描先决条件并安装运行时,例如 Active X 游戏,水晶报表 VC ++ Runtimes .NET版本等...

  • 允许安装在



添加基本资料




  • 安装文件注册表设置

  • 安装 odbc 文件关联快捷键图标

  • 更新应用程序和系统范围路径设置

  • 更新和合并基于文本的文件,例如 INI文件 XML文件

  • 注册COM文件,并启用 .NET COM Interop ,如果需要

  • 将.NET程序集安装到 GAC ,并运行自定义 .NET安装程序类

  • 并排Windows程序集安装到 WinSxS
  • 交付签名和认证文件(也适用于安装文件本身)



添加高级内容




  • 配置 IIS Apache 或其他网络服务器

  • 针对数据库运行 SQL服务器脚本

  • 安装 ActiveX浏览器组件(通过浏览器验证证书)

  • 配置并控制 COM +组件

  • 添加自定义事件日志,设置性能监视器,添加防火墙规则和其他Windows扩展。

  • 安装和控制服务

  • 设置与移动设备的连接

  • 安装驱动程序各种

  • 挂接应用程序自动更新系统

  • 安装控制面板小程序

  • 等等...



在为不同的经销商( OEM )设置不同的语言品牌 / strong>),确保设置在不同语言版本的所有需要的操作系统中工作,更不用说不同的嵌入式设备,如手机,口袋pc,智能手机等。



这是一个帖子 与整体问题在应用程序营销和销售的较大背景下可以看到设置和部署。



这是一个回答描述用于创建安装程序的差异工具: 有什么内容升降产品使用? InstallShield,WIX,Wise,Advanced Installer等



我一般建议开发人员使用 Wix em>创建MSI文件的最佳新方法。请阅读这篇文章的背景资料:
Windows Installer和创建Wix


Of all the programs I wrote so far, If I want it to work on another work station, I just have to copy and paste the executable and necessary files needed to make it run (e.g: .o files, binary files..).

But all the program built for commercial use always comes with an installer. For example PC games. So my question is: What is the main benefits/reasons of doing installation when we could just simply copy the files over to the targetted work station?

-One of the reason is probably to prevent piracy. But other than that, I'm sure there are other stronger reasons?

解决方案

The Complexity of Deployment

Only the simplest applications can work with a simple file copy, and even then you need to have a convenient way to actually download and do the copying of the files to the right location - and this is what a setup is for. The setup is also a marketing tool that can be used for branding and consistency across products as well as allowing installation of a trial version of the product - a very important part of selling software.

Finally a setup provides upgrade and patching features for new versions as well as uninstall and cleanup of the system when the user wants to remove your software. A good setup may also be signed with digital certificates to ensure the file can not be hampered with in transit, and that the vendor is certifiable and hence serious. All of these things are crucial for a serious product.

It is important to remember that the setup experience is the users first encounter with the quality of your product. If the setup fails the product can't be evaluated at all. This would seem to be the most expensive error to make in software development.

Errors in deployment are cumulative in the sense that once you have a deployed error, you generally have no access to the machine in question for debugging - and the fix could easily do more damage. You are managing a delivery process, not just debugging code and binaries. Each delivery adds risk and complexity and pretty soon you can have an impossibility to maintain on your hands if you are not careful. Furthermore all machines your setup is run on will almost certainly be in a totally different state than another computer.

Deployment (setups) is therefore the complex process of migrating any computer from one stable state to another. This requires a disciplined approach. The setup should install all required files and settings and ensure the product is configured for first launch or ready to be configured upon launch without failure. This can be a very complex task. The list of things a setup may need to do is growing all the time, and for every new versions of Windows it seems new obstacles are put in place to make deployment harder. Such obstacles include the UAC prompts, self-repair lockdown on terminal servers, changed core MSI caching behavior, new folder redirects, virtualization features, new and changed signing features with encryption and digital certificates, Active X killbits security lockdown, 64 bit complexities, etc... The list goes on.

An Overview of Deployment Tasks

At a basic overview level, deployment must account for:

Setup fundamentals

  • Check if the system is suitable for installation
  • Provide a GUI suitable for input of required settings from the user
  • Scan for prerequisites and install runtimes, such as Active X for games, crystal reports, VC++ Runtimes, .NET versions, etc...
  • Allow installation in silent mode for corporate use

Adding basic stuff

  • install files and registry settings
  • install odbc, file associations, shortcuts and icons
  • update application and system-wide path settings
  • update and merge text based files such as INI files, XML files
  • register COM files and enable .NET COM Interop if need be
  • install .NET assemblies to the GAC, and run custom .NET installer classes
  • install side-by-side windows assemblies to WinSxS
  • deliver signed and certified files (also applies to the setup file itself)

Adding advanced stuff

  • Configuration of IIS, Apache, or other web servers
  • Run SQL server scripts against databases
  • Installing ActiveX browser components (certificate based through browser)
  • Configure and control COM+ components
  • Add custom event logs, set up performance monitors, add firewall rules, and other windows extensions.
  • Install and control services
  • Set up connections to mobile devices
  • Install drivers of various kinds
  • Hooking up the application for automatic update systems
  • Install Control Panel Applets
  • and much more...

There are many additional complications when delivering a setup such as delivering setups in different languages, branding setups for different resellers (OEM), ensuring the setup works on all required operating systems in different language versions, and not to mention different embedded devices such as phones, pocket pcs, smart phones etc...

Here is a post with the overall issue of setup and deployment seen in the larger context of application marketing and sales.

Here is an answering describing diffent tools used to create installers: What installation product to use? InstallShield, WIX, Wise, Advanced Installer, etc.

I generally recommend that developers use Wix - the best new way to create MSI files. Please read this post for background information: Windows Installer and the creation of Wix.

这篇关于程序安装的好处和真正目的是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆