国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

.NET打包項目全面介紹

開發 后端
本文介紹.NET打包項目,包括介紹將主程序項目的輸出添加到部署項目中、創建安裝程序類、創建自定義安裝對話框和.NET打包時加入卸載功能等方面。

一.創建部署.NET打包項目

1. 在“文件”菜單上指向“添加項目”,然后選擇“新建項目”。

2. 在“添加新項目”對話框中,選擇“項目類型”窗格中的“安裝和部署項目”,然后選擇“模板”窗格中的“安裝項目”。在“名稱”框中鍵入 setup1。

3. 單擊“確定”關閉對話框。
 
4. 項目被添加到解決方案資源管理器中,并且文件系統編輯器打開。
 
5. 在“屬性”窗口中,選擇 ProductName 屬性,并鍵入 信息管理系統 。
 
二.將主程序項目的輸出添加到部署項目中
 
1. 在“文件系統編輯器”中,選擇“應用程序文件夾”。在“操作”菜單上,指向“添加”,然后選擇“項目輸出”。
 
2. 在“添加項目輸出組”對話框中,選擇“項目”下拉列表中的“你的程序”。
 
3. 單擊“確定”關閉對話框。
 
4. 從列表中選擇“主輸出”和“內容文件”組,然后單擊“確定”。
 
三.創建安裝程序類
 
1. 在“文件”菜單上指向“新建”,然后選擇“項目”。
 
2. 在“新建項目”對話框中,選擇“項目類型”窗格中的“Visual Basic 項目”,然后選擇“模板”窗格中的“類庫”。在“名稱”框中鍵入 installDB。
 
3. 單擊“打開”關閉對話框。
 
4. 從“項目”菜單中選擇“添加新項”。
 
5. 在“添加新項”對話框中選擇“安裝程序類”。在“名稱”框中鍵入 installDB。
 
6. 單擊“確定”關閉對話框。
 
7. 詳細代碼附后。
 
四.創建自定義安裝對話框
 
1. 在解決方案資源管理器中選擇“setup1”項目。在“視圖”菜單上指向“編輯器”,然后選擇“用戶界面”。
2. 在用戶界面編輯器中,選擇“安裝”下的“啟動”節點。在“操作”菜單上,選擇“添加對話框”。
3. 在“添加對話框”對話框中,選擇“許可協議”對話框,然后單擊“確定”關閉對話框。
4. 在“添加對話框”對話框中,選擇“文本框 (A)”對話框,然后單擊“確定”關閉對話框。
5. 在“操作”菜單上,選擇“上移”。重復此步驟,直到“文本框 (A)”對話框位于“安裝文件夾”節點之上。
6. 在“屬性”窗口中,選擇 BannerText 屬性并鍵入:安裝數據庫.
7. 選擇 BodyText 屬性并鍵入:安裝程序將在目標機器上安裝數據庫
8. 選擇 Edit1Label 屬性并鍵入:數據庫名稱:
9. 選擇 Edit1Property 屬性并鍵入 CUSTOMTEXTA1
10. 選擇 Edit1Value 屬性并鍵入:dbservers
11. 選擇 Edit2Label 屬性并鍵入:服務器名:
12. 選擇 Edit2Property 屬性并鍵入 CUSTOMTEXTA2
13. 選擇 Edit2Value 屬性并鍵入:(local)
14. 選擇 Edit3Label 屬性并鍵入:用戶名:
15. 選擇 Edit3Value 屬性并鍵入:sa
16. 選擇 Edit3Property 屬性并鍵入 CUSTOMTEXTA3
17. 選擇 Edit4Label 屬性并鍵入:密碼:
18. 選擇 Edit4Property 屬性并鍵入 CUSTOMTEXTA4
19. 選擇 Edit2Visible、Edit3Visible 和 Edit4Visible 屬性,并將它們設置為 true
 
五.創建自定義操作
 
