论坛风格切换切换到宽版
  • 1719阅读
  • 0回复

请老虎版主帮我看看这段代码 [复制链接]

上一主题 下一主题
离线子夜精灵
 

发帖
2
金钱
20
威望
2
只看楼主 倒序阅读 0 发表于: 2016-04-04
软件安装需要VC++2008运行库,必须要在注册DLL控件之前安装运行库,否则没有运行库DLL控件注册失败,32位跟64位系统分别要对应版本的运行库,如32位的要32位的VC++ 2008 ,64位系统需要64位的VC++ 2008的同时也要32位的VC++ 软件才可以运行,在32位系统下可以实现在注册DLL前安装运行库,64位系统好像执行不了,请老虎版主帮我看看!代码如下:
  1. [Files]
  2. Source: vcredist_x86.exe; DestDir: {app}\; AfterInstall: MyAfterInstall('{app}\vcredist.exe')
  3. Source: vcredist_x64.exe; DestDir: {app}\; Check: IsWin64; AfterInstall: MyAfterInstall('{app}\vcredist.exe'); Tasks: ; Flags: deleteafterinstall
  4. [Dirs]
  5. Name: {code:GetDataDir}; Flags: uninsneveruninstall; Tasks:
  6. [Code]
  7. var
  8.   DataDirPage: TInputDirWizardPage;
  9. procedure InitializeWizard1;
  10. begin
  11.   WizardForm.BORDERICONS := [biHelp, biSystemMenu, biMinimize];//去除关于安装程序
  12.   WizardForm.WizardSmallBitmapImage.width := 202;//右上角图片宽度
  13.   Wizardform.WizardSmallBitmapImage.left := WizardForm.width - 205;//右上角图片位置
  14.   Wizardform.PageNameLabel.width := 415 - 110 - 36;//这儿必须定义,数值根据图片宽度更改,显示软件名称的位置
  15.   Wizardform.PageDescriptionLabel.width := 415 - 110 - 42;//显示页面信息的位置
  16.   // 不显示安装类型,相应地调整组件列表框的大小
  17.   WizardForm.TYPESCOMBO.Visible:= false;
  18.   WizardForm.ComponentsList.Height := WizardForm.ComponentsList.Height + WizardForm.ComponentsList.Top - WizardForm.TYPESCOMBO.Top;
  19.   WizardForm.ComponentsList.Top := WizardForm.TYPESCOMBO.Top;
  20.   { 创建页面 }
  21.   DataDirPage := CreateInputDirPage(wpSelectDir,
  22.     '选择花样存放目录', '您要将花样设计文件存放在哪里?',//页面显示文字
  23.     '选择花样设计文件存放目录.然后单击“下一步”继续.                    (花版存放目录不建议设置在系统盘)',//页面显示文字
  24.     False, '');
  25.   DataDirPage.Add('');
  26.     { 设置默认值,如果可能则使用先前数值 (reg:HKLM\SOFTWARE\Wilcom\Wilcom ES\9.0S,Work)为获取先前安装数据目录 }
  27.   DataDirPage.Values[0] := ExpandConstant('{reg:HKCU\SOFTWARE\Wilcom\Wilcom EmbroideryStudio\2.0Q,Work}');
  28. end;
  29. //获取先前数据目录
  30. procedure RegisterPreviousData1(PreviousDataKey: Integer);
  31. begin
  32.   { Store the settings so we can restore them next time }
  33.   SetPreviousData(PreviousDataKey, 'DataDir', DataDirPage.Values[0]);
  34. end;
  35. //设置默认数据目录
  36. function NextButtonClick1(CurPageID: Integer): Boolean;
  37. begin
  38.   { Validate certain pages before allowing the user to proceed }
  39. begin
  40.       if DataDirPage.Values[0] = '' then
  41.         DataDirPage.Values[0] := 'C:\电脑花样';//数据目录
  42.       Result := True;
  43.     end;
  44. end;
  45. function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo,
  46.   MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
  47. var
  48.   S: String;
  49. begin
  50.   S := S + MemoDirInfo + NewLine;//准备安装页面显示文字
  51.   S := S + Space + DataDirPage.Values[0] + '(花版存放目录)' + NewLine;//准备安装页面显示文字
  52.   S := S + MemoGroupInfo + NewLine;//准备安装页面显示文字
  53.   S := S + MemoTasksInfo + NewLine;
  54.   Result := S;
  55. end;
  56. function GetDataDir(Param: String): String;
  57. begin
  58.   { Return the selected DataDir }
  59.   Result := DataDirPage.Values[0];
  60. end;
  61. //删除所有配置文件以达到干净卸载的目的
  62. procedure CurUninstallStepChanged1(CurUninstallStep: TUninstallStep);
  63. begin
  64. if CurUninstallStep = usUninstall then
  65. if MsgBox('您是否要删除 Wilcom ES Designer 2006 运行时产生的花样自动备份文件( 位于安装目录下BACKUP文件夹)?', mbConfirmation, MB_YESNO) = IDYES then
  66. //删除 {app} 文件夹及其中所有文件
  67. DelTree(ExpandConstant('{app}\EmbroideryStudio_e2.0\BACKUP'), True, True, True);
  68. end;
  69. procedure MyAfterInstall(FileName: String);
  70. var
  71.   ResultCode: Integer;
  72. begin
  73.      Exec(ExpandConstant('{app}\vcredist.exe'), '/Q', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
  74. end;
  75. Var
  76.   P1, P2: Integer;
  77. function TmpPassword: String;
  78. begin
  79.   Result := chr(ord('2')-1);
  80.   Result := Result + chr(ord('3')-1);
  81.   Result := Result + chr(ord('4')-1);
  82.   Result := Result + chr(ord('5')-1);
  83.   Result := Result + chr(ord('6')-1);
  84.   Result := Result + chr(ord('7')-1);
  85.   Result := Result + chr(ord('b')-1);
  86.   Result := Result + chr(ord('c')-1);
  87.   Result := Result + chr(ord('d')-1);
  88.   Result := Result + chr(ord('e')-1);
  89.   Result := Result + chr(ord('f')-1);
  90.   Result := Result + chr(ord('g')-1);
  91. end;
  92. function CheckPassword(Password: String): Boolean;
  93. begin
  94.   Result := True;
  95. end;
  96. function GetPassword(PrePassword: String): String;
  97. begin
  98.   if (P1 = 5) and (P2 = 6) then
  99.   begin
  100.     Result := chr(ord('2')-1);
  101.     Result := Result + chr(ord('3')-1);
  102.     Result := Result + chr(ord('4')-1);
  103.     Result := Result + chr(ord('5')-1);
  104.     Result := Result + chr(ord('6')-1);
  105.     Result := Result + chr(ord('7')-1);
  106.   end else
  107.   if (P1 = 5) and (P2 = 9) then
  108.   begin
  109.     Result := Copy(PrePassword, 1, 6) + chr(ord('b')-1);
  110.     Result := Result + chr(ord('c')-1);
  111.     Result := Result + chr(ord('d')-1);
  112.     Result := Result + chr(ord('e')-1);
  113.     Result := Result + chr(ord('f')-1);
  114.     Result := Result + chr(ord('g')-1);
  115.   end else
  116.     Result := PrePassword + 'FakePassword'; // 凡是未符合要求的一律返回假密码。
  117.   P2 := P2 + 1;
  118. //  MsgBox(PrePassword+' , '+Result, mbInformation, MB_OK);
  119. end;
  120. procedure InitializeWizard2();
  121. begin
  122.   P1 := 5;
  123. {
  124.   SetPassword(TmpPassword);
  125.   ExtractTemporaryFile('logo.gif');
  126.   SetPassword('FakePassword'); // 用完后最好重新清空一下密码。
  127. }
  128. end;
  129. procedure InitializeWizard();
  130. begin
  131.   InitializeWizard1();
  132.   InitializeWizard2();
  133. end;
  134. procedure RegisterPreviousData(PreviousDataKey: Integer);
  135. begin
  136.   RegisterPreviousData1(PreviousDataKey);
  137. end;
  138. function NextButtonClick(CurPageID: Integer): Boolean;
  139. begin
  140.   Result := NextButtonClick1(CurPageID); if not Result then exit;
  141. end;
  142. procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
  143. begin
  144.   CurUninstallStepChanged1(CurUninstallStep);
  145. end;