C# 创建安装程序Word文档格式.docx

上传人:b****5 文档编号:19827253 上传时间:2023-01-10 格式:DOCX 页数:19 大小:913.06KB
下载 相关 举报
C# 创建安装程序Word文档格式.docx_第1页
第1页 / 共19页
C# 创建安装程序Word文档格式.docx_第2页
第2页 / 共19页
C# 创建安装程序Word文档格式.docx_第3页
第3页 / 共19页
C# 创建安装程序Word文档格式.docx_第4页
第4页 / 共19页
C# 创建安装程序Word文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C# 创建安装程序Word文档格式.docx

《C# 创建安装程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《C# 创建安装程序Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

C# 创建安装程序Word文档格式.docx

这里不像webApplication那样有那么多的选项,只有内容文件,点击确定后生成,安装后是源文件,没有编译(原因尚不清楚)……这不行吧?

如果在用户机上没法编译,那这网站就跑不起来了。

在安装中你会发现下面这样的情况

看下标记的,全是setup,安装别的程序的时候都是显示的程序名或者公司信息之类,还有默认路径怎么是这样的呢?

这个这么改?

呵呵,切换回VS,然后选中setup项目,点击属性窗口

是那个红色的属性,不是右键属性,不一样的。

把这几个改改就好了,而且可以改别的,像“Description”的……

这样制作的安装包总感觉少点什么东西,用户安装之后还得自己去装数据库,改web.config文件。

仔细想想,感觉这个安装包就是个解压缩,它就是把编译好的文件拷贝了一份,有些活还得额外做,能不能在安装的时候把数据库建了。

O(∩_∩)O这个是可以的……

现在就说怎么把数据库给封进去,在解决方案上“新建项目”,选择“类库”,

把默认生成的class1.cs删除,新建“安装程序类”,

具体代码先不说,一会在说

在setup项目上,在添加个“视图”――“用户界面”,添加个对话框,这次选择“文本A”,之后在文本框A上右键――“属性窗口”,修改某些字段

标记的那几个名字是以后要用的“变量名”,根据自己的需要设置,这个是很灵活的,只是我这个对话框的目的就是获取跟数据库有关的数据,所以就这么写了。

这个界面跟写程序时用的控件的属性界面是一样的,做测试属性名,右侧是值。

其中带有Label就是让用户看的,而带有Property是以后在写代码的时候要用到的,这先做个记号,待会还得看上面那个图。

接下来在setup项目中“视图”——“自定义操作”

在自定义操作界面,选择“安装”,右键“添加自定义操作”,在弹出的窗口中双击“应用程序文件夹”,然后选择“添加输出”,在“项目”中选择“InstallClassLibruary”这个类库项目,之后选择“主输出”和“内容文件”,这样在“自定义操作界面”就多了个内容,

在那个多出来的项上右键选择属性,在CustomAction中填上 

/dbname=[DBNAME] 

/server=[SERVER] 

 

/user=[UNAME] 

/pwd=[PWD] 

/targetdir="

[TARGETDIR]"

最后一个带有“"

"

”注意,“[]”中间的是刚在文本框A的属性中带有Property那几项填写的的那几个,而这些“/”之后的则是在写程序中要用的,就是为了获取文本框中输入的值,targetdir是文件的安装路径,需要单独再加个双引号,这个是很有用的;

之后就到刚才建立的那个“安装程序类”里写代码了,看代码

Code

/// 

<

summary>

添加数据

/summary>

param 

name="

DataBaseName"

>

/param>

Sql"

private 

void 

ExecuteSql(string 

DataBaseName, 

string 

Sql)

{

SqlConnection 

sqlConnection 

new 

SqlConnection("

Data 

Source="

this.Context.Parameters["

server"

+

;

Initial 

Catalog=master;

Persist 

Security 

Info=True;

User 

ID="

user"

Password="

pwd"

);

System.Data.SqlClient.SqlCommand 

Command 

System.Data.SqlClient.SqlCommand(Sql, 

sqlConnection);

Command.Connection.Open();

Command.Connection.ChangeDatabase(DataBaseName);

try

Command.ExecuteNonQuery();

}

catch

finally

Command.Connection.Close();

创建数据库

strDBName"

protected 

AddDBTable(string 

strDBName) 

try 

ExecuteSql("

master"

"

CREATE 

DATABASE 

strDBName);

catch(Exception 

ee)

MessageBox.Show("

数据库创建失败!

您可以手动添加,但名称需要和刚才填写的数据库名称一致!

错误信息:

\n"

ee.Message,"

Error"

 

MessageBoxButtons.AbortRetryIgnore, 

MessageBoxIcon.Error, 

MessageBoxDefaultButton.Button1, 

0);

}

