自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

.NET打包項目全面介紹

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

一.創(chuàng)建部署.NET打包項目

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

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

3. 單擊“確定”關(guān)閉對話框。
 
4. 項目被添加到解決方案資源管理器中,并且文件系統(tǒng)編輯器打開。
 
5. 在“屬性”窗口中,選擇 ProductName 屬性,并鍵入 信息管理系統(tǒng) 。
 
二.將主程序項目的輸出添加到部署項目中
 
1. 在“文件系統(tǒng)編輯器”中,選擇“應(yīng)用程序文件夾”。在“操作”菜單上,指向“添加”,然后選擇“項目輸出”。
 
2. 在“添加項目輸出組”對話框中,選擇“項目”下拉列表中的“你的程序”。
 
3. 單擊“確定”關(guān)閉對話框。
 
4. 從列表中選擇“主輸出”和“內(nèi)容文件”組,然后單擊“確定”。
 
三.創(chuàng)建安裝程序類
 
1. 在“文件”菜單上指向“新建”,然后選擇“項目”。
 
2. 在“新建項目”對話框中,選擇“項目類型”窗格中的“Visual Basic 項目”,然后選擇“模板”窗格中的“類庫”。在“名稱”框中鍵入 installDB。
 
3. 單擊“打開”關(guān)閉對話框。
 
4. 從“項目”菜單中選擇“添加新項”。
 
5. 在“添加新項”對話框中選擇“安裝程序類”。在“名稱”框中鍵入 installDB。
 
6. 單擊“確定”關(guān)閉對話框。
 
7. 詳細(xì)代碼附后。
 
四.創(chuàng)建自定義安裝對話框
 
1. 在解決方案資源管理器中選擇“setup1”項目。在“視圖”菜單上指向“編輯器”,然后選擇“用戶界面”。
2. 在用戶界面編輯器中,選擇“安裝”下的“啟動”節(jié)點。在“操作”菜單上,選擇“添加對話框”。
3. 在“添加對話框”對話框中,選擇“許可協(xié)議”對話框,然后單擊“確定”關(guān)閉對話框。
4. 在“添加對話框”對話框中,選擇“文本框 (A)”對話框,然后單擊“確定”關(guān)閉對話框。
5. 在“操作”菜單上,選擇“上移”。重復(fù)此步驟,直到“文本框 (A)”對話框位于“安裝文件夾”節(jié)點之上。
6. 在“屬性”窗口中,選擇 BannerText 屬性并鍵入:安裝數(shù)據(jù)庫.
7. 選擇 BodyText 屬性并鍵入:安裝程序?qū)⒃谀繕?biāo)機器上安裝數(shù)據(jù)庫
8. 選擇 Edit1Label 屬性并鍵入:數(shù)據(jù)庫名稱:
9. 選擇 Edit1Property 屬性并鍵入 CUSTOMTEXTA1
10. 選擇 Edit1Value 屬性并鍵入:dbservers
11. 選擇 Edit2Label 屬性并鍵入:服務(wù)器名:
12. 選擇 Edit2Property 屬性并鍵入 CUSTOMTEXTA2
13. 選擇 Edit2Value 屬性并鍵入:(local)
14. 選擇 Edit3Label 屬性并鍵入:用戶名:
15. 選擇 Edit3Value 屬性并鍵入:sa
16. 選擇 Edit3Property 屬性并鍵入 CUSTOMTEXTA3
17. 選擇 Edit4Label 屬性并鍵入:密碼:
18. 選擇 Edit4Property 屬性并鍵入 CUSTOMTEXTA4
19. 選擇 Edit2Visible、Edit3Visible 和 Edit4Visible 屬性,并將它們設(shè)置為 true
 
五.創(chuàng)建自定義操作
 
1. 在解決方案資源管理器中選擇“setup1”項目。在“視圖”菜單上指向“編輯器”,然后選擇“自定義操作”。
2. 在自定義操作編輯器中選擇“安裝”節(jié)點。在“操作”菜單上,選擇“添加自定義操作”。
3. 在“選擇項目中的項”對話框中,雙擊“應(yīng)用程序文件夾”。
4. 選擇“主輸出來自 installDB(活動)”項,然后單擊“確定”關(guān)閉對話框。
5. 在“屬性”窗口中,選擇 CustomActionData 屬性并鍵入“/dbname=[CUSTOMTEXTA1] /server=[CUSTOMTEXTA2] /user=[CUSTOMTEXTA3] /pwd=[CUSTOMTEXTA4] /targetdir="[TARGETDIR]\"”。
 
