我不知道为什么游戏需要安装。我可以理解,某些软件(例如浏览器)需要它,因此它可以将某些文件类型与之关联并启动可执行文件,或者将图标添加到Windows上的“程序/功能”组件。但是,例如安装Steam游戏的目的是什么?Steam本身可以处理游戏的安装/删除,更新,启动等操作。如果我开发自己的游戏启动器(将使用安装程序),为什么还要在游戏中使用安装程序?
我不知道为什么游戏需要安装。我可以理解,某些软件(例如浏览器)需要它,因此它可以将某些文件类型与之关联并启动可执行文件,或者将图标添加到Windows上的“程序/功能”组件。但是,例如安装Steam游戏的目的是什么?Steam本身可以处理游戏的安装/删除,更新,启动等操作。如果我开发自己的游戏启动器(将使用安装程序),为什么还要在游戏中使用安装程序?
Answers:
您要使用安装程序的原因有很多。其中一些,在我的头顶上:
如今,大多数游戏(乃至大多数应用程序)都需要使用某些支持的DLL(例如动态链接的C ++运行时或Direct3D运行时)。有时,这些DLL 无法合法地直接分发,必须通过可重新分发的安装程序进行安装。例如,D3DX DLL就是这种情况。阅读并理解依赖项的许可条款很重要。如果您有这种依赖性,则将其安装打包在自己的安装程序中可以为最终用户简化该过程。
行为良好的现代程序将不需要提升的(管理员)访问权限即可运行。但是,可能需要安装这种访问权限,并且安装程序提供了一个相当简单的过程来使用户或多或少地熟悉。
类似地,如您所述,某些游戏将希望生成注册表项来关联文件类型等。这也可能需要抬高。
如果游戏依赖于某些依赖项的系统范围内已安装的版本(如上所述),则可以从安全更新和针对这些依赖项的修补程序中更轻松地受益(操作系统由他们负责,而不是由游戏开发人员来负责)。但是在系统位置安装这些依赖项也需要提升,并且如果您要求用户(尤其是非技术用户)手动进行操作,则很容易出错。
最后,不要忘记,作为一个精通技术的用户,低估了非精通计算的观点是多么容易。有时,“双击打开”是您可以假定的唯一技能(有时甚至不那么多);双击安装程序将启动一个程序,用户通常可以通过它“正常,正常,正常”进行操作。双击.zip只会将其解压缩(“我的游戏去了哪里?”),或更糟糕的是,将其像一个文件夹一样打开,用户将在.exe上双击,它将无法正确运行。用户也不总是理解安装程序,但是它比“解压缩存档并将文件放在正确的位置”更接近他们倾向于获得的范例。
至于Steam ... Steam提供了一些有助于安装和卸载游戏的工具,但它并不能为您做任何事情。值得注意的是,并非所有游戏都在Steam上发行或仅在Steam上发行,因此完全依赖Steam的安装服务将意味着这些游戏最终会为非Steam发行渠道复制工作。
实际上,当Steam安装游戏时,仍然会有安装程序。周围有很多安装程序包,要构建安装程序,您可以使用其中一个程序包,然后编写安装脚本,告诉安装程序软件:
Steam不会决定要做什么,它是由安装脚本决定的,无论使用哪种安装程序包,无论是WiX,NSIS还是Steam,您都需要编写该脚本。
Unix也有类似的步骤。您可以将大部分逻辑移至应用程序的第一个启动位置,但是该逻辑仍然存在,您只是将安装程序拆分为多个部分,然后将一个部分放入游戏中而不是安装程序中。这样做有利弊,我很乐意在另一个问题中讨论。