.Net Web项目安装包制作(三)补充说明
这一节只是补充说明一下。
一、 安装标题
按照前面的做法中,在安装过程中,如下图
安装的标题是HxjWebSteup,这样的标题和产品名称显然是无法再实际项目中使用的。
这里我们需要通过设置安装项目的属性来设置一下就可以,选中HxjWebSetup项目按F4出来属性窗口,这个和右击项目属性是不一样的。如下图:
我们修改一下ProductName这个属性,变成Steven hu ProductName
我们再来看看安装过程,如下图:
我们想要的效果已经达到了,安装标题和产品名称都已经修改。
二、附加数据库
在第二节中有提到可以使用直接附加数据库文件的形式来完成我们项目数据库的创建安装。
其实我们平时经常使用企业管理器来附加数据库,当然我们也可以执行数据库的系统存储过程来完成该项操作。
sp_attach_db 存储过称,我们首先来看一下帮助文档中解释;
sp_attach_db
将数据库附加到服务器。
语法
sp_attach_db [ @dbname= ] 'dbname'
,
[ @filename1 = ] 'filename_n' [ ,...16 ]
参数
[@dbname =] 'dbname'
要附加到服务器的数据库的名称。该名称必须是唯一的。dbname 的数据类型为 sysname,默认值为 NULL。
[@filename1 =] 'filename_n'
数据库文件的物理名称,包括路径。filename_n 的数据类型为 nvarchar(260),默认值为 NULL。最多可以指定 16 个文件名。参数名称以 @filename1 开始,递增到 @filename16。文件名列表至少必须包括主文件,主文件包含指向数据库中其它文件的系统表。该列表还必须包括数据库分离后所有被移动的文件。
下面我们来具体实现一下,
首先将数据库文件放到web项目app_data文件夹下,如下图:
接下来,修改安装类中的代码,如下:
/// <summary> /// 安装 /// </summary> /// <param name="stateSaver"></param> public override void Install(IDictionary stateSaver) {base.Install(stateSaver);string connectionString = GetConnectionString(null);try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string sql = "sp_attach_db 'HxjDB','" + Context.Parameters["targetdir"].ToString() + "App_Data/HxjDB_Data.MDF','"+ Context.Parameters["targetdir"].ToString() + "App_Data/HxjDB_Log.LDF'"; ExecuteSQL(connection, sql);//ExecuteSQL(connection, GetResource("createdatabase.sql"));}}catch (Exception ex){MessageBox.Show("数据库安装失败!\n数据库配置有误,请正确配置信息!\n" + ex.Message, "出错啦!");this.Rollback(stateSaver);} }
其他没有改变,然后就重新打包。
然后安装,在web项目下的数据库就会被附加上去。
三、卸载
在示例中的做法在安装的时候是没有问题的,在卸载或者修复的时候,
/// <summary> /// 获取数据库登录连接字符串 /// </summary> /// <param name="databasename">数据库名称</param> /// <returns></returns> private string GetConnectionString(string databasename) {return "server=" + Context.Parameters["server"].ToString() + ";database=" + (string.IsNullOrEmpty(databasename) ? "master" : databasename) + ";User ID=" + Context.Parameters["user"].ToString() + ";Password=" + Context.Parameters["pwd"].ToString(); }
这里是无法获取正确的链接字符串,Context.Parameters["server"] 这些都已经不存在了,所以要想在卸载和修复的时候都可以用,则需要在安装的时候保存连接字符串。
保存的位置和方式可根据自己的喜好存储,毕竟连接字符串不是机密,自己方便自己就好了。
要想卸载的时候执行UnInstall方法,需要在安装项目中自定义操作中的卸载添加HxjDBInstall。如下图:
本节完。
.Net Web项目安装包制作(三)补充说明相关推荐
- 【Inno Setup】安装包制作,项目打包方案
系列文章 MySQL安装教程(详细) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/126037520 MySQL卸载教程(详细) 本文 ...
- C#软件winform程序安装包制作
转自:http://jingyan.baidu.com/article/b2c186c8e26f2ac46ef6ff3a.html 使用vs2010 winform程序开发的软件的人比较多,程序的开发 ...
- 【转】VS2010安装包制作
最近对软件安装包制作研究了一下,下面记录了一种比较简单,不用写代码的方法. 1.New Project---->Other Project Types ---->Visual Studio ...
- 魅族M8软件之CAB安装包制作篇
研究了好几天QT-WINCE程序编写,终于有点眉目了,有点小兴奋,可是还有个问题就是怎么进行打包发布啊?? 随兴上网上找了下,还真有 ,不过有的说的让人头晕目眩的,分不清头绪,幸运的是我终于找到了个带 ...
- 安装包制作软件 -- CreateInstall free安装及使用
一.引言 假设您有一个应用程序,并且您想要创建一个安装程序,用户可以使用该程序将您的程序安装到他们的计算机上.在这里,我们将考虑最简单的选项,在该选项中需要将程序安装到用户指定的目录中并创建快捷方 ...
- QT:自带框架安装包制作
目录 Qt Installer Framework 概述 下载Qt Installer Framework 安装Qt Installer Framework 创建安装包程序 Qt Installer ...
- 安装包UI美化之路-nsNiuniuSkin安装包制作可视化配置向导
这篇文章应该说是上一篇<安装包UI美化之路-nsNiuniuSkin安装包制作配置说明>的延伸,在python命令行接口的基础上,支持可视化的配置界面与说明! 一直以来,nsNiuniuS ...
- python制作安装包_Python简单安装包制作
Python 简单安装包制作 Python egg制作(安装出问题) 项目目录下创建 setup.py 文件, 目录与内容如下举例 ~/vomm$ tree . ├── LICENSE ├── MAN ...
- 安装包制作工具 SetupFactory使用1 详解
Setup Factory 是一个强大的安装程序制作工具.提供了安装制作向导界面,即使你对安装制作不了解,也可以生成专业性质的安装程序.可建立快捷方式,也可直接在 Windows 系统的注册表加入内容 ...
最新文章
- 五百字简文告诉你美国为何要倾一国之力对中国的一家民营企业华为痛下杀手?...
- BIOS不支持导致Linux内核耗电增加
- 玩英雄联盟手游,谁才是新手最喜欢的英雄?无极剑圣还是吗?
- 文献记录(part42)--An end-to-end framework for unconstrained monocular 3D hand pose estimation
- Maven实战. 1.3Maven与极限编程
- 2019昆明计算机会议,计算机 | ACSAC 2019等国际会议信息6条
- Mybatis源码笔记之浅析StatementHandler
- 初始化跟路由相关的定时器
- 海龟交易法则05_掌握优势
- github-新建文件夹
- arduino 实现时钟和计算器
- 【Git命令】git commit --amend
- 最新影视双端app对接苹果cms+详细安装教程
- java毕业设计——基于Java+Socket的视频会议系统设计与实现(毕业论文+程序源码)——视频会议系统
- MSP430单片机:时钟系统(UCS 模块)
- 私有云 虚拟服务器 区别,虚拟主机介绍 虚拟主机是不是私有云
- 3D渲染技术分享:用实时反射Shader增强画面颜值
- 三极管晶体管-2个NPN三极管组成的恒流电路
- 码农的自我修养 - 指令集架构种类
- win10系统修改hosts文件无法保存
热门文章
- toString,toLocaleString,valueOf的不同
- Nginx+ThinkPHP不支持PathInfo的解决办法
- 【C/C++学院】0831-类与对象的异常/面试100题1-100
- 通过委派模式包装一个RxJavaCallAdapterFactory
- 国内IT出版社的四大软肋
- 【跃迁之路】【732天】程序员高效学习方法论探索系列(实验阶段489-2019.2.22)...
- C++ 虚函数表解析
- 全局拖拽上传文件(类似百度网盘)的实现及踩坑
- bash脚本之for语句if语句以及各种测试语句(2)
- linux 下获取程序的绝对路径