分享
 
 
 

Asp.net与SQL一起打包部署安装

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

借鉴MSDN webcasts的Asp.net程序部署和李洪根的一篇文章,然后加上自己的亲身体会,把整个SQL和Asp.net(vb.net)一起打包的全过程写一下。

一.准备必要的文件

1. SQL脚本文件,生成以后安装过程中需要的表和存储过程等等;

生成之后,就暂时把它命名为db.sql(注意大小写)

2.LisenceFile.rtf的安装文件,因为我的系统是个人的,而且free的,所以就没有做。这个以后也是要用到的。

二.在自己现有的项目里面创建部署项目:

1. 在“文件”菜单上指向“添加项目”,然后选择“新建项目”。(图1-2)

2. 在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“Web 安装项目”。在“名称”框中键入 Test Installer。(图1-3)

3. 单击“确定”关闭对话框。

4. 项目被添加到解决方案资源管理器中,并且文件系统编辑器打开。

5. 在“属性”窗口中,选择 ProductName 属性,并键入 GCRM。

(1-2)

(图1-3)其他项目的作用可以参考Webcast

三。将 VbNetTest项目的输出添加到部署项目中(假如你的虚拟目录是SQLANDASPNet)

1. 在“文件系统编辑器”中,选择“Web 应用程序文件夹"。在“操作”菜单上,指向“添加”,然后选择“项目输出”。(图1-4)

2. 在“添加项目输出组”对话框中,选择“项目”下拉列表中的“SQLANDASPNet”。

3. 单击“确定”关闭对话框。

4. 从列表中选择“主输出”和“内容文件”组,然后单击“确定”。(图1-5)

(图1-4)

(图1-5)其他的作用可以参考webcast,源文件就是所有项目的的文件

四. 创建自定义安装对话框

1. 在解决方案资源管理器中选择“Test Installer”项目。在“视图”菜单上指向“编辑器”,然后选择“用户界面”。 (图1-6)

2. 在用户界面编辑器中,选择“安装”下的“启动”节点。在“操作”菜单上,选择“添加对话框”。

3. 在“添加对话框”对话框中,选择“许可协议”对话框,然后单击“确定”关闭对话框。 (注:我没有添加,因为暂时我还是不需要,需要的要添加一下哦)

4. 在“添加对话框”对话框中,选择“文本框 (A)”对话框,然后单击“确定”关闭对话框。 (图1-7)

5. 在“操作”菜单上,选择“上移”。重复此步骤,直到“文本框 (A)”对话框位于“安装文件夹”节点之上。

6. 在“属性”窗口中,选择 BannerText 属性并键入:安装数据库.。

7. 选择 BodyText 属性并键入:安装程序将在目标机器上安装数据库。

8. 选择 Edit1Label 属性并键入:数据库名称:。

9. 选择 Edit1Property 属性并键入 CUSTOMTEXTA1。

10. 选择 Edit1Value 属性并键入:GsCrm。

11. 选择 Edit2Label 属性并键入:服务器名:。

12. 选择 Edit2Property 属性并键入 CUSTOMTEXTA2。

13. 选择 Edit2Value 属性并键入:(local)。

14. 选择 Edit3Label 属性并键入:用户名:。

15. 选择 Edit3Value 属性并键入:sa。

16. 选择 Edit3Property 属性并键入 CUSTOMTEXTA3。

17. 选择 Edit4Label 属性并键入:密码:。

18. 选择 Edit4Property 属性并键入 CUSTOMTEXTA4。

19. 选择 Edit2Visible、Edit3Visible ,并将它们设置为 False。(图1-8)

(图1-7)

(图1-8)

(五).创建自定义操作

1. 在解决方案资源管理器中选择“Test Installer”项目。在“视图”菜单上指向“编辑器”,然后选择“自定义操作”。(图1-9)

2. 在自定义操作编辑器中选择“安装”节点。在“操作”菜单上,选择“添加自定义操作”。

3. 在“选择项目中的项”对话框中,双击“应用程序文件夹”。

4. 选择“主输出来自 DBCustomAction(活动)”项,然后单击“确定”关闭对话框。

5. 在“属性”窗口中,选择 CustomActionData 属性并键入 /dbname=[CUSTOMTEXTA1] /server=[CUSTOMTEXTA2] /user=[CUSTOMTEXTA3] /pwd=[CUSTOMTEXTA4] /targetdir="[TARGETDIR]\"。 (图1-10)

