我对RPM,Windows安装程序机制和WIX的影响很小。也就是说,我有兴趣制作一个支持我自己产品的升级和降级(版本和补丁)的跨平台安装工具(Linux,Windows)。我不相信这是一个轻易接近的话题;我想学习艺术科学(或科学的艺术)。如果我成功并构建了一个最低成功的安装程序工具,它将具有以下功能:
我确信实现这一目标的“关键”是将版本视为“A点到B点”问题,这意味着A和B由两个XML“版本”文档描述,这些文档包含有关信息的信息。所有部件和操作(文件或平台细节,如注册表项)。我的安装程序工具将“加入”或比较这两个文档并确定一组最小的更改,以将A转换为B.在某种程度上,我相信这正是Windows Installer所做的。
当然还有更复杂的问题,但这就是这篇文章的重点。关于这个主题的信息的“圣经”在哪里?请记住,我想制作自己的安装程序 - 而不是使用特定于平台的安装程序。对于那些关心的人,我的产品通常用C ++或C#编写。
或许我应该研究像Steam这样的跨平台的东西,并将“自动游戏更新”作为其功能的一部分。就我而言,已经处理了在线部署的问题。这只是我正在研究的最后安装步骤。 Steam是否使用本机安装程序(例如MSI)?如果是,那就不是我想要的了。
简而言之,我应该采取什么样的方式来掌控这个主题的科学?
答案 0 :(得分:1)
我不是专家,其他人可以给你更好的答案但是......
不要以声明方式列出安装产品所需的步骤 - 您最终会做出最终证明是错误的假设。相反,您应该考虑定义安装的最终状态,并让安装人员担心如何实现这一点。
另一个考虑因素是降级可能会导致巨大的复杂性,具体取决于您的产品 - 它是否必须降级数据库模式/文件格式/ ???简而言之,您的应用的每个版本都需要完全向前兼容和向后兼容(或至少优雅地失败)。还要考虑应用程序的V1将设置存储在文件中的情况。 V2出现并添加更多设置。您降级到V1 - 更改设置时应该怎么做?保留V2设置?抛弃他们?某些V2设置是否会改变V1设置的影响/含义?这些决定是由您的应用或安装人员做出的吗?
无论如何,除此之外,我至少说你需要:
/usr/???
- 应该在Windows上映射到C:\Users\???
或C:\Program Files
?另外不要忘记它可能是64位机器,因此可能是C:\Program Files (x86)
。安装程序应该(简单地):
这些都没有解决安装程序本身需要升级时该怎么做的问题。
我在Windows上使用的一种技术是安装程序可执行文件本身只不过是一个包装器,它包含一些在运行时动态加载实际安装程序的接口 - 因此我可以移动文件关于/卸载/重新加载程序集等。从一个几乎永远不变的固定过程中。
正如我上面所说,我绝对不是专家,只是一个自己完成了一些工作的新手。我相信你可以从别人那里得到更完整的答案,但我希望这有点帮助