1. 在解決方案資源管理器中選擇“setup1”項目。在“視圖”菜單上指向“編輯器”,然后選擇“自定義操作”。
2. 在自定義操作編輯器中選擇“安裝”節點。在“操作”菜單上,選擇“添加自定義操作”。
3. 在“選擇項目中的項”對話框中,雙擊“應用程序文件夾”。
4. 選擇“主輸出來自 installDB(活動)”項,然后單擊“確定”關閉對話框。
5. 在“屬性”窗口中,選擇 CustomActionData 屬性并鍵入“/dbname=[CUSTOMTEXTA1] /server=[CUSTOMTEXTA2] /user=[CUSTOMTEXTA3] /pwd=[CUSTOMTEXTA4] /targetdir="[TARGETDIR]\"”。
 
附:/targetdir="[TARGETDIR]\"是安裝后的目標路徑,為了在installDB類中獲得安裝后的路徑,我們設置此參數。
 
六 .NET打包時加入卸載功能:
 
方法一:
1.在.NET打包項目中添加文件msiexec.exe(一般可在c:\windows\system32\下找到)
2.在文件系統視圖中選擇應用程序文件夾,在msiexec.exe上按右鍵,選擇創建快捷方式,重命名快捷方式為"卸載".
3.更改此快捷方式的Arguments 為"/x {產品id}",產品id的值為打包項目的ProductCode屬性值.
 
方法二:(推薦)
1.先生成安裝包,記下ProductCode(選擇解決方案資源管理器根目錄如setup1,再查看屬性標簽,不是右鍵中的屬性),下面要用到
2.用VS.net建立一個新的控制臺程序uninst.exe文件
  1. 'power by: landlordh  
  2. 'for 2000,xp,2003  
  3. Module uninstall  
  4.     Sub Main()  
  5.         Dim myProcess As Process = New Process  
  6.         If System.Environment.OSVersion.ToString.IndexOf("NT 5") Then  
  7.             myProcess.Start("msiexec", "/X{2B65D4A9-C146-4808-AB4B-321FB0779559}")
    '改為自己的ProductCode  
  8.         End If  
  9.         myProcess.Close()  
  10.     End Sub  
  11. End Module  
3.將控制臺程序BIN目錄的exe文件加入到打包程序文件中,在程序組創建uninst.exe的快捷方式
 
