VS制作安装包包含卸载程序Word文档格式.docx

上传人:b****6 文档编号:17443375 上传时间:2022-12-01 格式:DOCX 页数:13 大小:22.94KB
下载 相关 举报
VS制作安装包包含卸载程序Word文档格式.docx_第1页
第1页 / 共13页
VS制作安装包包含卸载程序Word文档格式.docx_第2页
第2页 / 共13页
VS制作安装包包含卸载程序Word文档格式.docx_第3页
第3页 / 共13页
VS制作安装包包含卸载程序Word文档格式.docx_第4页
第4页 / 共13页
VS制作安装包包含卸载程序Word文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

VS制作安装包包含卸载程序Word文档格式.docx

《VS制作安装包包含卸载程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《VS制作安装包包含卸载程序Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

VS制作安装包包含卸载程序Word文档格式.docx

IDS_CREATE_PROCESS_FAILURE=下列命令行的

CreateProcess操作失败:

%s。

IDS_INSUFFICIENT_PRIVILEGES=运行%s安装程序要求具有本地系统管理员的权限。

安装程序现在退出。

IDS_DIALOG_TEXT=单击”确定”开始安装%1。

单击”取消”退出安装。

IDS_ERROR_CAPTION=%s安装错误

IDS_VERSION_DETECT_FAILED=%1的版本检测失败。

请确保安装程序存在于指定位置。

%n%n返回消息:

%2

IDS_MSI_NOT_FOUND=无法定位产品安装程序’%s。

安装

程序现在退出。

IDS_REBOOT_QUERY=安装完成。

现在重启吗?

IDS_SETUP_SUCCEEDED=安装成功。

IDS_INVALID_LANGID_CAPTION=无效的语言包代码

IDS_FX_NOT_FOUND=无法定位.NETframeworkexe文件’%s。

IDS_INVALID_LANGID_MESSAGE=语言包代码%s无效。

跳过…

IDS_LANGPACK_NOT_FOUND=无法定位语言包%s。

安装程序现在退出。

IDS_MDAC_NOT_FOUND=无法定位MDACexe文件’%s。

IDS_FILE_NOT_FOUND=无法定位’%1安装程序现在退出。

Settings.ini文件内容如下:

[Bootstrap]

MsiPath=ItemSoft.msi—.msi安装文件

ProductName=中国亿万电器成套报价系统-安装产品名称

MdacVersion=2.71

BootstrapFx=true

FxInstallerPath=

LanguageID=2052

BootstrapLangPack=true

LangPackInstallerPath=

BootstrapMdac=true

MdacInstallerPath=

这种方法能够很简单的将.NetFramwork与你的应用程序一起打包到安装程序中,并且自动检测客机上的是否安装过.NetFramework,然后运行安装。

相信大家一定能够喜欢这个插件。

.Net程序打包安装与卸载制作——怎样在打包程序中自动安装SQLServer数据库(三)?

怎样在打包程序中自动安装SQLServer数据库?

1、创建安装项目“Setup1”安装项目在“文件”菜单上指向“添加项目”,然后选择“新建项目”。

在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。

在“名称”框中键入“setup1”。

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

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

在“属性”窗口中,选择ProductName属性,并键入”亿万电器成套报价系统”。

2、在安装项目中创建安装程序类(install.cs)。

添加创建数据库(InstallDatabase.txt)、删除数据库(DropDatabase.txt)、初始化数据基本数据

(InitializeData.txt)脚本文件,将属性“生成操作”设为“嵌入的资源”。

代码如下:

usingSystem;

usingSystem.Collections;

usingSystem.ComponentModel;

usingSystem.Configuration.Install;

usingSystem.Data;

usingSystem.Data.SqlClient;

usingSystem.IO;

usingSystem.Reflection;

usingSystem.Text.RegularExpressions;

usingSystem.Windows.Forms;

usingSystem.Text;

usingMicrosoft.Win32;

namespaceinstall

{

///

///Installer的摘要说明。

[RunInstaller(true)]

publicclassInstaller:

System.Configuration.Install.Installer{

///必需的设计器变量。

stringconStr=”packetsize=4096;

integrated

security=SSPI;

”+

“datasource=/”(local)/”;

persistsecurityinfo=False;

“initialcatalog=master;

connecttimeout=300;

RijndaelCryptographyrijndael=new

RijndaelCryptography();

privateSystem.ComponentModel.Containercomponents=

null;

publicInstaller()

//该调用是设计器所必需的。

InitializeComponent();

//TODO:

在InitializeComponent调用后添加任何初始化

}

///清理所有正在使用的资源。

protectedoverridevoidDispose(booldisposing)

if(disposing)

if(components!

=null)

components.Dispose();

}base.Dispose(disposing);

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

