要在新计算机上安装应用程序,当前使用似乎有两种主要方法:
单独的安装程序:创建一个单独的安装程序包,创建应用程序所需的所有目录,文件,注册表项(即MSI,InstallSheild等),然后最终将应用程序复制到目标计算机.
自安装程序:在作为应用程序一部分的组件中包含所有必需的安装步骤.然后在每次运行主应用程序可执行文件时使用此组件检查并创建所需的设置.即只需运行应用程序即可安装.
我已经使用了一些破坏其设置的应用程序,并且大多数都有单独的安装程序.因此,唯一的解决方法是重新安装,有时设置甚至数据丢失(非常令人沮丧).
此外,在我参与的软件项目中,单独的安装程序方法通常要求在安装程序包和实际应用程序中传播应用程序特定的知识.然后,当进行代码/功能更改时,需要更新安装程序和应用程序.它总是感觉有点太脆,容易出现人为错误.
所以我目前倾向于自安装方法,因为更简单,更强大的安装/设置,即只需运行应用程序.我认为这种自安装方法也可以提供更强大的应用程序.
与应用程序设置(选项)集成也会更加干净,在许多情况下,同一组件可以执行安装和设置管理.
然而,在否定的情况下,每次应用程序启动时执行这些额外的检查/步骤可能会对启动时间产生负面影响,并且操作系统集成可能会比使用标准安装程序更多一些工作.
那么人们推荐哪种方法?为什么?
(我目前最感兴趣的是安装桌面富客户端应用程序.)
这两种方法都有利有弊:
安装程序是安装必要的系统组件的正确方法,如驱动程序,库,COM组件等.由于许多这些活动需要提升的权限,因此安装可以由管理员执行,而应用程序可以由所有用户使用.
在企业环境中实际上可能需要可编写脚本的安装过程.
没有安装程序可以打开便携式应用程序.如果程序包含目录中的所有内容,则可以将其简单地复制到USB记忆棒并在任何系统上运行.这当然对您的特定类型的应用程序没有意义,但这是由您决定的.
我不确定有关损坏设置的问题在这里非常重要.如果设置已损坏(为什么?) - 应用程序如何知道如何处理它?OTOH安装程序当然也可以写入,不要盲目覆盖任何旧设置.这一切都取决于......
编辑:您在评论中写道:
即使是便携式应用程序也需要某些配置/设置,让主应用程序检查每次启动时设置是否有效/是否更好,并且只在需要时提示用户.
而且,这真的取决于你的需求.有不同类型的配置设置或首选项,您必须单独决定:
如果当前用户首次运行应用程序,则将缺少每用户配置设置.显示缺少的消息以及如何创建消息会很有帮助.例如,在FlameRobin(Firebird的数据库管理程序)中,当程序启动时没有找到注册的服务器和数据库时,我们会显示一条消息,以及如何注册它们.
UI行为的每个用户设置也将丢失,但它们有默认值.用户将获得应用程序的默认行为,稍后可以在选项对话框中更改内容.由于最好最小化这些设置的数量,并且由于默认值应该是大多数用户期望的或者在一般情况下最有效的,因此在程序启动时也不需要打扰用户.
某些配置可能不是每个用户,而是每个程序.这通常存储在标准用户没有写访问权限的位置,因此检查这个并提示用户输入它并不是真的有用.可以做的是启动一个外部程序,向该标准用户询问该帐户是否具有足够的权限和密码.