installdb.vb類,要添加引用 system.configuration.install.dll :
  1. usingSystem;  
  2. usingSystem.Collections;  
  3. usingSystem.ComponentModel;  
  4. usingSystem.Configuration.Install;  
  5. usingSystem.Reflection;  
  6. usingSystem.IO;  
  7. usingSystem.Data;  
  8. usingSystem.Data.SqlClient;  
  9. namespaceinstall{  
  10. ///  
  11. ///Installer1的摘要說明。  
  12. ///  
  13. [RunInstaller(true)]  
  14. publicclassInstaller1:System.Configuration.Install.Installer{  
  15. ///  
  16. ///必需的設計器變量。  
  17. ///  
  18. privateSystem.ComponentModel.Containercomponents=null;  
  19. publicInstaller1(){  
  20. //該調用是設計器所必需的。  
  21. InitializeComponent();  
  22. //TODO:在InitializeComponent調用后添加任何初始化  
  23. }  
  24. ///  
  25. ///清理所有正在使用的資源。  
  26. ///  
  27. protectedoverridevoidDispose(booldisposing){  
  28. if(disposing){  
  29. if(components!=null){  
  30. components.Dispose();  
  31. }  
  32. }  
  33. base.Dispose(disposing);  
  34. }  
  35.  
  36. #region組件設計器生成的代碼  
  37. ///  
  38. ///設計器支持所需的方法-不要使用代碼編輯器修改  
  39. ///此方法的內容。  
  40. ///  
  41. privatevoidInitializeComponent(){  
  42. components=newSystem.ComponentModel.Container();  
  43. }  
  44. #endregion  
  45. privatestringGetSql(stringName){  
  46. ////調用osql執行腳本  
  47. //  
  48. //System.Diagnostics.ProcesssqlProcess=newSystem.Diagnostics.Process();  
  49. //  
  50. //sqlProcess.StartInfo.FileName="osql.exe";  
  51. //  
  52. //sqlProcess.StartInfo.Arguments=String.Format("-U{0}-P{1}-d{2}-i{3}db.sql",
    this.Context.Parameters["user"],this.Context.Parameters["pwd"],"master",this.
    Context.Parameters["targetdir"]);  
  53. //  
  54. //sqlProcess.StartInfo.WindowStyle=System.Diagnostics.ProcessWindowStyle.Hidden;  
  55. //  
  56. //sqlProcess.Start();  
  57. //  
  58. //sqlProcess.WaitForExit();//等待執行  
  59. //  
  60. //sqlProcess.Close();  
  61. try{  
  62. //AssemblyAssemblyAsm=Assembly.GetExecutingAssembly();  
  63. //System.IO.FileInfoFileInfo=newSystem.IO.FileInfo(Asm.Location);  
  64. //stringpath=FileInfo.DirectoryName+@"\"+Name;  
  65. stringpath=this.Context.Parameters["targetdir"]+Name;  
  66. FileStreamfs=newFileStream(path,FileMode.Open,FileAccess.Read,FileShare.Read);  
  67. StreamReaderreader=newStreamReader(fs,System.Text.Encoding.Default);  
  68. //System.Text.Encoding.ASCII;  
  69. returnreader.ReadToEnd();  
  70. }  
  71. catch(Exceptionex){  
  72. Console.Write("InGetSql:"+ex.Message);  
  73. throwex;  
  74. }  
  75. }  
  76. privatevoidExecuteSql(stringDataBaseName,stringSql){  
  77. SqlConnectionsqlConnection1=newSqlConnection();  
  78. sqlConnection1.ConnectionString=string.Format("server={0};userid={1};password={2};
  79. Database=master",this.Context.Parameters["server"],this.Context.Parameters["user"],
    this.Context.Parameters["
    pwd"]);  
  80. System.Data.SqlClient.SqlCommandCommand=newSystem.Data.SqlClient.
    SqlCommand(Sql,sqlConnection1);  
  81. try{  
  82. Command.Connection.Open();  
  83. Command.Connection.ChangeDatabase(DataBaseName);  
  84. Command.ExecuteNonQuery();  
  85. }  
  86. catch(Exceptionex){  
  87. Console.Write("Inexceptionhandler:"+ex.Message);  
  88. }  
  89. finally{  
  90. Command.Connection.Close();  
  91. }  
  92. }  
  93. protectedvoidAddDBTable(stringstrDBName){  
  94. try{  
  95. ExecuteSql("master","CREATEDATABASE"+strDBName);  
  96. ExecuteSql(strDBName,GetSql("sql.txt"));  
  97. ExecuteSql("master","execsp_addlogin'myoamaster','myoamaster','"+strDBName+"',Null,Null");  
  98. ExecuteSql(strDBName,"EXECsp_grantdbaccess'myoamaster','myoamaster'");  
  99. ExecuteSql(strDBName,"execsp_addrolemember'db_owner','myoamaster'");  
  100. }  
  101. catch(Exceptionex){  
  102. Console.Write("Inexceptionhandler:"+ex.Message);  
  103. }  
  104. }  
  105. publicoverridevoidInstall(System.Collections.IDictionarystateSaver){  
  106. base.Install(stateSaver);  
  107. AddDBTable(this.Context.Parameters["dbname"]);  
  108. }  
  109. }  

這里有個sql.txt是數據庫的sql腳本,當然可以調用osql來執行sql腳本,其實是一樣的。打包的時候必須把sql.txt文件加進來,否則不會執行。如果你想附加數據庫的mdf文件和ldf文件,用下面這段程序:
  1. privatevoidCreateDataBase(stringstrSql,stringDataName,stringstrMdf,stringstrLdf)  
  2. {  
  3. Stringstr;  
  4. SqlConnectionmyConn=newSqlConnection(strSql);  
  5. //EXECsp_detach_db@dbname='BX_FreightMileage_2'//需要先將數據庫分離出來  
  6. str="EXECsp_attach_db@dbname='"+DataName+"',@filename1='"+strMdf+"',@filename2='"+strLdf+"'";  
  7. SqlCommandmyCommand=newSqlCommand(str,myConn);  
  8.  
  9. myConn.Open();  
  10. myCommand.ExecuteNonQuery();  
  11. myConn.Close();  
  12.  
當然.NET打包項目也要把這兩個數據庫文件也加進來。

【編輯推薦】

  1. .NET 3.5擴展方法點評:優點與問題
  2. 一個.NET調用PHP Web Service的典型例子
  3. .NET 4.0的ICustomQueryInterface新特性
  4. 在.NET反應性框架中實現LINQ
  5. .NET 3.5擴展方法和Lambda表達式
責任編輯:彭凡 來源: 51CTO博客
相關推薦

2009-08-05 10:36:08

開發ASP.NET

2009-07-29 10:35:51

ASP.NET緩存

2009-08-04 15:58:06

ASP.NET動態控件

2009-07-21 13:30:59

JSP技術ASP.NET

2009-09-16 10:38:43

LINQ查詢

2009-09-28 13:49:44

Hibernate Q

2019-11-10 09:30:44

LinuxLinux權限

2009-09-23 17:41:05

Hibernate事務

2009-09-28 10:24:58

Hibernate基礎

2009-07-10 13:36:32

Swing容器

2009-09-25 09:46:03

Hibernate s

2009-07-09 14:22:44

2012-09-18 11:02:10

ASP.NETC#Web Forms

2009-10-22 17:06:14

VB.NET數據類型

2016-10-12 11:08:16

JavaScriptarguments數組

2009-12-24 10:43:03

Linux配置ntop

2010-03-10 13:08:38

Linux安裝電驢

2010-03-16 11:08:34

Ubuntu版本

2009-10-23 10:18:43

VB.NET運算符

2009-11-12 14:37:26

ADO.NET結構
點贊
收藏

51CTO技術棧公眾號

69久久99精品久久久久婷婷 | 久久久国产精华液999999| 色999韩欧美国产综合俺来也| 精品久久久久久久久久久久久久| 欧美亚洲国产成人| 国产精品一二三在| 亚洲精品视频一二三| 欧美日韩视频一区二区三区| 国产精品pans私拍| 凹凸成人在线| 色综合天天综合网国产成人网| 忘忧草在线影院两性视频| 欧美日韩国产综合视频在线观看| 中文字幕在线观| 亚洲精品日韩专区silk| 一区二区三区国产免费| 99久久99久久免费精品蜜臀| 人妻av无码专区| 国产成人高清在线| 丁香六月激情网| 韩国av一区二区| 特色特色大片在线| 国产一区二区三区视频在线播放| 午夜精品一区二区三区在线观看| 国产精品婷婷| 日产精品高清视频免费| 青娱乐精品视频在线| 天天爽天天狠久久久| 久久99国产精品免费网站| 亚洲综合视频一区| 成人久久视频在线观看| 18禁免费观看网站| 久久久久久久久97黄色工厂| 亚洲综合婷婷久久| 亚洲综合色丁香婷婷六月图片| 992tv在线影院| 91国产丝袜在线播放| 国产区在线看| 亚洲日韩中文字幕在线播放| 青青在线精品| 日本伊人精品一区二区三区介绍| 99视频精品全国免费| yellow视频在线观看一区二区| 99热这里只有成人精品国产| 先锋影音欧美| 久久免费视频一区| 在线观看免费网站| 精品88久久久久88久久久| 欧洲午夜精品| 国产噜噜噜噜噜久久久久久久久 | 桥本有菜亚洲精品av在线| 色婷婷亚洲一区二区三区| 欧美日韩视频在线播放| 精品国产亚洲在线| 国产精品美女久久久久人| 国产精品久久久久久影视| 在线亚洲激情| 97免费视频观看| 国产精品盗摄一区二区三区| 香蕉影院在线| 亚洲电影免费观看高清完整版在线观看 | 日韩一卡二卡三卡| 国产亚洲精彩久久| 欧美亚洲成人精品| 一区二区91| 日韩网址在线观看| 91九色最新地址| а√天堂资源国产精品| 国产日本欧美在线观看| 国产真实乱偷精品视频免| 秋霞福利视频| 日韩av综合网站| 日韩电影免费在线观看| 香蕉视频免费版| 亚洲制服丝袜av| 中文字幕乱码在线播放| 国产精品看片资源| 懂色中文一区二区在线播放| 亚洲精品无码专区在线播放| 国产午夜精品免费一区二区三区| 91日韩在线| 欧美极品欧美精品欧美图片| 欧美日韩亚洲综合一区| 4438全国亚洲精品观看视频| 青青成人在线| 一级精品视频在线观看宜春院 | 精品日产一区2区三区黄免费| 成人国产精品免费观看动漫| 在线成人一区| 久久久精品中文字幕| 亚洲大片av| 成年人羞羞的网站| 亚洲精品永久免费| 欧美婷婷在线| 国语对白在线视频| 日韩日本欧美亚洲| 免费成人你懂的| 国产人成在线视频| 隔壁老王国产在线精品| 久久激情综合网| 国产污视频在线| 91精品国产乱码久久久久久蜜臀| 青青草97国产精品免费观看无弹窗版 | 91精品欧美福利在线观看| 91麻豆精品激情在线观看最新| 日韩电影在线播放| 精品久久久久久久久久久久| 国产精品麻豆| 国产亚洲精品久久久久久久| 欧美性猛片aaaaaaa做受| 成人性生交大片免费看中文视频| 好吊色这里只有精品| 91.com视频| 悠悠资源网久久精品| 先锋影音欧美性受| 国产精品久久电影观看| 亚洲国产精品高清| www.久久热| 日本丰满少妇xxxx| 精品国产乱码久久久久久浪潮 | 青青草视频一区| 尤物网在线观看| 亚洲va男人天堂| 亚洲午夜精品一区二区三区他趣| 中文在线免费一区三区| 三上悠亚久久精品| 亚洲免费成人av电影| 久久这里只有| 国产cdts系列另类在线观看| 亚洲a在线播放| 一区二区三区不卡视频在线观看 | 中日韩美女免费视频网址在线观看 | av美女在线| 欧美激情视频网址| 91蜜桃在线免费视频| 桃花岛成人影院| 日韩欧美视频免费在线观看| 日韩欧美久久久| 美女诱惑一区二区| 国产乱码精品一区二三赶尸艳谈| 四虎一区二区| 亚洲精品福利资源站| 精品少妇在线视频| 欧美日韩午夜在线| 99热免费精品在线观看| 最近高清中文在线字幕在线观看| www.久久爱.cn| 在线不卡一区二区| 久久爱另类一区二区小说| 成年男女免费视频网站不卡| 亚洲欧美综合一区| 这里只有精品视频在线| 国产亚洲精品7777| 久久99性xxx老妇胖精品| 一本大道香蕉8中文在线视频| 91麻豆国产精品| 欧美日韩国产一区| 国产真实乱对白精彩久久| 日韩一级二级| 国产三级国产精品国产专区50| 国产精品久久久久久亚洲影视| 色噜噜夜夜夜综合网| 日韩中文字幕麻豆| 欧洲精品久久久久毛片完整版| 中文字幕天天干| 51国产成人精品午夜福中文下载| 欧美肥胖老妇做爰| a亚洲天堂av| 欧美一级淫片| a级片在线免费观看| 亚洲欧洲日产国码无码久久99 | 久久www免费人成精品| 亚洲国产欧美一区二区三区同亚洲 | 蜜臀a∨国产成人精品| 韩日精品一区| 黄色av地址| 日韩成人在线资源| 九九热精品视频| 欧美亚洲一区三区| 成a人片国产精品| 欧美日韩老妇| 97人人爽人人澡人人精品| 日韩精品免费播放| 成人片在线免费看| xvideos亚洲人网站| 欧美日韩一区二区精品| 精品一区二区三区免费播放| 加勒比色综合久久久久久久久| 成人一区二区不卡免费| 成人黄色av片| 成人综合色站| 欧美另类暴力丝袜| 欧美性猛交xxxxxx富婆| 成人国产亚洲欧美成人综合网| 日韩理论在线| 亚洲精品tv| 在线观看小视频| 中文字幕校园春色| 久久亚洲精品无码va白人极品| 成人免费网站在线看|