.Net应用程序部署

我正在编写一个Windows窗体应用程序,将其出售给中小型公司,供局域网用户使用。

为了使networkingpipe理员更容易,我正在考虑使用.Net 3.5 SP1,并从networking共享运行应用程序。 这样,客户端安装是最小的(我知道他们必须安装.net 3.5 SP1)。

pipe理员将安装在服务器上的应用程序,运行一个Windows安装程序,然后通过电子邮件发送path到networkingpath的用户,以便他们可以开始使用该应用程序。 另一种方法是让pipe理员在数百台电脑上安装应用程序,我试图避免。 每次我更新应用程序,pipe理员只需要重新安装在一台服务器上。

如果你使用了这样的部署,我想得到你的意见,陷阱是什么,我应该知道什么。

先谢谢了。

通常情况下,我宁愿将应用程序打包到Windows Installer(MSI)软件包中。 我可以在几分钟内轻松地将它部署到任意数量的PC上。

我宁愿将应用程序放在我的电脑的硬盘驱动器上,而不坐在服务器上的“共享文件夹”上。 如果服务器上的“共享文件夹”跨越慢速WAN线路,应用程序的启动性能会很差,但应用程序的用户体验(即访问远程SQL Server数据库)在同一WAN线路上可能是可以接受的。 因此,我更喜欢在PC的硬盘驱动器上的应用程序。

我也认为我的局域网带宽是一种珍贵的商品,每次用户启动时都会在networking上拖下一个程序,这对我来说似乎很浪费。

埃文提出了一些很好的观点。 我想解决你的更新过程:虽然我明白你想简化升级过程,但这可能是危险的。 简单并不容易。

我会(作为pipe理员)喜欢看到一个MSI安装程序(与卸载程序)。 升级应该以相同的方式处理。 这样,我们的安装过程也可以是我们的升级过程。

我也可以添加你的第一个function请求? 进行包含应用程序版本信息的registry设置。 这应该在安装过程中设置并在升级过程中重置。 虽然不是一般的registry的巨大风扇,这是Windows范例。 这比检查DLL的版本(或者你将要使用的任何文件)要容易得多。

非常感谢你问我们系统pipe理员我们想要什么。 有问题时请回来,带上你的朋友。

您应该考虑ClickOnce部署。 维基百科的描述。

+1 clickonce部署。 我用这个来pipe理4个国家的3个应用程序超过100多台机器。

我想添加的一件事是从networkingpath执行的.NET应用程序在低权限下运行。 取决于你的应用程序在做什么,这可能不是什么大不了的事情。 但是在你select这个path之前你应该检查一下。 在这个主题上提供了很好的build议 – 点击一次,MSI和通过GPO部署。 我可以说我以某种身份使用过他们所有的人。 随着点击一次你不需要从pipe理员很多的帮助,除了设置一个虚拟目录来托pipe你的表单应用程序。

我肯定会build议你避免这样做。 如果您的计划是通过networking共享来运行您的应用程序,那么您在Windows联网的时候会出现故障。 当许多用户访问相同的共享时,Windows共享速度很慢并且往往不可靠。 这是由于其复杂的networking模式。

我有一个应用程序读取共享文件。 通常我们会得到一些随机的错误,使我们无法分享。 有许多问题只是令人困惑。 我强烈build议你避免跑分。

我可以推荐不同的解决scheme吗? 将您的用户界面重新编码为Web服务。 然后,在Web服务器上运行您的应用程序。 您的客户可以使用浏览器来使用您的应用程序。 Winforms可以很容易地转换成webforms。

那么这种部署是非常成熟的,从计算的曙光开始就被使用了。 当然,它可以正常工作,但是很明显会给networking带来很多负担,如果这是在一个只有100Mb / 1Gb链路和大量服务器容量的办公室里,那么它会很好,但是通过互联网或低带宽连接。

冒着被冒着头的风险,如果你为最终用户而不是系统pipe理员开发你的应用程序,我更喜欢它。 我有几个原因:

  1. 如果没有networking呢? 如果您的应用程序无法在单台计算机上完全安装和运行,则会限制您的潜在客户群。

  2. 那些没有networkingpipe理员的公司呢? 通常需要处理应付账款的人做安装和更新需要多less工作? 他们可能需要聘请一家咨询公司来帮助他们,所以你刚刚添加到你的应用程序的TCO。 您还使您的应用程序依赖于具有特定的基础架构。

  3. 没有什么比讨厌需要从networking共享运行的应用程序更令人讨厌的了。 通过networking加载exe和DLL的问题是一个问题。 瞬间丢失的连接性或拥塞,你的应用程序停止正常运行,因为它丢失了连接到所需的exe和DLL等。

  4. 我是一个系统pipe理员,我希望我的工作变得简单,但有时候不是,这是工作的一个事实。 有时我的工作需要我访问最终用户来安装和更新软件。 如果我不想这样做,那么我可能是在错误的工作。

当你build立汽车,你build立他们为消费者,而不是机械师。