亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

安裝與部署

系統(tǒng) 1828 0

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

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

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

3.?單擊“確定”關(guān)閉對(duì)話框。
?
4.?項(xiàng)目被添加到解決方案資源管理器中,并且文件系統(tǒng)編輯器打開。
?
5.?在“屬性”窗口中,選擇 ProductName 屬性,并鍵入?[ 項(xiàng)目名稱 ] 。
?
二.將主程序項(xiàng)目的輸出添加到部署項(xiàng)目中
?
1.?在“文件系統(tǒng)編輯器”中,選擇“應(yīng)用程序文件夾”。在“操作”菜單上,指向“添加”,然后選擇“項(xiàng)目輸出”。
?
2.?在“添加項(xiàng)目輸出組”對(duì)話框中,選擇“項(xiàng)目”下拉列表中的“你的程序”。
?
3.?單擊“確定”關(guān)閉對(duì)話框。
?
4.?從列表中選擇“主輸出”和“內(nèi)容文件”組,然后單擊“確定”。
?
三.創(chuàng)建安裝程序類
?
1.?在“文件”菜單上指向“新建”,然后選擇“項(xiàng)目”。
?
2.?在“新建項(xiàng)目”對(duì)話框中,選擇“項(xiàng)目類型”窗格中的“Visual Basic 項(xiàng)目”,然后選擇“模板”窗格中的“類庫(kù)”。在“名稱”框中鍵入 installDB。
?
3.?單擊“打開”關(guān)閉對(duì)話框。
?
4.?從“項(xiàng)目”菜單中選擇“添加新項(xiàng)”。
?
5.?在“添加新項(xiàng)”對(duì)話框中選擇“安裝程序類”。在“名稱”框中鍵入 installDB。
?
6.?單擊“確定”關(guān)閉對(duì)話框。
?
7.?詳細(xì)代碼附后。
?
四.創(chuàng)建自定義安裝對(duì)話框
?
1.?在解決方案資源管理器中選擇“setup1”項(xiàng)目。在“視圖”菜單上指向“編輯器”,然后選擇“用戶界面”。
2.?在用戶界面編輯器中,選擇“安裝”下的“啟動(dòng)”節(jié)點(diǎn)。在“操作”菜單上,選擇“添加對(duì)話框”。
3.?在“添加對(duì)話框”對(duì)話框中,選擇“許可協(xié)議”對(duì)話框,然后單擊“確定”關(guān)閉對(duì)話框。
4.?在“添加對(duì)話框”對(duì)話框中,選擇“文本框 (A)”對(duì)話框,然后單擊“確定”關(guān)閉對(duì)話框。
5.?在“操作”菜單上,選擇“上移”。重復(fù)此步驟,直到“文本框 (A)”對(duì)話框位于“安裝文件夾”節(jié)點(diǎn)之上。
6.?在“屬性”窗口中,選擇 BannerText 屬性并鍵入:安裝數(shù)據(jù)庫(kù).
7.?選擇 BodyText 屬性并鍵入:安裝程序?qū)⒃谀繕?biāo)機(jī)器上安裝數(shù)據(jù)庫(kù)
8.?選擇 Edit1Label 屬性并鍵入:數(shù)據(jù)庫(kù)名稱:
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 屬性,并將它們?cè)O(shè)置為 true
?
五.創(chuàng)建自定義操作
?
1.?在解決方案資源管理器中選擇“setup1”項(xiàng)目。在“視圖”菜單上指向“編輯器”,然后選擇“自定義操作”。
2.?在自定義操作編輯器中選擇“安裝”節(jié)點(diǎn)。在“操作”菜單上,選擇“添加自定義操作”。
3.?在“選擇項(xiàng)目中的項(xiàng)”對(duì)話框中,雙擊“應(yīng)用程序文件夾”。
4.?選擇“主輸出來(lái)自 installDB(活動(dòng))”項(xiàng),然后單擊“確定”關(guān)閉對(duì)話框。
5.?在“屬性”窗口中,選擇 CustomActionData 屬性并鍵入“/dbname=[CUSTOMTEXTA1] /server=[CUSTOMTEXTA2] /user=[CUSTOMTEXTA3] /pwd=[CUSTOMTEXTA4] /targetdir="[TARGETDIR]\"”。
?
附:/targetdir="[TARGETDIR]\"是安裝后的目標(biāo)路徑,為了在installDB類中獲得安裝后的路徑,我們?cè)O(shè)置此參數(shù)。
?
六 .NET打包時(shí)加入卸載功能:
?
方法一:
1.在.NET打包項(xiàng)目中添加文件msiexec.exe(一般可在c:\windows\system32\下找到)
2.在文件系統(tǒng)視圖中選擇應(yīng)用程序文件夾,在msiexec.exe上按右鍵,選擇創(chuàng)建快捷方式,重命名快捷方式為"卸載".
3.更改此快捷方式的Arguments 為"/x {產(chǎn)品id}",產(chǎn)品id的值為打包項(xiàng)目的ProductCode屬性值.
?
方法二:(推薦)
1.先生成安裝包,記下ProductCode(選擇解決方案資源管理器根目錄如setup1,再查看屬性標(biāo)簽,不是右鍵中的屬性),下面要用到
2.用VS.net建立一個(gè)新的控制臺(tái)程序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.將控制臺(tái)程序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的摘要說(shuō)明。 ?
  12. /// ?
  13. [RunInstaller(true)] ?
  14. publicclassInstaller1:System.Configuration.Install.Installer{ ?
  15. /// ?
  16. ///必需的設(shè)計(jì)器變量。 ?
  17. /// ?
  18. privateSystem.ComponentModel.Containercomponents = null ; ?
  19. publicInstaller1(){ ?
  20. //該調(diào)用是設(shè)計(jì)器所必需的。 ?
  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è)計(jì)器生成的代碼 ?
  37. /// ?
  38. ///設(shè)計(jì)器支持所需的方法-不要使用代碼編輯器修改 ?
  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. // 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. }?

這里有個(gè)sql.txt是數(shù)據(jù)庫(kù)的sql腳本,當(dāng)然可以調(diào)用osql來(lái)執(zhí)行sql腳本,其實(shí)是一樣的。打包的時(shí)候必須把sql.txt文件加進(jìn)來(lái),否則不會(huì)執(zhí)行。如果你想附加數(shù)據(jù)庫(kù)的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ù)庫(kù)分離出來(lái) ?
  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. }?
