.net framework 在windows系统下的版本

windows xp自带.net framework1.0

windows vista自带.net framework 3.0、2.0

windows 7自带.net framework 3.5、3.0、2.0

windows 8自带.net framework4.5、4.0

 

总结以上信息,在打包软件的时候,编写脚本就能灵活判断framework版本,分配不同的exe文件,从而大大减少了安装庞大的framework。这是我们.net程序员的福音。

以下是判断framework版本的部分代码:

            var Version: TWindowsVersion;
                 S: String;
//-----------------------------------------------------------
//        donet40Not           (集成x86,x64)      
//------------------------------------------------------------

 function Net40NotExist(): Boolean;

  begin
      GetWindowsVersionEx(Version);
      if (Version.Major = 6) and (Version.Minor = 2) or (Version.Build=9200) then  //windows 8
  begin

     FileCopy(ExpandConstant('{app}\dotNet40\KoPa Capture.exe'),ExpandConstant('{app}\KoPa Capture.exe'),False);   //copy
     DeleteFile(ExpandConstant('{app}\dotNet40\KoPa Capture.exe'));
      FileCopy(ExpandConstant('{app}\dotNet40\OstecPhotoAlbum.dll'),ExpandConstant('{app}\OstecPhotoAlbum.dll'),False);   //copy
     DeleteFile(ExpandConstant('{app}\dotNet40\OstecPhotoAlbum.dll'));

        Result:=not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0');
                    
      //function FileCopy(const ExistingFile, NewFile: String; const FailIfExists: Boolean): Boolean;

       Exit;
  end;
  end;
//------------------------------------------------------/
//         donet20Not              x86
//------------------------------------------------------/
 function Net20NotExist():Boolean;
 begin
      GetWindowsVersionEx(Version);
  if (Version.Major = 5) and (Version.Minor = 1)  then  //windows XP
 begin
    FileCopy(ExpandConstant('{app}\dotNet20\KoPa Capture.exe'),ExpandConstant('{app}\KoPa Capture.exe'),False);
     DeleteFile(ExpandConstant('{app}\dotNet20\KoPa Capture.exe'));

           FileCopy(ExpandConstant('{app}\dotNet20\OstecPhotoAlbum.dll'),ExpandConstant('{app}\OstecPhotoAlbum.dll'),False);   //copy
     DeleteFile(ExpandConstant('{app}\dotNet20\OstecPhotoAlbum.dll'));

       Result:=not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727');
          
      Exit;
  end;


    if (Version.Major = 6) and (Version.Minor = 0) then  //windows vista
  begin

     FileCopy(ExpandConstant('{app}\dotNet20\KoPa Capture.exe'),ExpandConstant('{app}\KoPa Capture.exe'),False);
     DeleteFile(ExpandConstant('{app}\dotNet20\KoPa Capture.exe'));

        FileCopy(ExpandConstant('{app}\dotNet20\OstecPhotoAlbum.dll'),ExpandConstant('{app}\OstecPhotoAlbum.dll'),False);   //copy
     DeleteFile(ExpandConstant('{app}\dotNet20\OstecPhotoAlbum.dll'));

             Result:=not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727');

     Exit;
  end;

     if (Version.Major = 6) and (Version.Minor = 1) then  //windows 7
  begin
     FileCopy(ExpandConstant('{app}\dotNet20\KoPa Capture.exe'),ExpandConstant('{app}\KoPa Capture.exe'),False);
     DeleteFile(ExpandConstant('{app}\dotNet20\KoPa Capture.exe'));

        FileCopy(ExpandConstant('{app}\dotNet20\OstecPhotoAlbum.dll'),ExpandConstant('{app}\OstecPhotoAlbum.dll'),False);   //copy
     DeleteFile(ExpandConstant('{app}\dotNet20\OstecPhotoAlbum.dll'));

            Result:=not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727');
    Exit;
  end;

  end;
 //-------------------------------------------------------/
 //   donet20_XP_x64Not              x64
 //-------------------------------------------------------/
 function Net20X64NotExist():Boolean;
 begin
      GetWindowsVersionEx(Version);
   if (Version.Major = 5) and (Version.Minor = 2) and (Version.ServicePackMajor < 2) then  //Windows Server 2003或 Windows XP x64 版本 (AMD64/EM64T)或 Windows XP 64 位版本 (Itanium)
  begin
       FileCopy(ExpandConstant('{app}\dotNet20\KoPa Capture.exe'),ExpandConstant('{app}\KoPa Capture.exe'),False);
     DeleteFile(ExpandConstant('{app}\dotNet20\KoPa Capture.exe'));

        FileCopy(ExpandConstant('{app}\dotNet20\OstecPhotoAlbum.dll'),ExpandConstant('{app}\OstecPhotoAlbum.dll'),False);   //copy
     DeleteFile(ExpandConstant('{app}\dotNet20\OstecPhotoAlbum.dll'));

               Result:=not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727');

    Exit;
  end;

//-----------------------------------------------------/
//     donot20_Win7_x64Not         x64
//-----------------------------------------------------/

   if (Version.Major = 6) and (Version.Minor = 1) and (Version.ServicePackMajor < 2) then  //Windows 7
  begin
       FileCopy(ExpandConstant('{app}\dotNet20\KoPa Capture.exe'),ExpandConstant('{app}\KoPa Capture.exe'),False);
     DeleteFile(ExpandConstant('{app}\dotNet20\KoPa Capture.exe'));

        FileCopy(ExpandConstant('{app}\dotNet20\OstecPhotoAlbum.dll'),ExpandConstant('{app}\OstecPhotoAlbum.dll'),False);   //copy
     DeleteFile(ExpandConstant('{app}\dotNet20\OstecPhotoAlbum.dll'));

               Result:=not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727');

    Exit;
  end;

 
  end;


  //-------------------------------------------------------------------------------------------------
  //                             启动4.0  (集成x86、x64)
  //-----------------------------------------------------------------------------------------------
 
      function Setup(): Boolean;
var Path:string;
        ResultCode: Integer;
         
begin

    if Net40NotExist() then
    begin
        ExtractTemporaryFile('dotNetFx40_Full_x86_x64.exe');
      Exec(ExpandConstant('{tmp}\dotNetFx40_Full_x86_x64.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)

         Result := true
    end
    else
    begin
       //  MsgBox(ExpandConstant('{cm:warn}'), mbInformation, MB_YESNO)
         Result := true
    end;
 //--------------------------------------------------------------------------
 //                               启动2.0(X86)
 //---------------------------------------------------------------------------
 if Net20NotExist() then
 begin

       ExtractTemporaryFile('dotNetFX20.exe');
      Exec(ExpandConstant('{tmp}\dotNetFX20.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)

         Result := true
    end
    else
    begin
       //  MsgBox(ExpandConstant('{cm:warn}'), mbInformation, MB_YESNO)
         Result := true
    end;
    //----------------------------------------------------------
    //                启动2.0(X64)
    //------------------------------------------------------------

  if Net20X64NotExist() then
  begin
     

       ExtractTemporaryFile('dotNetFX2064.exe');
       Exec(ExpandConstant('{tmp}\dotNetFX2064.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)

         Result := true
    end
    else
    begin
       //  MsgBox(ExpandConstant('{cm:warn}'), mbInformation, MB_YESNO)
         Result := true
    end;

 

end;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值