欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

安裝與部署

系統 1911 0

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

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

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

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. // Assembly AssemblyAsm =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. } ?
  110. }?

這里有個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. ?
  13. }?
當然.NET打包項目也要把這兩個數據庫文件也加進來。
?
?
?
123

安裝與部署


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲日韩中文字幕天堂不卡 | ririsao久久精品一区 | 草草久久久 | 欧美18av| 亚洲日韩视频 | AV国産精品毛片一区二区三区 | 国内精品一区二区三区最新 | 国产一二三四区中 | 狠日日 | 国产区视频在线观看 | 欧美午夜激情影院 | 日韩高清不卡 | 91精品国产91久久久久久 | 久草免费在线 | 亚洲一区中文字幕 | 日韩电影毛片 | 欧美18 - 19sex性| 日本韩国一区二区三区 | 久久一日本道色综合久久 | 99久久精品国产自免费 | 国产精选经典三级小泽玛利亚 | 人人射人人插 | 成人国产精品齐天大性 | 欧美电影网站在线观看影片 | 日韩欧美亚洲综合 | 国产第一亚洲 | 亚洲综合欧美 | 久草手机在线视频 | 亚洲午夜日韩高清一区 | 久久夜视频 | 一区二区三区在线免费观看 | 色综合天天色 | 精品久久久爽爽久久久AV | 日韩有码一区 | 国内精品视频区在线2021 | 91福利国产在线观看网站 | www.av视频 | 91免费在线看 | 日韩av电影免费看 | 欧美一区二区三区网站 | 91精品久久久久久久久久 |