///设计器支持所需的方法-不要使用代码编辑器修改

///此方法的内容。

privatevoidInitializeComponent()

components=newSystem.ComponentModel.Container();

}

#endregion

#region重载自定义安装方法

protectedoverridevoidOnBeforeInstall(IDictionarysavedState)

{base.OnBeforeInstall(savedState);

publicoverridevoidInstall(IDictionarystateSaver){

base.Install(stateSaver);

stringdatabaseServer=

Context.Parameters[”server”].ToString();

stringuserName

=Context.Parameters[

”user”].ToString();

stringuserPass=

Context.Parameters[

”pwd”].ToString();

stringtargetdir=

this.Context.Parameters[”targetdir

”].ToString();

conStr=

GetLogin(databaseServer,userName,userPass,”master”);

SqlConnectionsqlCon=newSqlConnection();

try

sqlCon.ConnectionString=conStr;

sqlCon.Open();

rijndael.GenKey();

rijndael.Encrypt(conStr);

stateSaver.Add(”key”,rijndael.Key);

stateSaver.Add(”IV”,rijndael.IV);

stateSaver.Add(”conStr”,rijndael.Encrypted);

ExecuteSql(sqlCon,”InstallDatabase.txt”);

ExecuteSql(sqlCon,”InitializeData.txt”);

if(sqlCon.State!

=ConnectionState.Closed)sqlCon.Close();

catch(SqlException)

MessageBox.Show(”安装失败!

/n数据库配置有误,请正确配置信息!

”,”错

误”,MessageBoxButtons.OK,MessageBoxIcon.Error);

=ConnectionState.Closed)sqlCon.Close();

this.Rollback(stateSaver);

protectedoverridevoidOnAfterInstall(IDictionary

savedState)

base.OnAfterInstall(savedState);

publicoverridevoidRollback(IDictionarysavedState)

base.Rollback(savedState);

publicoverridevoidUninstall(IDictionarysavedState)

base.Uninstall(savedState);

if(savedState.Contains(”conStr”))

this.Context.Parameters[”targetdir”].ToString();

RijndaelCryptographyrijndael=newRijndaelCryptography();

conStr”]);

rijndael.Key=(byte[])savedState[”key”];

rijndael.IV=(byte[])savedState[”IV”];

