dotNET 程序奔向 Window XP ,体验绚丽的外表?
小气的神 2001-09-16
我的朋友中终于有忍不住开始安装 Windows XP 了,感觉是被华丽的界面诱惑。好像最近网上流传的一个 Windows XP 2600 的版本十分稳定而且不用激活 ( 所以安装的人渐渐又多起来了 haha) 。由于要帮他安装一些外设,我也才可以做这样的实验,开始考虑将自己原来的一些 dotNET 程序向 XP 上迁移,特别是一些 WinForm 的程序,因为我想自己的程序也可以利用 XP 的华丽 UI 。
有关 XP 的版本有很多说法,有的说已经预装了 dotNet Framework Beta2 ,有的说没有装,我想这主要是 dotnet 运行库没有 Release 前所必须考虑的,从 Beta1 到 Beta2 的变化就很大,这样对于操作系统的稳定性一定是有直接影响的。(这点也可以粉碎了一些人对 WinXP 和 dotnet 之间的遐想,他们总认为 XP 的某一部分是用 dotnet 写的) 事实上,我手上的这个零售版的也没有安装 Framework Beta2 运行库,当我把程序直接 Copy 过去时,是不能运行的。至于这个运行库有两种办法可以来解决(当然应该有无数种方法):
1. 在你的 Visual Studio.NET Beta2 的组件更新的那张 CD 中有一个 dotNetFramework 目录里面有一个 Setup.exe(17.3M) 的执行文件,去 XP 下执行,然后再执行你的 dotNET 程序就可以了。
2. 大型或复杂一点的程序,你可以使用 VS.NET 带的 Setup and deployment 功能来完全的做一个 Setup 程序来完成这个工作。具体的你可以:
1. 打开你要部署的 dotnet 程序 .
2. File->New-Project... 在打开的 New Project 对话框中
3. 左边选中 Setup and Deployment Project 右边一栏选中 Setup Wizard 注意下面的路径和选项,选中加入目前你的项目中,而不是关闭。
4. 然后会有一个 Wizard 出现从 1 To 5 完后新的 Project 自动加入你的 Sln 中。(如果不是选择 Setup Wizard 而选择 Setup Project 那么可以在 VS.NET 右边的 Sln Explorer View 中点击 Project 然后在树状 View 中的 Application Folder 右键选 Add Project Output... 这样会弹出一个对话框中选 Primary Output 和 Localized Resource 两项表明你需要打包你的运行文件和一些资源文件)
5. OK 后重新编译你所有的 Project 你可以在你 Setup Project 的 Debug 或 Release 输出目录中发现一个 MSI 文件。去 XP 中安装就可以了。
老实说第二种方法很破,抽取了几乎整个 dotNET 的运行库文件,所以尺寸奇大,一般都是 15M 以上。当然除此之外你还可以安装 Framework Beta2 SDK 或 VS.NET 等方法来使 XP 带有 DotNET 的运行库。
之后我开始一些有意思的实验,将自己的 WinForm 程序带上 XP 的样子。前几天我在 CSDN 上看到有人讲述 VC 环境下如何适应 XP 的环境。我想 DotNET 也是可以的,甚至 VB 的程序也可以。总的感觉还可以,几乎说是很顺利。我要感谢 www.godotnet.com 。因为我是参照下面这篇文章来完成的。
http://www.gotdotnet.com/team/windowsforms/Themes.aspx
上面有具体的步骤和一些说明,我说一些具体的步骤吧:
1. 把你的 WinForm 中所有有 FlatStyle 属性的控件的值都设置成 System ,没有的就算了。
2. 编译你的程序成 EXE 文件
3. 如果你 XP 已有 dotNET 的运行库, copy 你的 EXE 程序去 XP 中任一地方。
4. 准备一个和你运行文件相同的 Manifest 文件和你的 EXE 文件在一起, 这个文件那里都有, 内容也都几乎一样,主要是它的文件名一定要是 ” 你的运行程序名 .Manifest” ,比如我的程序是 Win2KToXP.EXE ,那么这个文件一定要起名为 :Win2KToXP.EXE.manifest (这个 Manifest 文件网站上有一个样本,后面我附带了一个我测试过的给大家,直接用网站上的那个好像有问题。)
5. 这篇文章还介绍了一种你可以将这个 Manifest 直接嵌入到 EXE 的方法,我也测试过 OK 的。(你可以在生成 EXE 来做这一步,修改时引入的类型别写错是: RT_MANIFEST ,然后把资源类型从 101 改成 1 ,保存搞掂。感觉这是一种不错的设计,当你决定自己的程序要在 XP 下运行了再做这一步,不过前提要保证你在第四步的方式中是成功的,不然修改完 EXE 后会导致整个程序不能运行)
总之这是一种很有趣的体验,如果你有相同的环境你可以试一下。
我在 Windows 2000 ADV Server SP2 EN , VS.NET SP2 EN 完成自己的 dotNET 程序并且编译成 EXE 。确保 XP 已有运行库的情况下直接 copy EXE 文件去 XP 环境执行就可以了。
下面是屏幕的拷图 :
下面是 Manifest 的文件清单 :
1<assembly manifestversion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
2<assemblyidentity name="Win2KToXP.EXE" processorarchitecture="X86" type="win32" version="1.0.0.0"></assemblyidentity>
3<description>ccBoy</description>
4<dependency>
5<dependentassembly>
6<assemblyidentity language="*" name="Microsoft.Windows.Common-Controls" processorarchitecture="*" publickeytoken="6595b64144ccf1df" type="win32" version="6.0.0.0"></assemblyidentity>
7</dependentassembly>
8</dependency>
9</assembly>
特别:
以上文字涉及其他人的隐私和个人权利,如非被授权或经本人同意,任何网站或期刊请不要刊登、转载、转贴或已其他形式进行传播。以上所有文字或图片只用于内部交流,不作任何新闻发表和商业用途。