构建可在 Windows 和 OS X 上运行的 .NET 应用程序安装程序?

2024-01-24

我很惊讶我找不到这个问题已经被问过,所以如果我只是错过了它,请立即通知。

我需要在 .NET 中编写一个非常小、相当简单的应用程序,最终消费者将下载该应用程序并将其安装在他们的系统上。 Silverlight 的沙盒模型将无法工作 - 它必须是完整下载、安装的可执行文件。

这是我所知道的:

  • 我开发了在受控桌面环境中运行的应用程序 - 例如,在一百台内部计算机上运行的 IT 应用程序。
  • 我使用 Mono 开发了应用程序

我不知道的是:

  • 如何创建一个灵活、强大的安装程序,该安装程序将在无数不受控制的桌面配置和环境中工作。
  • 如何对针对 Mac OSX 的 Mono 执行相同操作。
  • 安装广泛分布的最终用户应用程序时有哪些常见问题以及如何缓解这些问题?

我正在寻找填补我的知识空白的最佳资源.

Related

相当于 OSX 上带有 Mono 的 Windows 服务 https://stackoverflow.com/questions/1223520/equivalent-of-a-windows-service-on-osx-with-mono


对于 Windows,请考虑Windows 安装程序 XML (WiX) http://wix.sourceforge.net/。对于 OSX,您需要生成 .app 捆绑包。这是一个例子 http://www.monobjc.net/index.php?page=cocoa-application使用包含的 nant 任务Monobjc http://www.monobjc.net/项目。

以下是您将面临的一些主要问题:

在 Windows 上:

  • 您的安装程序必须检测 以前/旧版本和 关闭/卸载/迁移为 合适的。 NSIS 和 WiX 都有 机制。
  • 您的安装程序/应用程序必须是 兼容不同版本 Windows(XP、Vista、7)和其他 .NET 版本(2.0、3.0、3.5 最终)。实际测试这是 您最乏味的任务之一 脸。我强烈建议您拥有一个 少量干净的虚拟机 为此的图像。

On OSX:

  • 您很可能希望发布一个独立的应用程序包,这意味着 mono 将捆绑在您的 .app 中。这将为您的可分发文件添加约 50mb。
  • 您将必须引用不同版本的 Monobjc 来支持 OSX 10.4 和 10.5,您将需要配置您的构建来执行此操作,并测试这两个版本。
  • 通过运行以下命令确保您的 C# 代码未使用 Windows/.NET 特定调用单声道迁移分析仪 (MoMA) http://www.mono-project.com/MoMA在你的代码库上。

升级:

您还没有提到您计划如何提供升级。 NSIS 和 WiX 具有处理升级的能力。确保在部署初始版本之前制定好构建版本控制方案。在 OSX 上,Monobjc 可以与Sparkle http://sparkle.andymatuschak.org/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建可在 Windows 和 OS X 上运行的 .NET 应用程序安装程序? 的相关文章

随机推荐

  • 为什么Windows中的BOOL是int类型?

    为什么不定义BOOL as an enum像 enum BOOL FALSE TRUE 有什么理由吗BOOL必须指定明确地 as int 或任何其他整数类型 来自 Raymond Chen 关于此主题的博客文章 BOOL 与 VARIANT
  • 指令中的媒体播放器对象

    我正在尝试使用指令来访问 flowplayer 媒体播放器 这样父控制器就可以广播事件 然后播放器只需使用侦听器响应这些事件 事件正在工作 但播放器未定义 因此没有真正工作 我的问题是 1 播放器未初始化 我一定没有正确设置它 2 我希望播
  • 根据复选框的状态切换文本框的可见性 -jQuery

    我早些时候在这方面得到了一些帮助 但不知何故我无法再让它工作了 如果选中 其他 复选框 我需要出现一个文本框 如果未选中该文本框 则该文本框消失 有谁知道什么给
  • Rails:按名字和姓氏进行高效搜索

    我正在尝试创建一个按名称匹配用户的 搜索框 困难在于用户同时具有名字和姓氏 其中每个都可以有空格 例如 Jon Bon Jovi 或 Neil Patrick Harris 我想知道确保搜索是在两个名字的串联上进行的最有效方法和姓氏字段 用
  • 未捕获的类型错误:无法读取未定义的属性“服务器”

    我正在尝试在开发 Chrome 扩展时利用 SignalR 我可以跑sample http www asp net signalr overview signalr 20 getting started with signalr 20 tu
  • 重写 Flask add_url_rule 以路由特定 URL

    我在 Flask 中使用基于类的视图来创建 CRUD REST API 并使用以下命令注册路由add url rule像这样 class GenericAPI MethodView def get self item group item
  • 如何均匀平衡多行文本?

    我想显示一小段可能换行为两行或三行的文本 它位于一个高度视觉化的元素内 出于样式目的 我希望线条的长度尽可能相等 更喜欢一根线而不是两根线 而不是这个 这是将一段文本换行为两个的示例 lines 我要这个 这是一个例子 将换行为两行的文本
  • 在 PySide6 中使用 GraphicalEffects

    我正在使用 PySide6 并尝试使用 GraphicalEffects 模块 根据此处的文档 https doc qt io qt 6 qtgraphicaleffects5 index html https doc qt io qt 6
  • 动画排序堆积条形图 d3.js

    我想要制作一种堆积条形图的动画这个图表 http bl ocks org mbostock 3886208参数如下这个图表 http bl ocks org mbostock 3885705 我成功地对 x 轴进行了排序 但我没有成功地移动
  • 错误:phonegap 中缺少 config.xml

    我的电话间隙有问题 我正在phonegap 中开发一个项目 几天前它就已经运行了 现在 当我尝试运行同一个应用程序时 我得到了 ERROR config xml is missing Add res xml plugins xml to y
  • NumPy 中的索引:访问所有其他组的值

    The n numpy 中的索引选项提供了一种非常有用的方法来索引列表中的每个第 n 项 但是 是否可以使用此功能来提取多个值 例如所有其他pair的价值观 例如 a np array 0 1 2 3 4 5 6 7 8 9 10 11 我
  • Mongoose 查询大于或小于某个日期的嵌套文档

    如何查询大于或小于特定日期的评论 这是我的带有帖子模型和评论模型的架构 var mongoose require mongoose var should require should mongoose connect localhost t
  • 从 bash 脚本中的 URL 中提取文件名和路径

    在我的 bash 脚本中 我只需要从给定的 URL 中提取路径 例如 从包含字符串的变量 我只想提取到其他变量 one more dir file exe 部分 当然 登录名 密码 文件名和参数是可选的 由于我是 sed 和 awk 的新手
  • Scalaz:“scalaz.syntax.applicative._”如何发挥其魔力

    这个问题与this one https stackoverflow com questions 38524384 reader monad in scala return local and sequence 我试图了解如何在 Scala
  • 自动更新带有 TFS 修订版的文件?

    我对 TFS 很陌生 实际上我只是使用它 因为我在 CodePlex 上有一些项目并且不想通过 svnbridge 并且我正在寻找与 SVN 中的 Revision 参数等效的东西 本质上在结帐时 我想更新一个文件以包含最新的修订号 以显示
  • Python Pandas:如何将成对映射列表转换为行向量格式?

    我有一个 2 列 DataFrame column 1 对应于客户 column 2 对应于该客户访问过的城市 数据框如下所示 print df customer visited city 0 John London 1 Mary Melb
  • 为什么我们需要为 Option 变量调用 take()

    在这段代码中 pub struct Post state Option
  • 所有表的层次结构列表

    在 SQL Server 数据库中 我必须找到所有 主 父 表并构建一个 父 子表的层次结构列表 最后我想遍历那个层次结构 从下往上列出并删除最后我可以删除的所有子表数据 父数据也 我尝试过一种方式 即使用系统表 如 sys objects
  • Protractor 中的自定义浏览器操作

    问题 在我们的一项测试中 我们有一个 长按 单击并按住 功能 https stackoverflow com questions 27300433 protractorangularjsjasmine test press and hold
  • 构建可在 Windows 和 OS X 上运行的 .NET 应用程序安装程序?

    我很惊讶我找不到这个问题已经被问过 所以如果我只是错过了它 请立即通知 我需要在 NET 中编写一个非常小 相当简单的应用程序 最终消费者将下载该应用程序并将其安装在他们的系统上 Silverlight 的沙盒模型将无法工作 它必须是完整下