VS部署问题

我为我的XNA演示创建了一个安装程序,希望人们可以下载并使用它。 它可以在我的电脑上完美运行,但是在其他电脑上,它安装得很好,但演示程序无法运行,必须closures。 包含的依赖关系是:

DotNetFX35 WindowsInstaller3_1和XnaFxRedist31

演示还使用了包含path查找表的许多文本文件。 难道是这些不包括在内? 虽然在我的机器上运行,但这似乎不大可能。 它一定是我想的一个缺失的依赖关系,但我不知道是什么…

安装一台干净的机器testing部署,如果不是,那么你真的在黑暗中拍摄。 如果您没有其他机器,请安装虚拟机。 并不是所有的虚拟机解决scheme都具有支持XNA所需的graphics设备的驱动程序,但有些可以。 使用虚拟机,您可以安装Windows的试用版,并在每次执行新testing时使用快照恢复到干净的状态。

提供有用的错误报告,捕获崩溃并将其显示给最终用户,并向用户发送和/或复制信息。 如果它执行自动更新,则可能希望他们select自动出错和崩溃报告,以便获得一个常见问题的数据库,其中包含可能需要修复的堆栈跟踪信息。 唯一的情况下,这将无法工作,据我所知,如果.NET没有安装在目标机器上。

内容管道中存在许多可能的问题,而不是处理其他文化中的小数点差异,而这些差异是在缺less重要文件或directx和c ++依赖性的情况下编译的。 直到你明白为什么它会崩溃,以及演示认为缺less什么(如果有的话),回答你的问题是很难或不可能的。

XNA游戏有以下依赖关系:

  • .NET Framework 3.5可再发行组件
  • XNA Framework可再发行组件(版本取决于您使用的XNA版本)

为了允许用户在游戏中安装游戏而无需下载这些依赖关系,您需要捆绑或允许在安装程序中下载并安装这些依赖关系。 我知道这样做有两种方式,每种方式都有自己的优点和缺点:

  • ClickOnce是XNA Game Studio中包含的默认方法。 它包装了一个非常简单和相当不错的安装程序,将负责安装依赖关系,并将您的应用程序置于当前用户的应用程序数据文件夹下(path不可定制)。 这也意味着你的游戏只会为这个用户安装。

    ClickOnce 仅捆绑XNA Content项目中的文件,因此不会安装外部文本文件。 您可以使用“复制”构建操作(无管线处理)将它们添加到您的内容项目中。

    您可以在“发布”设置中指定一个URL,以在每次启动游戏时检查更新。 然后,您可以通过此URL上传游戏的更新版本。 一个非常大的局限是URL必须公开。 如果你的游戏不是免费的,那么在没有任何人下载游戏的情况下,没有办法提供自动更新。 更糟糕的是,在手动安装新版本之前,用户将不得不卸载游戏,因此无法手动升级。 而卸载游戏将擦除通过IsolatedStorage存储的所有内容(基本上,保存的游戏丢失)。

    这使得ClickOnce几乎无法用于除免费游戏之外的任何事情。

  • WiX XNA是用于构建WiX安装程序的预configuration项目。 你需要安装SharpDevelop(该网站说3.2,但截至2011年10月最新的4.1版本工作得很好)

    它捆绑您需要的可再分发包,并检查它们,并在需要时安装它们。

    唯一的缺点是,为了设置你的游戏安装程序,你必须:

    • 生成一组GUID并将其放入文件中
    • 为每个要包含的目录和文件创建一个XML标签汤。 (好处在于: 您可以确定要包含哪些内容,例如Content项目中未包含的文件
    • 该项目模板没有设置为支持升级,但你可以自己做。 我不得不在StackOverflow上查找它 。

真的很遗憾,没有毫不费力地为XNA创建一个有用的安装程序,用它来构建游戏是如此轻而易举。 对于我自己的项目,我使用我自定义的WiX XNA模板来升级,花了我相当长的一段时间才弄清楚。

编辑:我原来的答案没有解决你的问题关于你的外部数据文件的一部分,我更新它。