當(dāng)然.NET打包項(xiàng)目也要把這兩個(gè)數(shù)據(jù)庫(kù)文件也加進(jìn)來(lái)。
?
?
?
123

安裝與部署


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 99色播| 26uuu欧美| 奇米影视久久 | 欧美一级欧美三级在线观看 | 色综合色综合色综合 | 一级在线毛片 | 免费性生活视频 | 网红毛片 | 日本中文不卡 | 五月天婷婷在线播放 | 成人小视频网 | 亚洲精品久久九九热 | 国产深夜福利19禁在线播放 | 国产在线一91区免费国产91 | 国产精品人成人免费国产 | 国产高清精品在线 | 中文字幕亚洲综合精品一区 | 久久永久免费中文字幕 | 成人久久免费视频 | 国产三级在线精品男人的天堂 | 成人国产第一区在线观看 | 中文字幕欧美日韩 | 亚洲视频 中文字幕 | 国产素人在线 | 午夜精品久久久久久久久 | 国产一区二区精品久 | 欧美成人性色生活18黑人 | 久青草国产免费观看 | 久久久久蜜桃 | 成人a毛片在线看免费全部播放 | 日韩欧美一级毛片视频免费 | 中文字幕久热精品视频免费 | 亚洲欧美在线观看一区二区 | 欧美日韩国产精品va | 亚洲精品福利一区二区三区 | 看全色黄大色大片免费久久久 | 国产成年女一区二区三区 | 欧美高清在线视频一区二区 | 在线精品欧美 | 一本影院| 国产尤物 |