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