2010-08-24 35 views
2

如何在installshield 2010中通过installscript修改app.config文件。 我想根据用户选择的服务器修改app.config文件中的sql连接字符串。 早期的帮助应该被赞赏。通过installscript修改app.config

回答

1

我已经编写了自己的installscript来更改连接字符串。

代码片段:

function Update_AppConfig(hMSI) 
STRING  EXAMPLE_FILE,  EXAMPLE_DIR; 
STRING svLine; 
STRING svContent; 
number nvBuff,temp,nvFileHandle ; 
string szConnection,szServer,szFileName,szUser,szFilePath; 
long cchValueBuf; 
long length;        
begin    

EXAMPLE_FILE = "Example.exe.config"; 
EXAMPLE_DIR = INSTALLDIR; 

cchValueBuf = 2;   

MsiGetProperty(hMSI,"IS_SQLSERVER_SERVER",szServer,cchValueBuf); 

OpenFileMode (FILE_MODE_NORMAL);  

if (OpenFile (nvFileHandle, EXAMPLE_DIR, EXAMPLE_FILE) < 0) then 
     MessageBox ("OpenFile failed.", SEVERE); 
     abort;         
    endif; 

    while GetLine (nvFileHandle, svLine) = 0 
     svContent = svContent + svLine + "\r\n"; 
    endwhile; 

    if (CloseFile (nvFileHandle) < 0) then   
     MessageBox ("CloseFile failed.", SEVERE);  
    endif; 

    StrReplace (svContent, "{{SQLSERVERSETTING}}", szServer, 0);  


// Close the file.       

OpenFileMode (FILE_MODE_BINARY);  

if (OpenFile (nvFileHandle, EXAMPLE_DIR, EXAMPLE_FILE) < 0) then  
     MessageBox ("OpenFile failed.", SEVERE);   
     abort;       
    endif;   

    length = StrLength (svContent); 

    if (WriteBytes (nvFileHandle, svContent, 0, length) < 0) then 
     MessageBox ("WriteBytes failed.", SEVERE);   
    endif; 

    if (CloseFile (nvFileHandle) < 0) then 
     MessageBox ("CloseFile failed.", SEVERE); 
    endif;  

end;