附:/targetdir="[TARGETDIR]\"是安裝后的目標(biāo)路徑,為了在installDB類中獲得安裝后的路徑,我們設(shè)置此參數(shù)。
 
六 .NET打包時加入卸載功能:
 
方法一:
1.在.NET打包項目中添加文件msiexec.exe(一般可在c:\windows\system32\下找到)
2.在文件系統(tǒng)視圖中選擇應(yīng)用程序文件夾,在msiexec.exe上按右鍵,選擇創(chuàng)建快捷方式,重命名快捷方式為"卸載".
3.更改此快捷方式的Arguments 為"/x {產(chǎn)品id}",產(chǎn)品id的值為打包項目的ProductCode屬性值.
 
方法二:(推薦)
1.先生成安裝包,記下ProductCode(選擇解決方案資源管理器根目錄如setup1,再查看屬性標(biāo)簽,不是右鍵中的屬性),下面要用到
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文件加入到打包程序文件中,在程序組創(chuàng)建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. ///必需的設(shè)計器變量。  
  17. ///  
  18. privateSystem.ComponentModel.Containercomponents=null;  
  19. publicInstaller1(){  
  20. //該調(diào)用是設(shè)計器所必需的。  
  21. InitializeComponent();  
  22. //TODO:在InitializeComponent調(diào)用后添加任何初始化  
  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組件設(shè)計器生成的代碼  
  37. ///  
  38. ///設(shè)計器支持所需的方法-不要使用代碼編輯器修改  
  39. ///此方法的內(nèi)容。  
  40. ///  
  41. privatevoidInitializeComponent(){  
  42. components=newSystem.ComponentModel.Container();  
  43. }  
  44. #endregion  
  45. privatestringGetSql(stringName){  
  46. ////調(diào)用osql執(zhí)行腳本  
  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();//等待執(zhí)行  
  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是數(shù)據(jù)庫的sql腳本,當(dāng)然可以調(diào)用osql來執(zhí)行sql腳本,其實是一樣的。打包的時候必須把sql.txt文件加進(jìn)來,否則不會執(zhí)行。如果你想附加數(shù)據(jù)庫的mdf文件和ldf文件,用下面這段程序:
  1. privatevoidCreateDataBase(stringstrSql,stringDataName,stringstrMdf,stringstrLdf)  
  2. {  
  3. Stringstr;  
  4. SqlConnectionmyConn=newSqlConnection(strSql);  
  5. //EXECsp_detach_db@dbname='BX_FreightMileage_2'//需要先將數(shù)據(jù)庫分離出來  
  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.  
當(dāng)然.NET打包項目也要把這兩個數(shù)據(jù)庫文件也加進(jìn)來。

【編輯推薦】

  1. .NET 3.5擴展方法點評:優(yōu)點與問題
  2. 一個.NET調(diào)用PHP Web Service的典型例子
  3. .NET 4.0的ICustomQueryInterface新特性
  4. 在.NET反應(yīng)性框架中實現(xiàn)LINQ
  5. .NET 3.5擴展方法和Lambda表達(dá)式
責(zé)任編輯:彭凡 來源: 51CTO博客
相關(guān)推薦

2009-07-29 10:35:51

ASP.NET緩存

2009-08-05 10:36:08

開發(fā)ASP.NET

2009-08-04 15:58:06

ASP.NET動態(tài)控件

2009-07-21 13:30:59

JSP技術(shù)ASP.NET

2012-09-18 11:02:10

ASP.NETC#Web Forms

2009-09-16 10:38:43

LINQ查詢

2009-09-28 13:49:44

Hibernate Q

2009-07-09 14:22:44

2009-09-25 09:46:03

Hibernate s

2019-11-10 09:30:44

LinuxLinux權(quán)限

2009-07-10 13:36:32

Swing容器

2009-09-23 17:41:05

Hibernate事務(wù)

2009-09-28 10:24:58

Hibernate基礎(chǔ)

2009-10-22 17:06:14

VB.NET數(shù)據(jù)類型

2009-12-24 10:43:03

Linux配置ntop

2010-03-10 13:08:38

Linux安裝電驢

2016-10-12 11:08:16

JavaScriptarguments數(shù)組

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技術(shù)棧公眾號