【问题标题】:How to make a custom installer for games, etc?如何为游戏等制作自定义安装程序?
【发布时间】:2010-04-22 08:38:28
【问题描述】:

谁能告诉我如何创建自定义安装程序来“安装”游戏。我说自定义意味着我不希望用户拥有安装游戏的选项。我希望它是一个直接的过程,也许只有一个加载栏。

我正在开发的程序是玩游戏的“中心”,其中包括社区和其他功能,例如记录游戏玩了多长时间的计时器。我只是认为使用简单的安装程序将每个游戏安装在一个地方会使程序更易于使用。它还允许我执行其他功能,因为游戏都将安装在一个地方。用户无需指定游戏的安装位置。
这可能吗?

【问题讨论】:

  • 问题:您实际上是自己为各个游戏创建安装程序,还是应该与现有游戏安装一起使用您的安装程序?
  • 抱歉,这些游戏已经有自己的安装程序了。我想用 C# 创建一个自定义的(最好),这样我就可以选择游戏的安装位置。
  • 如果像我在下面的回答中提到的那样,通过编写自己的安装程序来重复工作真的没有意义,像 NSIS 这样的东西可以脚本化到最后一个功能(并且将/可以完全按照您的描述进行操作) .
  • 在没有用户选择选项的情况下强制安装到特定目录被认为是不好的做法。使用 UAC 和所有功能,非管理员可能无法使用您选择的位置。
  • 总体目标是什么? Steam 之类的?

标签: c# installation


【解决方案1】:

我假设你的游戏是用 C# 开发的,而不是要求安装程序用 C# 编写?

如果是这种情况,您可以使用许多安装程序包选项。 Nullsoft Install System 可能是最可定制的选项,同时仍然是免费的。安装程序是围绕一些基本的脚本活动构建的,可以根据您的需要简单或复杂 - 安装和 wiki 有大量示例脚本可供您探索和试验。


OT:安装位置
就个人而言,我认为不允许用户选择他们自己的安装位置是不好的做法,事实上,当系统文件安装(例如驱动程序)阻止我选择目录时,这让我非常沮丧。许多用户会选择在非默认设备上查找某些类型的安装和数据(例如,我几乎所有的游戏都安装在与我的主 Windows 安装不同的驱动器上)。如果您非常需要记住安装位置,请为其创建一个注册表项。

【讨论】:

  • 我已经使用商业 Wise 产品大约一年了,非常沮丧,发现 NSIS 要好得多。 NSIS 一开始有点难学,但是一旦你学会了它就很棒!我已经将它用于各种非常小的和非常大的安装程序。强烈推荐。
  • +1 表示 NIS。希望我能再次为“OT”+1 - 完全同意。这是我的电脑,让我把它安装在我想要的地方。
  • 感谢您的回答,但我的意思是已经存在的游戏。我想创建一个自定义安装程序,用 C# 将它们安装在我选择的位置。
  • +1 用户应始终被允许选择安装到何处(除非是上述驱动程序或系统模块)。
  • Windows 用户之所以喜欢能够指定应用程序的安装位置,是因为愚蠢的开发人员指定了可笑的位置来安装他们的垃圾(C:\ToolIUsedLikeOnce\、C:\Program Files\Obscure Publisher \Obscure Developer\JustInCaseIBuyAll99OfyourLameApps) 和我们的 HD 是一团糟。那是因为 windows 一直允许它nix 方式:你所有的程序都去 *here,所有的临时文件都去 there 他们所有的数据都去 over there end。整洁多了。快点。更安全。 C:\Program Files\AppName 是朝着正确方向迈出的不错的一步。使用它真的有那么难吗?
【解决方案2】:

您可以使用的另一个系统称为 Inno Setup - http://www.jrsoftware.org/isinfo.php

【讨论】:

    【解决方案3】:

    如果游戏已经存在,您最好的选择是在管理模式下调用 MSI 安装程序(请参阅 MSIExec 文档)。那么你实际上可以

    • 为游戏设置预定位置
    • 删除所有 UI 并将其替换为您的自定义安装程序 UI

    显然,只有在安装确实是 MSI 模块时才有效(对于将 MSI 打包到 EXE 设置中的安装程序还有一些工作要做)。大多数游戏都是这样,但可能不是所有游戏。

    请注意,这将是一项艰巨的任务,老实说,我看不出执行您的计划有什么价值。但这取决于你。

    首先,您必须阅读 MSI 文档。一开始我会推荐WIX (Windows Installer XML)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 2013-07-03
      • 1970-01-01
      • 2019-02-22
      • 2021-12-02
      • 1970-01-01
      相关资源
      最近更新 更多