• 在InstallShield中手动修改XML Files Changes


     

    最近在忙于打包安装程序,使用的是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_SERVERIS_SQLSERVER_DATABASEIS_SQLSERVER_USERNAMEIS_SQLSERVER_PASSWORD是安装过程中用户输入的Property值。为了实现web.config的改变,可以使用InstallShield里的XML Files Changes,但是我发现了一个问题,按照数据库默认值,用户名是sa,密码是空,如果直接将上面所说的Connection String直接填到AttributeconnectionStringValue中时,由于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"]里,添加一项,AttributeconnectionStringValue为刚才创建的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,比如叫做SetConnetionStringFunction NameChangeProperty,并将其执行顺序设置为After InstallInitialize

     

    最后一切大功告成!经实验,结果connectionString的值正是预期的那样,如:connectionString=” Data Source=SQLSERVER;DataBase=DB;uid=sa;pwd=”

  • 相关阅读:
    Android Studio keymap到Eclipse后,查找下一个同样变量快捷键Ctrl+K失效
    阿里云cenos 6.5 模板上安装 docker
    java 实现打印当前月份的日历
    makefile redefinition or previous definition
    aix用户登录次数受限问题(3004-300 输入了无效的登录名或password)
    BASH 文本模版的简单实现 micro_template_compile
    Eclipse+Maven+Spring+CXF 构建webservice 服务
    GBX的Graph(最短路)
    CSS布局篇——固宽、变宽、固宽+变宽
    考研学生应该知道:研究方向和开发技术
  • 原文地址:https://www.cnblogs.com/cxun/p/1453529.html
Copyright © 2020-2023  润新知