conStr=rijndael.Decrypt((byte[])savedState[”SqlConnectionsqlCon=newSqlConnection(conStr);

ExecuteDrop(sqlCon);

#region数据操作方法

//从资源文件获取中数据执行脚本

privatestaticstringGetScript(stringname)

Assemblyasm=Assembly.GetExecutingAssembly();

Streamstr=asm.GetManifestResourceStream(asm.GetName().Name

+“.”+name);

StreamReaderreader=new

StreamReader(str,System.Text.Encoding.Default);

System.Text.StringBuilderoutput=newSystem.Text.StringBuilder();

t■I■“”

stringline=“”;

while((line=reader.ReadLine())!

=null)

output.Append(line+“/n”);

returnoutput.ToString();

//获取数据库登录连接字符串

privatestaticstringGetLogin(stringdatabaseServer,stringuserName,stringuserPass,stringdatabase){

return“server=”+databaseServer+

“;

database=”+database+”;

UserID=”+userName+“;

Password=”+userPass+”;

connecttimeout=300;

//执行数据库脚本方法privatestaticvoidExecuteSql(SqlConnectionsqlCon,stringsqlfile)

string[]SqlLine;

Regexregex=new

Regex(”AGO?

RegexOptions」gnoreCase|

RegexOptions.Multiline);

stringtxtSQL=GetScript(sqlfile);

SqlLine=regex.Split(txtSQL);

sqlCon.Open();

SqlCommandcmd=sqlCon.CreateCommand();

cmd.Connection=sqlCon;

foreach(stringlineinSqlLine)

if(line.Length&

gt;

0)

cmd.CommandText=line;

cmd.CommandType=CommandType.Text;

{cmd.ExecuteNonQuery();

catch(SqlExceptionex)

//rollback

stringss=ex.Message;

ExecuteDrop(sqlCon);

break;

//删除数据库

privatestaticvoidExecuteDrop(SqlConnectionsqlCon)

{if(sqlCon.State!

cmd.CommandText=GetScript(”DropDatabase.txt”);

cmd.CommandType=CommandType.Text;

cmd.ExecuteNonQuery();

sqlCon.Close();

单击“生成”菜单下“生成解决方案”,生成nstall.dll安装类文件。

3、将“主程序”项目的输出添加到部署项目中在“文件系统编辑器”中,选择“应用程序文件夹”,单击右键指向“添加”,添加“项目输出”。

在“添加项目输出组”对话框中,选择“项目”下拉表框中选择你的主安装程序类,如上面的“install”。

从列表框中选择“主输出”组,然后单击“确定”关闭。

4、创建自定义安装对话框在解决方案资源管理器中选择安装项目“Setup1”项目在,“视图”菜单上指向“编辑器”,然后选择“用户界面”。

在用户界面编辑器具中,选择“安装”下的“启动”节点。

在“操作”菜单上,选择“添加对话框”。

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

在“操作”菜单上,选择“上移”,重复此步骤,移到“安装文件夹”上。

在“文本框(A)”上单击“属性窗口”,设置如下图所示:

5、建自定义操作

在解决方案资源管理器中选择安装项目“Setup1”项目在,“视图”菜单上指向“编辑器”,然后选择“自定义操作”。

在“自定义操作编辑器”中选择“安装”节点。

单击右键“添加自定义操作”,在选择项目中的项中选择“应用程序文件夹”,选择“主输出来自install(活动)”。

在“属性窗口”中选择“CustomActionData”属性并键入“/server=[EDITA1]/user=[EDITA2]/pwd=[EDITA3]/targetdir=”[TARGETDIR]/””。

附:

/targetdir=”[TARGETDIR]/”是安装后的目标路径为,了在

install类中获得安装后的路径,我们设置此参数。

单击“生成”菜单下的“生成解决方案”,编译安装项目。

.Net程序打包安装与卸载制作——怎样将MSDESp3打包

进.Net安装项目中?

(四)

怎样将MSDESp3打包进.Net安装项目中?

1、创建安装项目“Setup1”安装项目在“文件”菜单上指向“添加项目”,然后选择“新建项目”。

2、下载MSDESp3安装程序与MSI安装文件修改器(Orca)工具。

3、选择“文件系统编辑器”,在“视图“菜单上指向“添加”,然

后选择“合并模块…”(MergeMoudle),在添加模块中,找到

MSDEsp3安装文件所在目录,将MSM和MSM/1033下的所有文件,添加进来。

在安装项目Setupl的属性(Properties)中的“SearchPath”添加MSM和MSM/1033目录。

单击“生成菜单下的“生成解决方案”,编译Setup1安装项目工程。

用OrcaMSI安装文件修改器打开生成的安装包(Setup1.msi)

文件,在左列的表栏中

选择“InstallExecuteSequence”表,修改下面的属性值:

GetSqlStates.XXXXXX103改成421

RemoveExistingProducts值改成1800

InstallInitialize值改成1799

在InstallUISequence

选择“InstallUISequence”表,修改下面的值:

选择“Property”表,添加以下三个属性:

SqlInstanceName:

MSDEDH实例服务名

SqlSecurityMode:

SQL(不加这行确实也行,就是没办法

用SQL模式登录)

SqlSaPwd:

sa的密码

连接测试:

单击修改过的Setup1.msi安装文件,确认是否能够安装;

osql-S机器名/MSDEDH实例服务名-Usa-Psa密码能够进去——&

OK!

打包成功!

.Net程序打包安装与卸载制作——怎样将MDAC打包

(五)

在“解决方案资源管理器”选择Setup1安装项目工程,选择“视图”菜单,指向“启动条件”,打开“启动条件”管理器。

在”启动条件”管理器中,右键点击”目标计算机上的要求”,在弹出的的菜单中选择”添加注册表启动条件”。

你会发现在”搜索目标计算机”中多了一项”搜索RegistryEntryl在”启动条件”中多了一项”Conditionl〃。

选择”搜索RegistryEntryl在,属性”对话框中填写如下内容:

Property:

MDACSEARCH

RegKey:

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

当前位置:首页 > 外语学习 > 英语考试

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

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