1. 程式人生 > >inno 區分win7 win8 win8.1 win10 x64 x86不同系統,安裝不同驅動檔案的指令碼編寫

inno 區分win7 win8 win8.1 win10 x64 x86不同系統,安裝不同驅動檔案的指令碼編寫

完整inno指令碼下載連結

https://download.csdn.net/download/wangxingxing321/10392692
一、為了簡化教程,我們使用inno打包的exe檔案是最簡單的HelloWorld.exe,如下圖

解釋:DPInst32.exe檔案是在32位系統執行的驅動安裝檔案       DPInst64.exe檔案是在64位系統執行的驅動安裝檔案       Drive資料夾放的是各系統的驅動檔案,如下圖

使用inno的安裝嚮導,自動生成最簡單的指令碼如下(怎樣使用inno安裝嚮導就不詳細寫了,可以看我的下一篇部落格)
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "My Program_wxx"
#define MyAppVersion "1.5_wxx"
#define MyAppPublisher "My Company, Inc._wxx"
#define MyAppURL "http://www.example.com/_wxx"
#define MyAppExeName "HelloWorld.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{1D316271-706A-4217-834A-EEE2EC48E80F}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
LicenseFile=D:\PackTemplet\license.txt
InfoBeforeFile=D:\PackTemplet\InfoBefore.txt
InfoAfterFile=D:\PackTemplet\InfoAfter.txt
OutputDir=D:\PackTemplet\Output
OutputBaseFilename=setup
SetupIconFile=D:\PackTemplet\home.ico
Compression=lzma
SolidCompression=yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "D:\PackTemplet\ProjectRef\HelloWorld.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\PackTemplet\ProjectRef\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

用指令碼語言寫一個判別不同系統的函式,如下
[code]   
//Func: Get Windows Version
function MyGetWindowsVersion:String;  
var
  Version:TWindowsVersion;
begin
  GetWindowsVersionEx(Version);
  //windows10
  if(Version.Major = 10) and (Version.Minor = 0) then
  begin
      if (IsWin64) then
      begin 
         Result:='WIN10_64';
      end
      else
         Result:='WIN10_32';
      Exit;
  end;
  //windows8.1
  if(Version.Major = 6) and (Version.Minor = 3) then
  begin
      if (IsWin64) then
      begin 
         Result:='WIN81_64';
      end
      else
         Result:='WIN81_32';
      Exit;
  end;
  //windows8
  if(Version.Major = 6) and (Version.Minor = 2) then
  begin
      if (IsWin64) then
      begin 
         Result:='WIN8_64';
      end
      else
         Result:='WIN8_32';
      Exit;
  end;
  //Windows 7
  if(Version.Major = 6) and (Version.Minor = 1) then
  begin
      if (IsWin64) then
      begin 
        Result:='WIN7_64';
      end
      else
        Result:='WIN7_32';
      Exit;
  end;
  //Windows XP
  if(Version.Major = 5) and (Version.Minor = 10) then
  begin
    Result:='WINXP';
    Exit;
  end;
  //其它
  Result:='OTHER';
end;


解釋:

1.判別系統:

函式:GetWindowsVersionEx(Version)

函式功能:獲取當前系統的版本資訊

詳細使用:根據版本主版本號(Version.Major)和副版本號(Version.Minor),區分不同的系統。

2.判別系統位數:

函式:IsWin64

函式功能:判斷當前系統是否是64位系統

3.不同系統版本號對照表,如下圖

用指令碼語言寫一個判別當前系統是否是指定系統的函式,如下
function MySystemIs(WinVers: String): Boolean;
begin
Result := (MyGetWindowsVersion = Uppercase(WinVers));
end;

現在介紹使用DPInst.exe安裝inf驅動的方法 一般用法:將DPInst.exeinf驅動檔案放在同目錄下,直接點選執行DPInst.exe,驅動檔案會自動安裝,安裝成功介面如下

Inno安裝完執行DPInst.exe程式,根據不同的系統安裝驅動,指令碼如下
[Run]
      ; 安裝驅動程式
Filename: "{app}\dpinst64"; Parameters: "/path ""{app}\Drive\8_1_x64"" /sw /se"; Check: MySystemIs('WIN81_64')
Filename: "{app}\dpinst32"; Parameters: "/path ""{app}\Drive\8_1_x86"" /sw /se"; Check: MySystemIs('WIN81_32')
Filename: "{app}\dpinst64"; Parameters: "/path ""{app}\Drive\8_x64"" /sw /se"; Check: MySystemIs('WIN8_64')
Filename: "{app}\dpinst32"; Parameters: "/path ""{app}\Drive\8_x86"" /sw /se"; Check: MySystemIs('WIN8_32')
Filename: "{app}\dpinst64"; Parameters: "/path ""{app}\Drive\Win7 x64"" /sw /se"; Check: MySystemIs('WIN7_64')
Filename: "{app}\dpinst32"; Parameters: "/path ""{app}\Drive\Win7 x86"" /sw /se"; Check: MySystemIs('WIN7_32')
Filename: "{app}\dpinst64"; Parameters: "/path ""{app}\Drive\10_x64"" /sw /se"; Check: MySystemIs('WIN10_64')
Filename: "{app}\dpinst32"; Parameters: "/path ""{app}\Drive\10_x86"" /sw /se"; Check: MySystemIs('WIN10_32')

解釋:

1.      [Run]Inno安裝完執行指定程式

2.      Filename:"{app}\dpinst64"; 指執行的檔名稱,

3.      {app}指軟體安裝路徑

4.      Parameters:指執行dpinst64檔案給dpinst64傳的引數

5.      "/path""{app}\Drive\10_x86"指定dpinst.exe軟體安裝的驅動檔案路徑

6.      /sw 不顯示裝置安裝嚮導,作業系統任然可以彈出對話方塊

7.      /se:不顯示終端使用者許可協議 8. Check: MySystemIs('WIN10_32'):檢查系統是否是“WIN10_32”, MySystemIs('WIN10_32')是我們上面提到的判別當前系統是否是指定系統的函式 9 .      567條均是DPInst命令列引數,具體可以參照下圖

、完整inno指令碼可以用以下連結下載

https://download.csdn.net/download/wangxingxing321/10392692