【发布时间】:2010-05-30 10:22:15
【问题描述】:
我只是想知道为什么我们需要安装程序来创建设置? 我们可以创建一个桌面应用程序来进行注册表更改、程序集注册、配置文件的创建等等。
为什么会有专门的安装程序?它们是否用于桌面应用程序无法完成的任何其他目的或任务?
【问题讨论】:
-
这个自定义安装程序可能需要安装程序:)
标签: c# .net winforms installation
我只是想知道为什么我们需要安装程序来创建设置? 我们可以创建一个桌面应用程序来进行注册表更改、程序集注册、配置文件的创建等等。
为什么会有专门的安装程序?它们是否用于桌面应用程序无法完成的任何其他目的或任务?
【问题讨论】:
标签: c# .net winforms installation
原则上,您可以推出自己的安装程序,尤其是当您的应用由用户手动下载时。但是,您将错过安装程序通常提供的一些好处:
自动删除 - 在安装期间添加的所有更改都可以在卸载期间自动撤消
提升的权限 - 一些安装系统可以以提升的权限运行,并且可以在安装时执行安装软件的用户通常无法执行的管理任务
重新安装 - 如果您的任何程序文件被删除或损坏,安装程序可以重新安装这些文件。
静默安装 - 在没有用户界面的情况下安装产品,有时无需用户启动安装(例如,作为机器启动或用户登录的一部分发生。)
推出、组配置:对于大型部署,可以将安装包一次部署给多个用户,并且可以管理升级。
打包 - 通常将所有文件打包在一个包中,通常是压缩的,然后在安装时解压缩。还可以对包进行数字签名以进行身份验证。
您可以在您的应用中提供部分或全部这些内容,但您需要重新设计大量已经免费提供的代码。例如,请参阅AdvancedInstaller,它为 Windows 生成 MSI 文件(提供免费版。)
另外,WiX toolset 用于从 XML 描述生成 MSI。
【讨论】:
Overview of the Windows Installer Technology
如果您为企业环境编写自己的代码,则必须考虑大量因素。
【讨论】:
其中一个原因是某些操作可能需要机器上的管理员权限,因此只需要向安装程序请求管理员权限比向应用程序本身请求管理员权限更容易、更安全。
另一个问题是,如果您想安装数据库或类似的东西,执行其他只需要一次的复杂设置,为什么要用它只在第一次使用的代码污染您的应用程序的代码库,更容易将其分开。
【讨论】:
您可以通过编写自己的可执行文件来完成安装应用程序所需的一切。但为什么?您可以在 Visual Studio 中创建的安装程序在编写您自己的自定义操作方面非常灵活,但它们也确保在 Windows 上安装应用程序时涵盖了所有内容。它还提供回滚和卸载机制。
如果你自己写,除非有特别的理由,否则你就是在用大锤敲碎坚果;你也可能会错过一些东西。我总是觉得使用 MSI 安装软件更自在。
【讨论】:
对我来说,它是关于关注点分离的。您的应用程序已经拥有大量的功能,为什么要通过塞入安装逻辑来使其更加复杂。创建一个单独的安装程序应用程序来处理这些事情,这样更简洁,也是 IMO 更好的做法。
【讨论】: