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

Rex*_*x M 18 .net deployment mono desktop

我很惊讶我找不到这个问题,所以如果我错过了,请及时通知.

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

这就是我所知道的:

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

我不知道的是:

  • 如何创建灵活,强大的安装程序,可以在无数不受控制的桌面配置和环境中工作.
  • 如何使用Mono针对Mac OSX进行相同操作.
  • 安装广泛分布的最终用户应用程序以及如何减轻它们的常见问题是什么?

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

有关

使用Mono在OSX上等效的Windows服务

ant*_*ony 13

对于Windows,请考虑Windows Installer XML(WiX).对于OSX,您需要生成.app包.以下是使用Monobjc项目中包含的nant任务的示例.

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

在Windows上:

  • 您的安装程序必须检测以前/旧版本并根据需要关闭/卸载/迁移.NSIS和WiX都有此机制.
  • 您的安装程序/应用程序必须与不同版本的Windows(XP,Vista,7)和不同版本的.NET(最终为2.0,3.0,3.5)兼容.实际上测试这是你面临的一项比较繁琐的任务.我强烈建议您使用一些干净的虚拟机映像.

在OSX上:

  • 您很可能希望发布一个独立的应用程序包,这意味着mono将捆绑在您的.app中.这将为您的distributable增加~50mb.
  • 您必须引用不同版本的Monobjc来支持OSX 10.4和10.5,您需要配置构建来执行此操作,以及测试这两个版本.
  • 通过在代码库上运行Mono Migration Analyzer(MoMA),确保您的c#代码未使用Windows/.NET特定的调用.

升级:

您还没有提到计划如何提供升级.NSIS和WiX有能力处理升级.在部署初始版本之前,请确保已完成构建版本控制方案.在OSX上,Monobjc可以与Sparkle集成.


Shu*_*oUk 6

有一个bitrock,它处理你的目标平台,但需要花钱