目前,在WIN7操作系统上。包括ne,用户基数比较大,后面的WIN8、WIN10的基本。NET版本都不一样。

WINDOWS SERVER操作系统默认的.NET是不启用的,需要手动启用.NET组件。由于桌面程序很少有在服务器系统上运行的,所以不考虑SERVER系统。

在开发前端桌面程序时,以前的前端程序很多会用MFC开发,或者基于MFC的界面库进行开发,好处是不需要关心操作系统,可以直接运行。也有通过DUILIB、SOUI等基于DirectUI的界面库进行开发,这种比MFC更灵活,界面可以做的更炫,其它的比如用QT或者WTL等的也比较普遍。

相对来说,开发最简单的方法是用C#基于WPF或者WINFORM来开发,撸代码比较快。但是这种开发有个问题,就是.NET的兼容性问题。如果安装包要附带一个.NET,这会导致部署很麻烦甚至有时候会失败。

因为现在XP操作系统很少有用的了,如果有的话,那只能是让它装上.NET4.0了(XP最多支持到.NET4.0,为什么不是让用户安装.NET3.5,因为3.5的安装包太大)。

说了这么多,开始实际说下部署办法。由于WINDOWS VISTA版本没实际测过,这个你们自己考虑测试吧。

一、首先考虑你的程序要不要在XP上跑,如果需要的话,安装包在安装过程中去检测下用户是否安装了.NET,如果没装,则提示用户安装.NET,或者直接安装包附带一个.NET4.0的安装包自动运行。

二、如果不想兼容.NET,只想在WIN7或以上版本运行,那么基于.NET3.5来开发WINFORM或WPF。在.NET3.5开发的程序,有时候界面效果和基于.NET4.0等版本效果有一定差别,需要测试。

三、在A文件里添加上如下代码

<startup useLegacyV2RuntimeActivationPolicy="true">

<supportedRuntime version="v2.0.50727" />

<supportedRuntime version="v4.0" />

</startup>

注意,startup节点要放在configuration内部的最前面。

这段配置的意思是比如你操作系统有.NET3.5和.NET4.0同时存在,则先用.NET3.5来启动程序,如果没有,则再用.NET4.0来启动程序。当然如果没.NET4.0有.NET4.5那就会以.NET4.5来启动程序。

如果你不加上面的代码,那么你基于.NET3.5开发程序,到了WIN10上会直接无法运行。

注意:这个配置文件最后要和EXE程序一起发布的,比如你的EXE名字叫HAHA.EXE,那么Config就比如HAHA.EXE.CONFIG名字。这个HAHA.EXE.CONFIG里就必须带上上面的配置,默认情况下,VS会自动输出该配置,不需要手动操作。

有个别用户的.NET3.5安装问题,会导致程序无法正常运行,这时候可以注意掉<supportedRuntime version="v2.0.50727" />这一行,给用户安装上.NET4.0试下。

四、确保你的程序针对.NET3.5,.NET4.0,.NET4.5都能运行正常,最终可以在纯净的WIN7,WIN8,WIN10分别测试下程序,不需要额外安装.NET了。

五、因为.NET的特殊性,生成的程序最好加密处理下,不然容易被人破解,比如可以考虑开源.net混淆器ConfuserEx。


上述操作完成后,假如只是针对WIN7及以上的操作系统进行桌面程序部署,那么我们不用附带.NET,也不用用户去安装.NET,可以直接双击就能运行。

相关推荐