- 浏览: 33500 次
- 性别:
- 来自: 北京
最新评论
最近在忙于打包安装程序,使用的是InstallShield 15,打包过程遇到了一个小问题(怀疑是InstallShield 15 的bug),却耗了我一个晚上的时间才把这个问题解决。
使用InstallShield创建用于搭建ASP.NET网站的安装程序时,需要对web.config里的属性值作一些改变,比如Connection String,需要改成:
Data Source=[IS_SQLSERVER_SERVER];DataBase=[IS_SQLSERVER_DATABASE];uid=[IS_SQLSERVER_USERNAME];pwd=[IS_SQLSERVER_PASSWORD]
其中IS_SQLSERVER_SERVER、IS_SQLSERVER_DATABASE、IS_SQLSERVER_USERNAME、IS_SQLSERVER_PASSWORD是安装过程中用户输入的Property值。为了实现web.config的改变,可以使用InstallShield里的XML Files Changes,但是我发现了一个问题,按照数据库默认值,用户名是sa,密码是空,如果直接将上面所说的Connection String直接填到Attribute为connectionString的Value中时,由于IS_SQLSERVER_PASSWORD是空值,最终的安装结果,在web.config里的是:connectionString=””,全变空了?但如果不加上“pwd=[IS_SQLSERVER_PASSWORD]”时却一切正常,也就是说,由于Property为空时,会导致整个Value都变为空。我怀疑是InstallShield 15的一个bug。
最后的解决方案如下:
第一步:
在Property Manager中新建一个Property:[CONNECTION_STRING],并在XML Files Changes里添加web.config,在configuration->connectionStrings-> add[@connectionString="Data Source=;DataBase=;uid=sa;pwd=" and @name="DBStr"]里,添加一项,Attribute:connectionString,Value为刚才创建的Property:[CONNECTION_STRING]
第二步:
在InstallScript中添加脚本:
function ChangeProperty(hMSI)
STRING svConStr,svServer,svDBName,svUID,svPWD;
NUMBER nRet;
begin
nRet=128;
MsiGetProperty(hMSI,"IS_SQLSERVER_SERVER",svServer,nRet);
MsiGetProperty(hMSI,"IS_SQLSERVER_DATABASE",svDBName,nRet);
MsiGetProperty(hMSI,"IS_SQLSERVER_USERNAME",svUID,nRet);
MsiGetProperty(hMSI,"IS_SQLSERVER_PASSWORD",svPWD,nRet);
svConStr="Data Source="+svServer+";DataBase="+svDBName+";uid="+svUID+";pwd="+svPWD;
MsiSetProperty(hMSI,"CONNECTION_STRING",svConStr);
end;
第三步:
在Custom Actions and Sequences中添加新的Action,比如叫做SetConnetionString,Function Name为ChangeProperty,并将其执行顺序设置为After InstallInitialize。
最后一切大功告成!经实验,结果connectionString的值正是预期的那样,如:connectionString=” Data Source=SQLSERVER;DataBase=DB;uid=sa;pwd=”
使用InstallShield创建用于搭建ASP.NET网站的安装程序时,需要对web.config里的属性值作一些改变,比如Connection String,需要改成:
Data Source=[IS_SQLSERVER_SERVER];DataBase=[IS_SQLSERVER_DATABASE];uid=[IS_SQLSERVER_USERNAME];pwd=[IS_SQLSERVER_PASSWORD]
其中IS_SQLSERVER_SERVER、IS_SQLSERVER_DATABASE、IS_SQLSERVER_USERNAME、IS_SQLSERVER_PASSWORD是安装过程中用户输入的Property值。为了实现web.config的改变,可以使用InstallShield里的XML Files Changes,但是我发现了一个问题,按照数据库默认值,用户名是sa,密码是空,如果直接将上面所说的Connection String直接填到Attribute为connectionString的Value中时,由于IS_SQLSERVER_PASSWORD是空值,最终的安装结果,在web.config里的是:connectionString=””,全变空了?但如果不加上“pwd=[IS_SQLSERVER_PASSWORD]”时却一切正常,也就是说,由于Property为空时,会导致整个Value都变为空。我怀疑是InstallShield 15的一个bug。
最后的解决方案如下:
第一步:
在Property Manager中新建一个Property:[CONNECTION_STRING],并在XML Files Changes里添加web.config,在configuration->connectionStrings-> add[@connectionString="Data Source=;DataBase=;uid=sa;pwd=" and @name="DBStr"]里,添加一项,Attribute:connectionString,Value为刚才创建的Property:[CONNECTION_STRING]
第二步:
在InstallScript中添加脚本:
function ChangeProperty(hMSI)
STRING svConStr,svServer,svDBName,svUID,svPWD;
NUMBER nRet;
begin
nRet=128;
MsiGetProperty(hMSI,"IS_SQLSERVER_SERVER",svServer,nRet);
MsiGetProperty(hMSI,"IS_SQLSERVER_DATABASE",svDBName,nRet);
MsiGetProperty(hMSI,"IS_SQLSERVER_USERNAME",svUID,nRet);
MsiGetProperty(hMSI,"IS_SQLSERVER_PASSWORD",svPWD,nRet);
svConStr="Data Source="+svServer+";DataBase="+svDBName+";uid="+svUID+";pwd="+svPWD;
MsiSetProperty(hMSI,"CONNECTION_STRING",svConStr);
end;
第三步:
在Custom Actions and Sequences中添加新的Action,比如叫做SetConnetionString,Function Name为ChangeProperty,并将其执行顺序设置为After InstallInitialize。
最后一切大功告成!经实验,结果connectionString的值正是预期的那样,如:connectionString=” Data Source=SQLSERVER;DataBase=DB;uid=sa;pwd=”
发表评论
-
动态生成WORD内容
2009-09-15 14:12 979//动态生成WORD内容 St ... -
页面静态化
2009-09-03 10:25 12821替代法 1.1引用地址 http://www.cnbl ... -
面试
2009-08-18 13:09 23381.简述 private、 protected、 public ... -
批量写数据---将XML数据批量写入数据库
2009-08-18 13:06 1891将数据批量写入数据库的需求是比较多的,方法也有很多种,在.ne ... -
更改 Visual Studio 中用户界面文本所使用的语言
2009-08-06 21:26 1736在“工具”菜单中单击“选项”。 在“选项”对话框中展开“环境 ... -
Visual Studio 2005 图像库
2009-08-06 21:22 1141Visual Studio 2005 图像库是 ... -
SSO与用户登录问题容易混淆
2009-08-01 13:02 946单点登陆(SSO),多个系统一次登陆权限均配, 彼此 ... -
.NET设计模式开篇
2009-07-03 23:58 842这几天在看设计模式方面的书,所以记录一下. 1.设计模式是规则 ... -
NET安装模板
2009-06-02 19:52 798菜单->Tools->option->pro ... -
Visual Studio小技巧:复制代码时,保留原ID
2009-05-10 13:40 1173在我们开发过程中,经常会复制一些代码,而Visual Stud ... -
C#操作数据库备份和还原
2009-04-28 11:11 2393C#实现SQLSERVER2000数据库备份还原的两种方法 ... -
FreeTextBox 1.6.3 (中文版)在新闻发布、博客写作、论坛社区等多种 Web 系统中都
2009-03-29 16:20 2287FreeTextBox 1.6.3 (中文版) ... -
C#编写最小化时隐藏为任务栏图标的Window appllication
2009-03-29 16:14 23411.设置窗体属性showinTask=false 2.加no ... -
WEB技巧[搜集整理]
2009-03-29 16:10 728http://www.logomaker.cn 控制横向和 ... -
漂亮的 js 日历(把日期输入到文本框)
2009-03-29 16:07 1393<!DOCTYPE HTML PUBLIC &quo ... -
.Net 图片上传的一个类库的源码
2009-03-29 16:05 1333上传图片到服务器上是网站开发中很常用的功能,它的实现也很简单, ... -
VS2005下为ASP.NET 2.0网站生成唯一程序集
2009-03-29 16:00 1769我的新闻管理系统http://cms.bmw.net.cn/I ... -
页面间传值的方法总结
2009-02-20 14:54 996ASP.NET提供了卓越的事件驱动编程模型,让开发者简化了应用 ... -
无法将类型“ASP.login_aspx”转换为“System.Web.UI.WebControls
2009-02-20 11:18 1453发布网站里遇到,无法将类型“ASP.login_aspx”转换 ... -
VSS使用过程中的问题
2008-12-20 11:46 1025VSS客户端不能访问问题“unable to open use ...
相关推荐
首先,"InstallShield自定义对话框浅谈.rar"可能包含有关如何在InstallShield中创建和定制安装过程中的对话框的信息。自定义对话框允许开发者根据项目需求添加额外的输入字段、按钮或图形元素,以提供更个性化的用户...
然后在Installshield项目中引用这个皮肤文件,生成安装包并进行测试,确保所有界面元素在实际运行中能正常显示和交互。 6. **打包和发布**:最后,如果你满意于制作的皮肤,可以将其打包,与其他安装包文件一起分发...
对于需要修改XML配置文件的项目,InstallShield提供了XML File Changes视图。这允许开发者编辑目标系统上的任何XML文件,如web.config和machine.config这样的关键配置文件。 **创建快捷方式和程序文件夹** ...
在这个案例中,"InstallShield 2011汉化补丁"是用于将InstallShield 2010的界面语言更改为简体中文的关键文件。值得注意的是,汉化补丁不仅需要包含所有界面元素的中文翻译,还需要确保这些改动不会影响软件的正常...
“配置目标系统”部分讲述了如何通过InstallShield调整用户的系统设置,例如设置环境变量、创建快捷方式或者修改注册表。这有助于确保软件能在用户系统上正确运行。 在“配置服务(二)COM+”和“配置服务(三)...
在InstallShield 2010及更高版本中,可以通过过滤器快速定位这两个控件。 3. 修改`Branding1`的`Attributes`列的值,将其从3改为2。同时,将`Branding2`的值从65537改为65536。这两个值的更改将影响界面的显示效果,...
1. 启动Installshield 12,选择“新建”项目,然后在项目模板中选择“Basic MSI项目”。这个模板包含了创建标准MSI安装包所需的基本组件和设置。 2. 配置项目属性:输入产品名称、公司信息、版本号等关键信息,这些...
在2021版本中,InstallShield进一步提升了其功能性和易用性,为软件发布者提供了更完善的解决方案。 补丁(Patch)是软件更新的一种形式,用于修复程序中的错误、漏洞或增加新特性。对于InstallShield2021而言,...
InstallShield-常用prq文件 SetupPrerequisites Microsoft .NET Framework.prq Microsoft .NET Framework 4.5 Full.prq Microsoft .NET Framework 4.5.2 Full.prq Microsoft .NET Framework 4.7.2 Full.prq ...
本文将针对"InstallShield 2010汉化"这一主题,详细探讨其汉化过程、汉化的重要性以及在实际应用中的注意事项。 一、InstallShield 2010汉化介绍 InstallShield 2010汉化包的出现,旨在为中文用户解决语言障碍,...
在本文中,我们将深入探讨InstallShield的基本概念、功能以及如何使用它来构建安装项目。 1. **InstallShield简介** InstallShield是由Flexera Software公司开发的软件打包工具,它支持多种安装项目类型,包括基本...
7. **响应文件**:在某些情况下,可以创建响应文件来收集用户输入的信息,如数据库连接字符串、服务器端口等,以便在安装过程中使用。 8. **发布和测试**:最后,生成安装包并进行测试,确保在目标系统上能正确无误...
InstallShield支持多种安装类型,包括典型、最小和自定义安装类型,用户可以在安装类型对话框中选择相应的安装类型。 知识点2:InstallScript项目 ------------------------- InstallScript是一个InstallShield...
InstallShield还包括支持MSI 3.0,自动的XML文件设置更新和Trialware功能,允许开发者增加强大而且灵活的功能到他们的安装项目中(InstallShield Premier Edition Only)。 注:把文件解压后放到“\InstallShield\...
InstallShield6.22中文语言包,当然同时也包括日语韩语以及繁体简体中文,安装后制作的软件就可以选择中文显示了。
InstallShield内部库函数全集一(中文版) InstallShield内部库函数全集二(中文版) InstallShield内部库函数全集三(中文版) InstallShield内部库函数全集四-Sd对话框函数(中文版) InstallShield内部库函数...
或直接单击 Installation Designer 页面,选中 Application Data 下的 Files and Folders,在 Destination computer’s folders 中选中不要被卸载的组件,右击选择 Properties 在弹出的对话框中勾上 Permanent 复选...
在 Installshield 12 中,配置目标系统主要包括以下几个关键方面: ##### 1. 快捷方式 - **简介**:快捷方式是一种方便用户快速访问安装程序的方法。它可以放置在桌面、开始菜单或其他自定义位置。 - **适用范围**...
**InstallShield** 是一款广受好评的安装程序创建工具,被广泛应用于商业软件的安装盘制作中,如知名的 Norton AntiVirus 2000。其受欢迎的原因在于它强大的功能集和灵活性,包括但不限于: - **注册表修改**:允许...