淘先锋技术网

首页 1 2 3 4 5 6 7

可以在basic MSI 里添加脚本,安装时运行函数为MyINSTALLFun:export prototype MyINSTALLFun(HWND);

 

function MyINSTALLFun(hMSI)   
    
     STRING    svResult; 
     STRING    cmdline;
begin     
        
     if(FindFile(SystemFolder,"ServiceUSB.exe",svResult)=0) then
      
           cmdline="cmd /c install.bat";  
           
        if (LaunchAppAndWait ("",cmdline, WAIT) < 0) then
             MessageBox ("Unable to launch cmd ",SEVERE);
       
         endif;    
      
    endif;  
          
        

end;


同理 在卸载时运行函数:

function MyFunction(hMSI)   
    // To Do:  Declare local variables. 
     STRING    svResult;
     STRING    cmdline; 
    
begin             
      if(FindFile(SystemFolder,"ServiceUSB.exe",svResult)=0) then
      
           cmdline="cmd /c install.bat uninstall";  
           
        if (LaunchAppAndWait ("",cmdline, WAIT) < 0) then
             MessageBox ("Unable to launch cmd ",SEVERE);
         endif;    
      
       endif; 
      if(FindFile(SystemFolder,"install.bat",svResult)=0) then
      
      DeleteFile(SystemFolder^"install.bat");    
      
    endif;  
    if(FindFile(SystemFolder,"ServiceUSB.exe",svResult)=0) then
      
      DeleteFile(SystemFolder^"ServiceUSB.exe");    
      
    endif; 
        
         if(FindFile(SystemFolder,"pkcs11.dll",svResult)=0) then
      
      DeleteFile(SystemFolder^"pkcs11.dll");    
      
    endif;  
     
       
      DeleteProgramFolder(INSTALLDIR);

end;


另外如果设置环境变量:

设计环境变量  环境变量 可以从注册表中设置 

用户变量的位置是 :HKEY_CURRENT_USER/Environment

系统变量的位置是:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Environment

 

function SetEnvironment()
begin        
        RegDBSetDefaultRoot (HKEY_CURRENT_USER);
        RegDBSetKeyValueEx ("Environment" , "JAVA_HOME" , REGDB_STRING_EXPAND , TARGETDIR+"//Java" , -1);  
        RegDBSetKeyValueEx ("Environment" , "CATALINA_HOME" , REGDB_STRING_EXPAND ,TARGETDIR+"//tomcat" , -1);
        RegDBSetKeyValueEx ("Environment" ,"JRE_HOME" , REGDB_STRING_EXPAND ,TARGETDIR+"//Java//jre1.5.0_18" , -1);
       
        //这个地方nzType千万不要直接用 REGDB_STRING    否则会编译出错 日
        //if (RegDBGetKeyValueEx (szKey, "Path", nzType, svOld, nsize) < 0) then
        //        MessageBox ("RegDBGetKeyValueEx failed.", SEVERE);
        //        abort; 
        //endif; 
        // svNew=svOld+";"+TARGETDIR+"//Java//bin";      
        //RegDBSetKeyValueEx ("Environment" , "Path" , REGDB_STRING ,svNew , -1); 
                
end;



参考http://blog.csdn.net/liaomin416100569/article/details/6045930