附/targetdir="[targetdir]\"是安装后的目标路径,为了在dbcustomaction类中获得安装后的路径,我们设置此参数。

另外,安装后的路径也可以通过Reflection得到:

Dim Asm As System.Reflection.Assembly = _

System.Reflection.Assembly.GetExecutingAssembly

MsgBox("Asm.Location")

(图1-9)

(图1-10)

呵呵,已经好多了,剩下来的是关键性步骤,我花了好多时间研究。

(六)创建安装程序类

1. 在“文件”菜单上指向“新建”,然后选择“项目”。

2. 在“新建项目”对话框中,选择“项目类型”窗格中的“Visual Basic 项目”,然后选择“模板”窗格中的“类库”。在“名称”框中键入 DBCustomAction。

3. 单击“打开”关闭对话框。

4. 从“项目”菜单中选择“添加新项”。

5. 在“添加新项”对话框中选择“安装程序类”。在“名称”框中键入 DBCustomAction。

6. 单击“确定”关闭对话框。(图1-11,1-12)

注:这里是在原来的项目上建立一个简单的安装文件就可以了。

(图1-11)

添加后的效果图:

(图1-12)这里的sql文件是要等一下添加的

(七)

添加文件

1. 将SQL Server生成的脚本文件db.sql添加到“Test Installer”项目(图1-12)

2. 将安装文件LisenceFile.rtf添加到“Test Installer”项目

3. 在用户界面编辑器中,选择许可协议,设置LisenceFile属性为LisenceFile.rtf文件

(八)

一下的代码是整个部署的最重要的一部分了

将代码添加到安装程序类中,dbcustomaction.vb类

1Imports System.ComponentModel

2

3imports System.Configuration.Install

4

5imports System.IO

6

7imports System.Reflection

8

9

10

11<runinstaller(true)> Public Class DBCustomActionClass DBCustomAction

12

13inherits System.Configuration.Install.Installer

14

15

16

17组件设计器生成的代码#region "组件设计器生成的代码 "

18

19public Sub New()Sub New()

20

21mybase.new()

22

23'该调用是组件设计器所必需的

24

25initializecomponent()

26

27'在 InitializeComponent() 调用之后添加任何初始化

28

29end Sub

30

31' Installer 重写 dispose 以清理组件列表。

32

33protected Overloads Overrides Sub Dispose()Sub Dispose(ByVal disposing As Boolean)

34

35if disposing Then

36

37if Not (components Is Nothing) Then

38

39components.dispose()

40

41end If

42

43end If

44

45mybase.dispose(disposing)

46

47end Sub

48

49private components As System.ComponentModel.IContainer

50

51<system.diagnostics.debuggerstepthrough()> Private Sub InitializeComponent()Sub InitializeComponent()

52

53end Sub

54

55#end Region

56

57'执行sql 语句

58

59private Sub ExecuteSql()Sub ExecuteSql(ByVal conn As String, ByVal DatabaseName As String, ByVal Sql As String)

60

61dim mySqlConnection As New SqlClient.SqlConnection(conn)

62

63dim Command As New SqlClient.SqlCommand(Sql, mySqlConnection)

64

65command.connection.open()

66

67command.connection.changedatabase(databasename)

68

69try

70

71command.executenonquery()

72

73finally

74

75'close Connection

76

77command.connection.close()

78

79end Try

80

81end Sub

82

83public Overrides Sub Install()Sub Install(ByVal stateSaver As System.Collections.IDictionary)

84MyBase.Install(stateSaver)

85

86' ------------------------建立数据库-----------------------

87

88try

89

90dim connStr As String = String.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096", Me.Context.Parameters.Item("server"), Me.Context.Parameters.Item("user"), Me.Context.Parameters.Item("pwd"))

91

92'根据输入的数据库名称建立数据库

93

94executesql(connstr, "master", "CREATE DATABASE " + Me.Context.Parameters.Item("dbname"))

95

96'调用osql执行脚本

97

98dim sqlProcess As New System.Diagnostics.Process

99

100sqlprocess.startinfo.filename = "osql.exe "

101

102sqlprocess.startinfo.argum

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有