net打包自动安装数据库Word文档下载推荐.docx
- 文档编号:8563047
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:10
- 大小:18.17KB
net打包自动安装数据库Word文档下载推荐.docx
《net打包自动安装数据库Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《net打包自动安装数据库Word文档下载推荐.docx(10页珍藏版)》请在冰点文库上搜索。
从“项目”菜单中选择“添加新项”。
在“添加新项”对话框中选择“安装程序类”。
6.
7.
详细代码附后。
四).创建自定义安装对话框
在解决方案资源管理器中选择“setup1”项目。
在“视图”菜单上指向“编辑器”,然后选择“用户界面”。
在用户界面编辑器中,选择“安装”下的“启动”节点。
在“操作”菜单上,选择“添加对话框”。
在“添加对话框”对话框中,选择“许可协议”对话框,然后单击“确定”关闭对话框。
在“添加对话框”对话框中,选择“文本框(A)”对话框,然后单击“确定”关闭对话框。
在“操作”菜单上,选择“上移”。
重复此步骤,直到“文本框(A)”对话框位于“安装文件夹”节点之上。
在“属性”窗口中,选择BannerText属性并键入:
安装数据库.
选择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
五).创建自定义操作
在“视图”菜单上指向“编辑器”,然后选择“自定义操作”。
在自定义操作编辑器中选择“安装”节点。
在“操作”菜单上,选择“添加自定义操作”。
在“选择项目中的项”对话框中,双击“应用程序文件夹”。
选择“主输出来自installDB(活动)”项,然后单击“确定”关闭对话框。
在“属性”窗口中,选择CustomActionData属性并键入“/dbname=[CUSTOMTEXTA1]/server=[CUSTOMTEXTA2]/user=[CUSTOMTEXTA3]/pwd=[CUSTOMTEXTA4]/targetdir="
[TARGETDIR]\"
”。
附:
/targetdir="
是安装后的目标路径,为了在installDB类中获得安装后的路径,我们设置此参数。
六).打包時加入卸载功能:
方法一:
1.在打包項目中添加文件msiexec.exe(一般可在c:
\windows\system32\下找到)
2.在文件系統視圖中選擇應用程序文件夾,在msiexec.exe上按右鍵,選擇創建快捷方式,重命名快捷方式為"
卸载"
.
3.更改此快捷方式的Arguments为"
/x{產品id}"
產品id的值為打包項目的ProductCode屬性值.
方法二:
(推荐)
1.先生成安装包,记下ProductCode(选择解决方案资源管理器根目录如setup1,再查看属性标签,不是右键中的属性),下面要用到
2.用VS.net建立一个新的控制台程序uninst.exe文件
'
powerby:
landlordh
for2000,xp,2003
Moduleuninstall
SubMain()
DimmyProcessAsProcess=NewProcess
IfSystem.Environment.OSVersion.ToString.IndexOf("
NT5"
)Then
myProcess.Start("
msiexec"
"
/X{2B65D4A9-C146-4808-AB4B-321FB0779559}"
)
'
改为自己的ProductCode
EndIf
myProcess.Close()
EndSub
EndModule
3.将控制台程序BIN目录的exe文件加入到打包程序文件中,在程序组创建uninst.exe的快捷方式
installdb.vb类,要添加引用system.configuration.install.dll:
usingSystem;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Configuration.Install;
usingSystem.Reflection;
usingSystem.IO;
usingSystem.Data;
usingSystem.Data.SqlClient;
namespaceinstall
{
///<
summary>
///Installer1的摘要说明。
/summary>
[RunInstaller(true)]
publicclassInstaller1:
System.Configuration.Install.Installer
///必需的设计器变量。
privateSystem.ComponentModel.Containercomponents=null;
publicInstaller1()
//该调用是设计器所必需的。
InitializeComponent();
//TODO:
在InitializeComponent调用后添加任何初始化
}
///清理所有正在使用的资源。
protectedoverridevoidDispose(booldisposing)
if(disposing)
if(components!
=null)
components.Dispose();
base.Dispose(disposing);
#region组件设计器生成的代码
///设计器支持所需的方法-不要使用代码编辑器修改
///此方法的内容。
privatevoidInitializeComponent()
components=newSystem.ComponentModel.Container();
#endregion
private
stringGetSql(stringName)
{
//
//调用osql执行脚本
//
System.Diagnostics.ProcesssqlProcess=newSystem.Diagnostics.Process();
sqlProcess.StartInfo.FileName="
osql.exe"
;
sqlProcess.StartInfo.Arguments=String.Format("
-U{0}-P{1}-d{2}-i{3}db.sql"
this.Context.Parameters["
user"
],this.Context.Parameters["
pwd"
],"
master"
targetdir"
]);
sqlProcess.StartInfo.WindowStyle=System.Diagnostics.ProcessWindowStyle.Hidden;
sqlProcess.Start();
sqlProcess.WaitForExit();
//等待执行
sqlProcess.Close();
try
AssemblyAsm=Assembly.GetExecutingAssembly();
System.IO.FileInfoFileInfo=newSystem.IO.FileInfo(Asm.Location);
stringpath=FileInfo.DirectoryName+@"
\"
+Name;
stringpath=this.Context.Parameters["
]+Name;
FileStreamfs=newFileStream(path,FileMode.Open,FileAccess.Read,FileShare.Read);
StreamReaderreader=newStreamReader(fs,System.Text.Encoding.Default);
//System.Text.Encoding.ASCII;
returnreader.ReadToEnd();
}
catch(Exceptionex)
Console.Write("
InGetSql:
"
+ex.Message);
throwex;
privatevoidExecuteSql(stringDataBaseName,stringSql)
{
SqlConnectionsqlConnection1=newSqlConnection();
sqlConnection1.ConnectionString=string.Format("
server={0};
userid={1};
password={2};
Database=master"
this.Context.Parameters["
server"
],this.Context.Parameters["
System.Data.SqlClient.SqlCommandCommand=newSystem.Data.SqlClient.SqlCommand(Sql,sqlConnection1);
Command.Connection.Open();
Command.Connection.ChangeDatabase(DataBaseName);
Command.ExecuteNonQuery();
catch(Exceptionex)
Inexceptionhandler:
}
finally
Command.Connection.Close();
protectedvoidAddDBTable(stringstrDBName)
ExecuteSql("
"
CREATEDATABASE"
+strDBName);
ExecuteSql(strDBName,GetSql("
sql.txt"
));
execsp_addlogin'
myoamaster'
'
+strDBName+"
Null,Null"
);
ExecuteSql(strDBName,"
EXECsp_grantdbaccess'
'
execsp_addrolemember'
db_owner'
publicoverridevoidInstall(System.Collections.IDictionarystateSaver)
base.Install(stateSaver);
AddDBTable(this.Context.Parameters["
dbname"
这里有个sql.txt是数据库的sql脚本,当然可以调用osql来执行sql脚本,其实是一样的。
打包的时候必须把sql.txt文件加进来,否则不会执行。
如果你想附加数据库的mdf文件和ldf文件,用下面这段程序:
privatevoidCreateDataBase(stringstrSql,stringDataName,stringstrMdf,stringstrLdf)
Stringstr;
SqlConnectionmyConn=newSqlConnection(strSql);
//EXECsp_detach_db@dbname='
BX_FreightMileage_2'
//需要先将数据库分离出来
str="
EXECsp_attach_db@dbname='
+DataName+"
@filename1='
+strMdf+"
@filename2='
+strLdf+"
SqlCommandmyCommand=newSqlCommand(str,myConn);
myConn.Open();
myCommand.ExecuteNonQuery();
myConn.Close();
当然打包的时候也要把这两个数据库文件也加进来。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- net 打包 自动 安装 数据库
![提示](https://static.bingdoc.com/images/bang_tan.gif)