`
chenqingwei
  • 浏览: 33500 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在InstallShield中手动修改XML Files Changes

    博客分类:
  • NET
阅读更多
最近在忙于打包安装程序,使用的是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中文技术论坛

    首先,"InstallShield自定义对话框浅谈.rar"可能包含有关如何在InstallShield中创建和定制安装过程中的对话框的信息。自定义对话框允许开发者根据项目需求添加额外的输入字段、按钮或图形元素,以提供更个性化的用户...

    Installshield 皮肤制作修改器

    然后在Installshield项目中引用这个皮肤文件,生成安装包并进行测试,确保所有界面元素在实际运行中能正常显示和交互。 6. **打包和发布**:最后,如果你满意于制作的皮肤,可以将其打包,与其他安装包文件一起分发...

    Installshield 12 中文系列教程之 配置目标系统

    对于需要修改XML配置文件的项目,InstallShield提供了XML File Changes视图。这允许开发者编辑目标系统上的任何XML文件,如web.config和machine.config这样的关键配置文件。 **创建快捷方式和程序文件夹** ...

    InstallShield 2010简体中文汉化包

    在这个案例中,"InstallShield 2011汉化补丁"是用于将InstallShield 2010的界面语言更改为简体中文的关键文件。值得注意的是,汉化补丁不仅需要包含所有界面元素的中文翻译,还需要确保这些改动不会影响软件的正常...

    InstallShield12中文教程

    “配置目标系统”部分讲述了如何通过InstallShield调整用户的系统设置,例如设置环境变量、创建快捷方式或者修改注册表。这有助于确保软件能在用户系统上正确运行。 在“配置服务(二)COM+”和“配置服务(三)...

    关于installshield,去除安装界面左下角的InstallShield标识Basic MS

    在InstallShield 2010及更高版本中,可以通过过滤器快速定位这两个控件。 3. 修改`Branding1`的`Attributes`列的值,将其从3改为2。同时,将`Branding2`的值从65537改为65536。这两个值的更改将影响界面的显示效果,...

    Installshield 12 中文教程

    1. 启动Installshield 12,选择“新建”项目,然后在项目模板中选择“Basic MSI项目”。这个模板包含了创建标准MSI安装包所需的基本组件和设置。 2. 配置项目属性:输入产品名称、公司信息、版本号等关键信息,这些...

    InstallShield2021+补丁

    在2021版本中,InstallShield进一步提升了其功能性和易用性,为软件发布者提供了更完善的解决方案。 补丁(Patch)是软件更新的一种形式,用于修复程序中的错误、漏洞或增加新特性。对于InstallShield2021而言,...

    installshield中常用的prq文件

    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 2010汉化包的出现,旨在为中文用户解决语言障碍,...

    InstallShield使用指南.files.rar

    在本文中,我们将深入探讨InstallShield的基本概念、功能以及如何使用它来构建安装项目。 1. **InstallShield简介** InstallShield是由Flexera Software公司开发的软件打包工具,它支持多种安装项目类型,包括基本...

    InstallShield 12 中文教程

    7. **响应文件**:在某些情况下,可以创建响应文件来收集用户输入的信息,如数据库连接字符串、服务器端口等,以便在安装过程中使用。 8. **发布和测试**:最后,生成安装包并进行测试,确保在目标系统上能正确无误...

    Installshield+中文系列教程.doc

    InstallShield支持多种安装类型,包括典型、最小和自定义安装类型,用户可以在安装类型对话框中选择相应的安装类型。 知识点2:InstallScript项目 ------------------------- InstallScript是一个InstallShield...

    InstallShield 2010 SP1 Premier 破解补丁

    InstallShield还包括支持MSI 3.0,自动的XML文件设置更新和Trialware功能,允许开发者增加强大而且灵活的功能到他们的安装项目中(InstallShield Premier Edition Only)。 注:把文件解压后放到“\InstallShield\...

    InstallShield6.22中文包.exe

    InstallShield6.22中文语言包,当然同时也包括日语韩语以及繁体简体中文,安装后制作的软件就可以选择中文显示了。

    InstallShield内部库函数全集

    InstallShield内部库函数全集一(中文版) InstallShield内部库函数全集二(中文版) InstallShield内部库函数全集三(中文版) InstallShield内部库函数全集四-Sd对话框函数(中文版) InstallShield内部库函数...

    Installshield 打包过程常见问题

    或直接单击 Installation Designer 页面,选中 Application Data 下的 Files and Folders,在 Destination computer’s folders 中选中不要被卸载的组件,右击选择 Properties 在弹出的对话框中勾上 Permanent 复选...

    Installshield 12 中文系列教程之 配置目标系统.pdf

    在 Installshield 12 中,配置目标系统主要包括以下几个关键方面: ##### 1. 快捷方式 - **简介**:快捷方式是一种方便用户快速访问安装程序的方法。它可以放置在桌面、开始菜单或其他自定义位置。 - **适用范围**...

    InstallShield

    **InstallShield** 是一款广受好评的安装程序创建工具,被广泛应用于商业软件的安装盘制作中,如知名的 Norton AntiVirus 2000。其受欢迎的原因在于它强大的功能集和灵活性,包括但不限于: - **注册表修改**:允许...

Global site tag (gtag.js) - Google Analytics