成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

.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-07-29 10:35:51

ASP.NET緩存

2009-08-05 10:36:08

開發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

2009-09-23 17:41:05

Hibernate事務

2009-09-25 09:46:03

Hibernate s

2009-09-28 10:24:58

Hibernate基礎

2019-11-10 09:30:44

LinuxLinux權限

2009-07-10 13:36:32

Swing容器

2009-07-09 14:22:44

2012-09-18 11:02:10

ASP.NETC#Web Forms

2009-10-22 17:06:14

VB.NET數據類型

2009-12-24 10:43:03

Linux配置ntop

2010-03-10 13:08:38

Linux安裝電驢

2016-10-12 11:08:16

JavaScriptarguments數組

2010-03-16 11:08:34

Ubuntu版本

2009-10-23 10:18:43

VB.NET運算符

2009-10-28 10:04:53

VB.NET XmlW
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 四虎影院在线观看av | 888久久久| 欧美精品第三页 | 亚洲国产二区 | 麻豆国产精品777777在线 | 精品二区 | 天天草天天爱 | 久久久久久a| 在线成人免费观看 | 欧美日韩亚洲视频 | 在线国产视频观看 | 性国产丰满麻豆videosex | 亚洲有码转帖 | 国产区一区二区三区 | 亚洲情综合五月天 | 一区二区在线不卡 | 欧美一区二区三区在线视频 | 精品久久久久久久 | 亚洲毛片在线 | 国精日本亚洲欧州国产中文久久 | 国产成人免费视频网站高清观看视频 | 欧美 日韩精品 | 久久国产亚洲 | 日本黄色短片 | 久久鲁视频 | 欧美日韩在线看 | 天堂久久av | 日本一级淫片免费啪啪3 | 欧美人妇做爰xxxⅹ性高电影 | 国产真实乱对白精彩久久小说 | 国产精品一区二区三区四区 | 日韩在线免费 | 亚洲不卡在线观看 | 亚洲第一网站 | 一区二区三区在线 | 黄色av网站在线观看 | 免费黄视频网站 | 狠狠色狠狠色综合系列 | 国产视频二区在线观看 | 久在线精品视频 | 亚洲天堂成人在线视频 |