这个是新建数据库(注意只有数据库,没有表啊,间表得自己写),就是一般的方法,但仅仅这样是不行的,它没法执行,加上这个

public 

override 

Install(System.Collections.IDictionary 

stateSaver)

base.Install(stateSaver);

AddDBTable(this.Context.Parameters["

dbname"

]);

// 

updateWebConfig();

CreateVirtualDir();

这就可以执行了,把这个方法写到Install()里……

注意publicoverridevoidInstall(IDictionarystateSaver)这个,需要重写这个类,然后把你要执行的代码放在这个方法里,比方说

建立数据库,同时得修改Web.config文件吧,再写个修改web.config的方法,也放到Install里,就可以执行了。

注意到这个类中有“this.Context.Parameters["

]”的,这个就是刚才在自定义操作的“CustomAction”属性中那个字段,这样就可以把用户输入的信息获取到了。

回忆一下啊

第一:

“添加用户界面”,选择文本框,

第二:

为文本框中的带label和带property的字段赋值(如property为UNAME),

第三:

“自定义操作”,在属性窗口的“CustomAction”再次传递参数,如“/name=[UNAME]”,

第四:

在自定义操作类中,获取这个参数,如“this.Context.Parameters["

name"

]”,这样就可以在类中使用用户输入的数据了。

再附上两个方法,这个是修改web.config文件的(其实就是读取xml文件,然后修改一个节点的属性,需要添加命名空间System.XML)

updateWebConfig()

//加载配置文件

System.IO.FileInfo 

FileInfo 

System.IO.FileInfo(this.Context.Parameters["

targetdir"

/web.config"

if 

(!

FileInfo.Exists)

throw 

InstallException("

缺少配置文件 

:

System.Xml.XmlDocument 

xmlDocument 

System.Xml.XmlDocument();

xmlDocument.Load(FileInfo.FullName);

//修改连接字符串

foreach 

(System.Xml.XmlNode 

Node 

in 

xmlDocument["

configuration"

]["

connectionStrings"

])

(Node.Name 

== 

add"

(Node.Attributes.GetNamedItem("

).Value 

你在项目中使用的连接数据库字符串的名字"

Node.Attributes.GetNamedItem("

connectionString"

String.Format("

Source={0};

Catalog={1};

ID={2};

Password={3};

dserver, 

dbname, 

user, 

pwd);

xmlDocument.Save(FileInfo.FullName);

Web.config 

配置错误!

安装提示"

还有个生成虚拟目录的(先添加引用System.DirectoryServices,然后添加命名空间)

CreateVirtualDir()

constIISWebSiteRoot 

IIS:

//"

iis 

/W3SVC/1/ROOT"

DirectoryEntry 

root 

DirectoryEntry(constIISWebSiteRoot);

//判断虚拟目录是否已存在,存在就先删除再创建【不建议这么做,建议直接报个错就行】

Exist 

root.Children.Find(virtualdir, 

root.SchemaClassName);

(Exist 

!

null)

//删除虚拟目录

root.Children.Remove(Exist);

root.CommitChanges();

newRoot 

root.Children.Add(virtualdir, 

newRoot.Properties["

Path"

][0] 

physicaldir;

//设置物理地址

AppIsolated"

2;

值 

表示应用程序在进程内运行,值 

表示进程外,值 

表示进程池

AccessScript"

true;

可执行脚本

newRoot.Invoke("

AppCreate"

true);

//tbEntry.Properties["

DefaultDoc"

Default.aspx"

//设置起始页

AppFriendlyName"

virtualdir;

应用程序名

newRoot.CommitChanges();

虚拟目录创建失败!

再次生成看看,安装时就可以看到输入框了,数据库的数据也是有效的了……

这两段代码均是参考 

这里只是简单说了一下,还有些功能就没提,像修改注册表了(c/s用的比较多),添加桌面快捷方式,添加到快速启动栏等等,这些自己都去试试,对着那些项点击右键看看都有什么,都是什么,多摸索摸索……

最后再给个链接:

介绍了3种把数据库附件到安装程序里的,务必试试,刚我给的代码中只是见了个空库,没有表……

---------2009-10-29----- 

对创建虚拟目录的代码加以修改,主要原因是按照原先的代码发布后,IIS中ASP.NET的版本是1.1.4322,这样是无法访问的,需要改成2.0.50727,在网上搜索之后,用”ASP.NETIIS注册工具“可以实现,下面就多加了修改的代码(搜到网上的还是1.1的,后来改成2.0的了)

创建虚拟目录

IISServer"

start"

no"

Di

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1