innosetup 64bit 和32 bit

来源:互联网 发布:清除数据后照片还在吗 编辑:程序博客网 时间:2024/06/06 06:38

根据系统类型自动运行对应的程序,
系统类型:Windows XP 跟Windows 7 32 系统和Windows XP 跟Windows 7 64 位系统
程序A为 Windows XP 32位系统安装后需要运行的, 这个可以用 Check: not IsWin64 跟 MinVersion: 0,5.01.2600 来完成。
程序B为 Windows 7 32位系统安装后需要运行的,这个也可以用 Check: not IsWin64 跟 MinVersion: 0,5.01.2600 来完成。
程序C为 Windows XP 64位跟Windows 7 64位系统安装后需要运行的
程序 C 为 64位系统共用的
问题在程序 C ,需要更改一下系统,重启后才能有效安装下一步!
思路:RUN段运行程序C1,更改系统设置,完毕,关闭C1,系统重启动,启动后自动继续运行安装程序并接着运行C2、C3、C4完成!
RUN执行代码如下:

  1. [Run]
  2. :此为WindowsXP 32系统执行的程序
  3. Filename: {src}\32-bit\WindowsXP\HASPUserSetup.exe; StatusMsg: 正在安装加密狗驱动...; Check: not IsWin64; MinVersion: 0,5.01.2600
  4. Filename: {win}\regedit.exe; Parameters: /S {src}\32-bit\WindowsXP\data.reg; StatusMsg: 正在导入注册文件; Check: not IsWin64; MinVersion: 0,5.01.2600
  5. Filename: {src}\32-bit\WindowsXP\devcon.exe; StatusMsg: 正在安装加密狗...; Parameters: remove root\vusbbus; Check: not IsWin64; MinVersion: 0,5.01.2600
  6. Filename: {src}\32-bit\WindowsXP\devcon.exe; StatusMsg: 正在安装加密狗...; Parameters: install {src}\32-bit\WindowsXP\vusbbus.inf root\vusbbus; Check: not IsWin64; MinVersion: 0,5.01.2600

  7. ;此为Windows7 32系统执行的程序
  8. Filename: {src}\32-bit\Windows7P\HASPUserSetup.exe; StatusMsg: 正在安装加密狗驱动...; Check: not IsWin64; MinVersion: 0,6.1.7600
  9. Filename: {win}\regedit.exe; Parameters: /S {src}\32-bit\Windows7\data.reg; StatusMsg: 正在导入注册文件; Check: not IsWin64; MinVersion: 0,6.1.7600
  10. Filename: {src}\32-bit\Windows7\devcon.exe; StatusMsg: 正在安装加密狗...; Parameters: remove root\vusbbus; Check: not IsWin64; MinVersion: 0,6.1.7600
  11. Filename: {src}\32-bit\Windows7\devcon.exe; StatusMsg: 正在安装加密狗...; Parameters: install {src}\32-bit\WindowsXP\vusbbus.inf root\vusbbus; Check: not IsWin64; MinVersion: 0,6.1.7600

  12. ;此为WindowsXP 64跟此为Windows7 64位系统执行的程序
  13. Filename: {src}\64-bit\Final_x64 Parasima\dseo13b.exe; StatusMsg: 正在安装加密狗驱动...; Check: IsWin64; MinVersion: 0,5.01.2600
  14. Filename: {win}\regedit.exe; Parameters: /S {src}\32-bit\Windows7\data.reg; StatusMsg: 正在导入注册文件; Check: IsWin64; MinVersion: 0,5.01.2600
  15. Filename: {src}\64-bit\Final_x64 Parasima\devcon.exe; StatusMsg: 正在安装加密狗...; Parameters: remove root\vusbbus; Check: IsWin64; MinVersion: 0,5.01.2600
  16. Filename: {src}\64-bit\Final_x64 Parasima\devcon.exe; StatusMsg: 正在安装加密狗...; Parameters: install {src}\64-bit\Final_x64 Parasima\vusbbus.inf root\vusbbus; Check: IsWin64; MinVersion: 0,5.01.2600



[CODE]
const
sFileName = '{%tmp}\log.ini';
procedure CurStepChanged(CurStep: TSetupStep);
var
IniFile, OldString, NewString: string;
IniFileLines: TArrayOfString;
Textfile : TArrayOfString;
begin
if (CurStep=ssDone) and (Pos('instance', WizardSelectedComponents(False)) > 0) then
begin
//建立log.ini文件
SetArrayLength(Textfile, 8 )
Textfile[0]:='[Setup]';
Textfile[1]:='Lang=default';
Textfile[2]:='Dir=C:\WINDOWS';
Textfile[3]:='Group=(Default)';
Textfile[4]:='NoIcons=0';
Textfile[5]:='SetupType=custominstallation';
Textfile[6]:='Components='+WizardSelectedComponents(False);
Textfile[7]:='Tasks=';
SaveStringsToFile(ExpandConstant(sFileName), Textfile, False);
//建立重启后继续的快捷方式(注册表)
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce','cqaz', ExpandConstant('{srcexe}')+' /LOADINF='+ExpandConstant('{%tmp}')+'\log.ini'+' /SILENT');
//依据用户选择的组件修改log.ini文件
IniFile:= ExpandConstant('{%tmp}\log.ini');
OldString:='instance';
NewString:= '';
LoadStringsFromFile(IniFile, IniFileLines);
StringChange(IniFileLines[6], OldString, NewString);
SaveStringsToFile(IniFile, IniFileLines, False);
end;
end;

原创粉丝点击