用InstallShield生成新的Web.Config

在InstallShield中寫Web.Config 就是和操作XML文件 

需要調用系統的MSXML.DOMDocument

在開發Asp.net程序後.對WebConfig有自定義動態配置 需要動態生成Web.Config

特使用以下代碼實現,有什麼問題,請看客拍磚

 

 

                              

#define ERROR_XML_FILE_CREATION 
"Setup could not create the setting file %s."
#define 
ERROR "Error"

prototype NUMBER LoadXML(
STRING);  
prototype 
OBJECT AddSetting(OBJECT,OBJECT,STRING,STRING);

//////////////////////////////////////////////////////////
//
//        Write setting to an XML file using the MS xml parse
//
///////////////////////////////////////////////////////      

function LoadXML(szFilename)
    
OBJECT oDoc;           //XML 對象
    
OBJECT oNode,son_oNode,son_son_oNode;          //節點
    
OBJECT Parent_oNode;     //當前父節點
    
OBJECT pi;             //指針     
    
OBJECT oErr ;
begin
    
    
//創建XML對象,並且初始化部分值
    
set oDoc = CreateObject("MSXML.DOMDocument");
    
if (IsObject(oDoc) = FALSE ) then
        SprintfBox(SEVERE,
ERROR,ERROR_XML_FILE_CREATION,szFilename);
        
return -1;
    endif;
    oDoc.Async 
= FALSE;
    oDoc.loadXML(
"<configuration/>");      
    
set Parent_oNode = oDoc.documentElement;
    
//添加結構體<?xml version = "1.0">到文件頭 
    
set pi= oDoc.createProcessingInstruction("xml","version="1.0" encoding="utf-8"");
    oDoc.insertBefore(pi,oDoc.childNodes.item(
0));      
    
    
//添加某些應用程序的設置,這些設置將全部出現在當前節點的子項中。
    
//Ajax節點
    
set oNode = AddSetting(oDoc,Parent_oNode,"configSections","");  
        
set oNode = AddSetting(oDoc,oNode,"sectionGroup","");  
        oNode.setAttribute(
"name","ajaxNet");         
            
set oNode = AddSetting(oDoc,oNode,"section","");
            oNode.setAttribute(
"name","ajaxSettings");  
            oNode.setAttribute(
"type","Ajax.AjaxSettingsSectionHandler, Ajax");  
            
    
//appSettings節點   
    
    
set oNode = AddSetting(oDoc,Parent_oNode,"appSettings","");  
                  
    
set son_oNode = AddSetting(oDoc,oNode,"add","");  
        son_oNode.setAttribute(
"key","__DBACCESS__");  
        son_oNode.setAttribute(
"value","SQL");   
        
    
set son_oNode = AddSetting(oDoc,oNode,"add","");  
        son_oNode.setAttribute(
"key","__AppDataFileRootPath__");  
        son_oNode.setAttribute(
"value",WindowsVolume+"Data");

        
    
//system.web 節點
    
set oNode = AddSetting(oDoc,Parent_oNode,"system.web","");  
    
set son_oNode = AddSetting(oDoc,oNode,"httpHandlers","");    

    
set son_oNode = AddSetting(oDoc,oNode,"httpRuntime","");  
    son_oNode.setAttribute(
"maxRequestLength","1048576");  
    son_oNode.setAttribute(
"executionTimeout","3600"); 
    
    
set son_oNode = AddSetting(oDoc,oNode,"compilation","");  
    son_oNode.setAttribute(
"debug","true");  

    
set son_oNode = AddSetting(oDoc,oNode,"authentication","");  
    son_oNode.setAttribute(
"mode","Windows"); 
               

    
set son_oNode = AddSetting(oDoc,oNode,"httpModules","");  
      
    
set son_oNode = AddSetting(oDoc,oNode,"globalization","");  
    son_oNode.setAttribute(
"requestEncoding","gb2312");  
    son_oNode.setAttribute(
"responseEncoding","gb2312"); 
     
    
//    MessageBox(oDoc.xml,SEVERE); 
    
    oDoc.save(szFilename) ;   
    
set  son_oNode = NOTHING;
    
set  son_son_oNode = NOTHING;
    
set pi =  NOTHING;
    
set  Parent_oNode = NOTHING;
    
set oDoc  = NOTHING;
    
    
return 0;
end;     


////////////////////////////////////////////////////////////////////
//
// 在父節點上創建一個設置。
//  <parent>
//     <Nodename>Vaule</Nodename>
//  </parent>
//
////////////////////////////////////////////////////////////////////
function OBJECT  AddSetting(oDoc,oParent,szNodeName,szValue)
    
OBJECT oNode;
begin
    
//先加入一個空行
    
set oNode = oDoc.createTextNode(" ");   
    oParent.appendChild(oNode);
    
//創建一個新的節點和值
    
set oNode = oDoc.createElement(szNodeName);
    oNode.text 
= szValue;
    oParent.appendChild(oNode);
    
    
return oNode;
end;     

 

調用代碼

LoadXML(IISROOTFOLDER+"某asp.net應用程序//Web.config");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章