dotNET 程序奔向Window XP,體驗絢麗的外表? - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- dotNET 程序奔向Window XP,體驗絢麗的外表? (http://www.webasp.net/article/9/8921.htm) |
| -- 作者:未知 -- 發佈日期: 2004-04-30 |
| 我的朋友中終於有忍不住開始安裝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的文件清單: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="Win2KToXP.EXE" type="win32" /> <description>ccBoy</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" language="*" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" /> </dependentAssembly> </dependency> </assembly> -------------------------------------------------------------------------------- 特別: 以上文字涉及其他人的隱私和個人權利,如非被授權或經本人同意,任何網站或期刊請不要刊登、轉載、轉貼或已其他形式進行傳播。以上所有文字或圖片只用於內部交流,不作任何新聞發表和商業用途。 |
| webasp.net |