我正在编写一个 Windows 窗体应用程序,出售给中小型公司并供局域网上的用户使用。
为了方便网络管理员,我考虑使用 .Net 3.5 SP1 并从网络共享运行应用程序。这样,客户端安装就很少了(我知道他们必须安装 .Net 3.5 SP1)。
管理员将在服务器上安装应用程序,运行 Windows 安装程序,然后通过电子邮件将网络路径发送给用户,以便他们开始使用该应用程序。另一种方法是让管理员在数百台 PC 上安装应用程序,我尽量避免这种情况。每次我更新应用程序时,管理员只需在一台服务器上重新安装它。
如果您使用了这样的部署,我想听听您的意见,它有哪些缺陷以及我应该注意什么。
先谢谢了。
答案1
通常,我更希望您将应用程序打包到 Windows Installer (MSI) 包中。我只需几分钟即可轻松将其部署到任意数量的 PC 上。
我宁愿将应用程序放在 PC 的硬盘上,而不是放在服务器上的“共享文件夹”上。如果服务器上的“共享文件夹”位于慢速 WAN 线路上,应用程序启动很可能会很慢,但就访问远程 SQL Server 数据库而言,应用程序的用户体验在相同的 WAN 线路上可能是可以接受的。因此,我更喜欢将应用程序放在 PC 的硬盘上。
我还认为我的 LAN 带宽是一种宝贵的商品,每次用户启动时都通过网络拖拽程序对我来说似乎是一种浪费。
答案2
Evan 提出了一些非常好的观点。我也想谈谈你的更新过程:虽然我理解你想简化升级过程,但这可能很危险。简单并不容易。
我(作为管理员)希望看到 MSI 安装程序(带有卸载程序)。升级应该以相同的方式处理。这样,我们的安装过程也可以是我们的升级过程。
我还可以添加您的第一个功能请求吗?进行包含应用程序版本信息的注册表设置。这应该在安装期间设置并在升级期间重置。虽然一般来说不是注册表的忠实粉丝,但这是 Windows 范例。这比检查 DLL(或您将使用的任何文件)的版本要容易得多。
非常感谢您向我们系统管理员询问我们想要什么。如果您有任何问题,请随时回来,并带上您的朋友。
答案3
答案4
我想补充一点,从网络路径执行的 .NET 应用程序在低权限下运行。根据您的应用程序正在执行的操作,这可能不是什么大问题。但在选择此路径之前,您应该检查一下。此线程提供了很好的建议 - Click Once、MSI 和通过 GPO 部署。我可以说我在某种程度上使用了所有这些方法。使用 Click Once,您不需要管理员的大量帮助,只需设置一个虚拟目录来托管您的表单应用程序即可。