1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

Inno Setup (создание инсталяционных пакетов). Часть 1

Тема в разделе "Inno Setup", создана пользователем Edison007, 16 июн 2011.

Статус темы:
Закрыта.
  1. Old Men Проверенный

    Регистрация:
    17 июн 2011
    Сообщения:
    467
    Симпатии:
    444
    Пол:
    Мужской
    sergey3695, в строчке
    Код (Text):
    1. if Length(pb)>0 then Result.img1:=ImgLoadBotvaU(hParent,pb,Result.Left,Result.Top,Result.Width,Result.Height,True,False) else Result.img1:=0;
    поменяй False на True:
    Код (Text):
    1. if Length(pb)>0 then Result.img1:=ImgLoadBotvaU(hParent,pb,Result.Left,Result.Top,Result.Width,Result.Height,True,[COLOR="Red"]True[/COLOR]) else Result.img1:=0;
     
  2. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.322
    Симпатии:
    860
    Оооо.... Спасибо большое :) Я так и знал, что проблема где-то в ImgPBCreateUn, только не мог понять где :)o).
     
    Последнее редактирование: 25 фев 2012
  3. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.322
    Симпатии:
    860
    Как сделать, чтобы проценты во время установки показывали до сотых (два знака после запятой),а не до десятых?
     
  4. Пользователь

    Регистрация:
    26 дек 2011
    Сообщения:
    19
    Симпатии:
    37
    И снова вопросы:
    1) При нажатии на "Отмена" или "Закрыть" (крестик :) не во время установки программа вылетает с ошибкой. Если во время установки на "Отмена", то идёт откат и бросает на страницу завершения (т.е. делает, что надо), а если на "Закрыть", то ничего не завершается, т.е. что-то происходит, но явно не то
    2) Можно ли задать две кнопки "Отмена" для минимизированного состояния и для нормального
    3) Прошедшее время считается только до двух минут посекундо, а потом поминутно, как можно включить вечное посекундное отображение
     
    Последнее редактирование: 25 фев 2012
  5. Пользователь

    Регистрация:
    19 фев 2012
    Сообщения:
    5
    Симпатии:
    0
    Возможно ли сделать что бы при текстурировании кнопок через ботву можно было использовать отелльную картинку для каждого состояния кнопки
     
  6. Безумный Лорд Администратор

    Регистрация:
    15 июн 2011
    Сообщения:
    756
    Симпатии:
    1.108
    Пол:
    Мужской
    sergey3695
    Нужен код, т.к неизвестно где и как у вас выводятся проценты.

    ShuToff
    Ну и что мы должны ответить? Код предоставьте, тогда можно помочь будет.

    Зачем? Когда можно одну кнопку подгонять под размеры инсталлятора.

    respack
    В ботве и так 4 состояния кнопки, или вы хотите что-то другое?
     
    respack нравится это.
  7. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    536
    Симпатии:
    642
    Пол:
    Мужской
    Насколько я понял, товарищ respack, хочет, чтобы для каждого состояния, была отдельная картинка. Но в ботве так не получится. И главное, какой в этом смысл? Чем отличается одна картинка с несколькими состояниями от отдельных картинок?
     
    respack нравится это.
  8. Пользователь

    Регистрация:
    19 фев 2012
    Сообщения:
    5
    Симпатии:
    0
    YURSHAT, так ты меня правильно понял.
    А не на ботве можно?
     
  9. Пользователь

    Регистрация:
    26 дек 2011
    Сообщения:
    19
    Симпатии:
    37
    Shegorat, с первым вопросом разобрался. А вот как сделать, чтобы кнопка зависела от окна инсталлятора? Вроде где-то видел что-то вроде этого:
    Код (Text):
    1. hCancelBtn:=BtnCreate(WizardForm.Handle,ScaleX(426),Top-88, ScaleX(98), ScaleY(28),ExpandConstant('btn.png'),0,False);
    но все равно при минимизации кнопки не видно
     
  10. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.322
    Симпатии:
    860
    Стандартно ... как в ISDone
    Код (Text):
    1. #define NeedSize "5000000000"
    2.  
    3. #define NeedMem 512
    4.  
    5. ;#define Components
    6.  
    7. ;#define records
    8.  
    9. ;#define facompress
    10.  
    11. ;#define PrecompInside
    12. ;#define SrepInside
    13. ;#define MSCInside
    14. ;#define precomp "0.42"
    15. ;#define unrar
    16. ;#define XDelta
    17. ;#define PackZIP
    18.  
    19. [Setup]
    20. AppName=ISDone
    21. AppVerName=ISDone
    22. DefaultDirName={pf}\ISDone
    23. DefaultGroupName=ISDone Example
    24. OutputDir=.
    25. OutputBaseFilename=Setup
    26. VersionInfoCopyright=ProFrager
    27. SolidCompression=yes
    28. #ifdef NeedSize
    29. ExtraDiskSpaceRequired={#NeedSize}
    30. #endif
    31.  
    32. #ifdef Components
    33. [Types]
    34. Name: full; Description: Full installation; Flags: iscustom
    35.  
    36. [Components]
    37. Name: text; Description: Язык субтитров; Types: full; Flags: fixed
    38. Name: text\rus; Description: Русский; Flags: exclusive; ExtraDiskSpaceRequired: 100000000
    39. Name: text\eng; Description: Английский; Flags: exclusive; ExtraDiskSpaceRequired: 200000000
    40. Name: voice; Description: Язык озвучки; Types: full; Flags: fixed
    41. Name: voice\rus; Description: Русский; Flags: exclusive; ExtraDiskSpaceRequired: 500000000
    42. Name: voice\eng; Description: Английский; Flags: exclusive; ExtraDiskSpaceRequired: 600000000
    43. #endif
    44.  
    45. [Registry]
    46. Root: HKLM; Subkey: Software\ProFrager; ValueName: path; ValueType: String; ValueData: {app}; Flags: uninsdeletekey; Check: CheckError
    47. Root: HKLM; Subkey: Software\ProFrager; ValueName: name; ValueType: String; ValueData: Data; Flags: uninsdeletekey; Check: CheckError
    48.  
    49. [Icons]
    50. Name: {group}\Удалить пример ISDone; Filename: {app}\unins000.exe; WorkingDir: {app}; Check: CheckError
    51. Name: {commondesktop}\Удалить пример ISDone; Filename: {app}\unins000.exe; WorkingDir: {app}; Check: CheckError
    52.  
    53. [Tasks]
    54. Name: VCCheck; Description: Установить Microsoft Visual C++ 2005 Redist
    55. Name: PhysXCheck; Description: Установить Nvidia PhysX
    56.  
    57. [Run]
    58. Filename: {src}\Redist\vcredist_x86.exe; Parameters: /q; StatusMsg: Устанавливаем Microsoft Visual C++ 2005 Redist...; Flags: skipifdoesntexist; Tasks: VCCheck; Check: CheckError
    59. Filename: {src}\Redist\PhysX.exe; Parameters: /qn; StatusMsg: Устанавливаем Nvidia PhysX...; Flags: skipifdoesntexist; Tasks: PhysXCheck; Check: CheckError
    60.  
    61. [Files]
    62. Source: Include\English.ini; DestDir: {tmp}; Flags: dontcopy
    63. Source: Include\unarc.dll; DestDir: {tmp}; Flags: dontcopy
    64. Source: ISDone.dll; DestDir: {tmp}; Flags: dontcopy
    65. #ifdef records
    66. Source: records.inf; DestDir: {tmp}; Flags: dontcopy
    67. #endif
    68.  
    69. #ifdef PrecompInside
    70. Source: Include\CLS-precomp.dll; DestDir: {tmp}; Flags: dontcopy
    71. Source: Include\packjpg_dll.dll; DestDir: {tmp}; Flags: dontcopy
    72. Source: Include\packjpg_dll1.dll; DestDir: {tmp}; Flags: dontcopy
    73. Source: Include\precomp.exe; DestDir: {tmp}; Flags: dontcopy
    74. Source: Include\zlib1.dll; DestDir: {tmp}; Flags: dontcopy
    75. #endif
    76. #ifdef SrepInside
    77. Source: Include\CLS-srep.dll; DestDir: {tmp}; Flags: dontcopy
    78. #endif
    79. #ifdef MSCInside
    80. Source: Include\CLS-MSC.dll; DestDir: {tmp}; Flags: dontcopy
    81. #endif
    82. #ifdef facompress
    83. Source: Include\facompress.dll; DestDir: {tmp}; Flags: dontcopy
    84. #endif
    85. #ifdef precomp
    86.   #if precomp == "0.38"
    87.   Source: Include\precomp038.exe; DestDir: {tmp}; Flags: dontcopy
    88.   #else
    89.     #if precomp == "0.4"
    90.     Source: Include\precomp040.exe; DestDir: {tmp}; Flags: dontcopy
    91.     #else
    92.       #if precomp == "0.41"
    93.       Source: Include\precomp041.exe; DestDir: {tmp}; Flags: dontcopy
    94.       #else
    95.         #if precomp == "0.42"
    96.         Source: Include\precomp042.exe; DestDir: {tmp}; Flags: dontcopy
    97.         #else
    98.         Source: Include\precomp038.exe; DestDir: {tmp}; Flags: dontcopy
    99.         Source: Include\precomp040.exe; DestDir: {tmp}; Flags: dontcopy
    100.         Source: Include\precomp041.exe; DestDir: {tmp}; Flags: dontcopy
    101.         Source: Include\precomp042.exe; DestDir: {tmp}; Flags: dontcopy
    102.         #endif
    103.       #endif
    104.     #endif
    105.   #endif
    106. #endif
    107. #ifdef unrar
    108. Source: Include\Unrar.dll; DestDir: {tmp}; Flags: dontcopy
    109. #endif
    110. #ifdef XDelta
    111. Source: Include\XDelta3.dll; DestDir: {tmp}; Flags: dontcopy
    112. #endif
    113. #ifdef PackZIP
    114. Source: Include\7z.dll; DestDir: {tmp}; Flags: dontcopy
    115. Source: Include\packZIP.exe; DestDir: {tmp}; Flags: dontcopy
    116. #endif
    117.  
    118. [CustomMessages]
    119. russian.ExtractedFile=Извлекается файл:
    120. russian.Extracted=Распаковка архивов...
    121. russian.CancelButton=Отменить распаковку
    122. russian.Error=Ошибка распаковки!
    123. russian.ElapsedTime=Прошло:
    124. russian.RemainingTime=Осталось времени:
    125. russian.EstimatedTime=Всего:
    126. russian.AllElapsedTime=Время установки:
    127.  
    128. [Languages]
    129. Name: russian; MessagesFile: compiler:Languages\Russian.isl
    130.  
    131. [UninstallDelete]
    132. Type: filesandordirs; Name: {app}
    133.  
    134. [Code|]
    135. const
    136.   PCFonFLY=true;
    137.   notPCFonFLY=false;
    138. var
    139.   LabelPct1,LabelCurrFileName,LabelTime1,LabelTime2,LabelTime3: TLabel;
    140.   ISDoneProgressBar1: TNewProgressBar;
    141. #ifdef SecondProgressBar
    142.   LabelPct2: TLabel;
    143.   ISDoneProgressBar2:TNewProgressBar;
    144. #endif
    145.   MyCancelButton: TButton;
    146.   ISDoneCancel:integer;
    147.   ISDoneError:boolean;
    148.   PCFVer:double;
    149.  
    150. type
    151.   TCallback = function (OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
    152.  
    153. function WrapCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:ISDone.dll stdcall delayload';
    154.  
    155. function ISArcExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath, ExtractedPath: AnsiString; DeleteInFile:boolean; Password, CfgFile, WorkPath: AnsiString; ExtractPCF: boolean ):boolean; external 'ISArcExtract@files:ISDone.dll stdcall delayload';
    156. function IS7ZipExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'IS7zipExtract@files:ISDone.dll stdcall delayload';
    157. function ISRarExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'ISRarExtract@files:ISDone.dll stdcall delayload';
    158. function ISPrecompExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):boolean; external 'ISPrecompExtract@files:ISDone.dll stdcall delayload';
    159. function ISSRepExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):boolean; external 'ISSrepExtract@files:ISDone.dll stdcall delayload';
    160. function ISxDeltaExtract(CurComponent:Cardinal; PctOfTotal:double; minRAM,maxRAM:integer; InName, DiffFile, OutFile: AnsiString; DeleteInFile, DeleteDiffFile:boolean):boolean; external 'ISxDeltaExtract@files:ISDone.dll stdcall delayload';
    161. function ISPackZIP(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString;ComprLvl:integer; DeleteInFile:boolean):boolean; external 'ISPackZIP@files:ISDone.dll stdcall delayload';
    162. function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:AnsiString):boolean; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall delayload';
    163.  
    164. function Exec2 (FileName, Param: PAnsiChar;Show:boolean):boolean; external 'Exec2@files:ISDone.dll stdcall delayload';
    165. function ISFindFiles(CurComponent:Cardinal; FileMask:AnsiString; var ColFiles:integer):integer; external 'ISFindFiles@files:ISDone.dll stdcall delayload';
    166. function ISPickFilename(FindHandle:integer; OutPath:AnsiString; var CurIndex:integer; DeleteInFile:boolean):boolean; external 'ISPickFilename@files:ISDone.dll stdcall delayload';
    167. function ISGetName(TypeStr:integer):PAnsichar; external 'ISGetName@files:ISDone.dll stdcall delayload';
    168. function ISFindFree(FindHandle:integer):boolean; external 'ISFindFree@files:ISDone.dll stdcall delayload';
    169. function ISExec(CurComponent:Cardinal; PctOfTotal,SpecifiedProcessTime:double; ExeName,Parameters,TargetDir,OutputStr:AnsiString;Show:boolean):boolean; external 'ISExec@files:ISDone.dll stdcall delayload';
    170.  
    171. function SrepInit(TmpPath:PAnsiChar;VirtMem,MaxSave:Cardinal):boolean; external 'SrepInit@files:ISDone.dll stdcall delayload';
    172. function PrecompInit(TmpPath:PAnsiChar;VirtMem:cardinal;PrecompVers:single):boolean; external 'PrecompInit@files:ISDone.dll stdcall delayload';
    173. function FileSearchInit(RecursiveSubDir:boolean):boolean; external 'FileSearchInit@files:ISDone.dll stdcall delayload';
    174. function ISDoneInit(RecordFileName:AnsiString; TimeType,Comp1,Comp2,Comp3:Cardinal; WinHandle, NeededMem:longint; callback:TCallback):boolean; external 'ISDoneInit@files:ISDone.dll stdcall';
    175. function ISDoneStop:boolean; external 'ISDoneStop@files:ISDone.dll stdcall';
    176. function ChangeLanguage(Language:AnsiString):boolean; external 'ChangeLanguage@files:ISDone.dll stdcall delayload';
    177. function SuspendProc:boolean; external 'SuspendProc@files:ISDone.dll stdcall';
    178. function ResumeProc:boolean; external 'ResumeProc@files:ISDone.dll stdcall';
    179.  
    180. function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
    181. begin
    182.   if OveralPct<=1000 then ISDoneProgressBar1.Position := OveralPct;
    183.   LabelPct1.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%';
    184.   LabelCurrFileName.Caption:=ExpandConstant('{cm:ExtractedFile} ')+MinimizePathName(CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width-ScaleX(100));
    185.   LabelTime1.Caption:=ExpandConstant('{cm:ElapsedTime} ')+TimeStr2;
    186.   LabelTime2.Caption:=ExpandConstant('{cm:RemainingTime} ')+TimeStr1;
    187.   LabelTime3.Caption:=ExpandConstant('{cm:AllElapsedTime}')+TimeStr3;
    188.   Result := ISDoneCancel;
    189. end;
    190.  
    191. procedure CancelButtonOnClick(Sender: TObject);
    192. begin
    193.   SuspendProc;
    194.   if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then ISDoneCancel:=1;
    195.   ResumeProc;
    196. end;
    197.  
    198. procedure HideControls;
    199. begin
    200.   WizardForm.FileNamelabel.Hide;
    201.   ISDoneProgressBar1.Hide;
    202.   LabelPct1.Hide;
    203.   LabelCurrFileName.Hide;
    204.   LabelTime1.Hide;
    205.   LabelTime2.Hide;
    206.   MyCancelButton.Hide;
    207. end;
    208.  
    209. procedure CreateControls;
    210. var PBTop:integer;
    211. begin
    212.   PBTop:=ScaleY(50);
    213.   ISDoneProgressBar1 := TNewProgressBar.Create(WizardForm);
    214.   with ISDoneProgressBar1 do begin
    215.     Parent   := WizardForm.InstallingPage;
    216.     Height   := WizardForm.ProgressGauge.Height;
    217.     Left     := ScaleX(0);
    218.     Top      := PBTop;
    219.     Width    := ScaleX(365);
    220.     Max      := 1000;
    221.   end;
    222.   LabelPct1 := TLabel.Create(WizardForm);
    223.   with LabelPct1 do begin
    224.     Parent    := WizardForm.InstallingPage;
    225.     AutoSize  := False;
    226.     Left      := ISDoneProgressBar1.Width+ScaleX(5);
    227.     Top       := ISDoneProgressBar1.Top + ScaleY(2);
    228.     Width     := ScaleX(80);
    229.   end;
    230.   LabelCurrFileName := TLabel.Create(WizardForm);
    231.   with LabelCurrFileName do begin
    232.     Parent   := WizardForm.InstallingPage;
    233.     AutoSize := False;
    234.     Width    := ISDoneProgressBar1.Width+ScaleX(30);
    235.     Left     := ScaleX(0);
    236.     Top      := ScaleY(30);
    237.   end;
    238.   LabelTime1 := TLabel.Create(WizardForm);
    239.   with LabelTime1 do begin
    240.     Parent   := WizardForm.InstallingPage;
    241.     AutoSize := False;
    242.     Width    := ISDoneProgressBar1.Width div 2;
    243.     Left     := ScaleX(0);
    244.     Top      := PBTop + ScaleY(35);
    245.   end;
    246.   LabelTime2 := TLabel.Create(WizardForm);
    247.   with LabelTime2 do begin
    248.     Parent   := WizardForm.InstallingPage;
    249.     AutoSize := False;
    250.     Width    := LabelTime1.Width+ScaleX(40);
    251.     Left     := ISDoneProgressBar1.Width div 2;
    252.     Top      := LabelTime1.Top;
    253.   end;
    254.   LabelTime3 := TLabel.Create(WizardForm);
    255.   with LabelTime3 do begin
    256.     Parent   := WizardForm.FinishedPage;
    257.     AutoSize := False;
    258.     Width    := 300;
    259.     Left     := 180;
    260.     Top      := 200;
    261.   end;
    262.   MyCancelButton:=TButton.Create(WizardForm);
    263.   with MyCancelButton do begin
    264.     Parent:=WizardForm;
    265.     Width:=ScaleX(135);
    266.     Caption:=ExpandConstant('{cm:CancelButton}');
    267.     Left:=ScaleX(360);
    268.     Top:=WizardForm.cancelbutton.top;
    269.     OnClick:=@CancelButtonOnClick;
    270.   end;
    271. end;
    272.  
    273. Procedure CurPageChanged(CurPageID: Integer);
    274. Begin
    275.   if (CurPageID = wpFinished) and ISDoneError then
    276.   begin
    277.     LabelTime3.Hide;
    278.     WizardForm.Caption:= ExpandConstant('{cm:Error}');
    279.     WizardForm.FinishedLabel.Font.Color:= clRed;
    280.     WizardForm.FinishedLabel.Caption:= SetupMessage(msgSetupAborted) ;
    281.   end;
    282. end;
    283.  
    284. function CheckError:boolean;
    285. begin
    286.   result:= not ISDoneError;
    287. end;
    288.  
    289. procedure CurStepChanged(CurStep: TSetupStep);
    290. var Comps1,Comps2,Comps3, TmpValue:cardinal;
    291.     FindHandle1,ColFiles1,CurIndex1,tmp:integer;
    292.     ExecError:boolean;
    293.     InFilePath,OutFilePath,OutFileName:PAnsiChar;
    294. begin
    295.   if CurStep = ssInstall then begin  //Если необходимо, можно поменять на ssPostInstall
    296.     WizardForm.ProgressGauge.Hide;
    297.     WizardForm.CancelButton.Hide;
    298.     CreateControls;
    299.     WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}');
    300.     ISDoneCancel:=0;
    301.  
    302. // Распаковка всех необходимых файлов в папку {tmp}.
    303.  
    304. ExtractTemporaryFile('unarc.dll');
    305.  
    306. #ifdef PrecompInside
    307. ExtractTemporaryFile('CLS-precomp.dll');
    308. ExtractTemporaryFile('packjpg_dll.dll');
    309. ExtractTemporaryFile('packjpg_dll1.dll');
    310. ExtractTemporaryFile('precomp.exe');
    311. ExtractTemporaryFile('zlib1.dll');
    312. #endif
    313. #ifdef SrepInside
    314. ExtractTemporaryFile('CLS-srep.dll');
    315. #endif
    316. #ifdef MSCInside
    317. ExtractTemporaryFile('CLS-MSC.dll');
    318. #endif
    319. #ifdef facompress
    320.     ExtractTemporaryFile('facompress.dll'); //ускоряет распаковку .arc архивов.
    321. #endif
    322. #ifdef records
    323.     ExtractTemporaryFile('records.inf');
    324. #endif
    325. #ifdef precomp
    326.   #if precomp == "0.38"
    327.     ExtractTemporaryFile('precomp038.exe');
    328.   #else
    329.     #if precomp == "0.4"
    330.       ExtractTemporaryFile('precomp040.exe');
    331.     #else
    332.       #if precomp == "0.41"
    333.         ExtractTemporaryFile('precomp041.exe');
    334.       #else
    335.         #if precomp == "0.42"
    336.           ExtractTemporaryFile('precomp042.exe');
    337.         #else
    338.           ExtractTemporaryFile('precomp038.exe');
    339.           ExtractTemporaryFile('precomp040.exe');
    340.           ExtractTemporaryFile('precomp041.exe');
    341.           ExtractTemporaryFile('precomp042.exe');
    342.         #endif
    343.       #endif
    344.     #endif
    345.   #endif
    346. #endif
    347. #ifdef unrar
    348.     ExtractTemporaryFile('Unrar.dll');
    349. #endif
    350. #ifdef XDelta
    351.     ExtractTemporaryFile('XDelta3.dll');
    352. #endif
    353. #ifdef PackZIP
    354.     ExtractTemporaryFile('7z.dll');
    355.     ExtractTemporaryFile('PackZIP.exe');
    356. #endif
    357.  
    358.     ExtractTemporaryFile('English.ini');
    359.  
    360. // Подготавливаем переменную, содержащую всю информацию о выделенных компонентах для ISDone.dll
    361. // максимум 96 компонентов.
    362.     Comps1:=0; Comps2:=0; Comps3:=0;
    363. #ifdef Components
    364.     TmpValue:=1;
    365.     if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue;     //компонент 1
    366.     TmpValue:=TmpValue*2;
    367.     if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue;     //компонент 2
    368.     TmpValue:=TmpValue*2;
    369.     if IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue;    //компонент 3
    370.     TmpValue:=TmpValue*2;
    371.     if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue;    //компонент 4
    372. //    .....
    373. // см. справку
    374. #endif
    375.  
    376. #ifdef precomp
    377.   PCFVer:={#precomp};
    378. #else
    379.   PCFVer:=0;
    380. #endif
    381.     ISDoneError:=true;
    382.     if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
    383.       repeat
    384. //        ChangeLanguage('English');
    385.         if not SrepInit('',512,0) then break;
    386.         if not PrecompInit('',128,PCFVer) then break;
    387.         if not FileSearchInit(true) then break;
    388.  
    389.         if not ISArcExtract ( 0, 0, ExpandConstant('{src}\*.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
    390.  
    391. //    далее находятся закомментированые примеры различных функций распаковки (чтобы каждый раз не лазить в справку за примерами)
    392. (*
    393.         if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\arc.arc'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
    394.         if not IS7ZipExtract   ( 0, 0, ExpandConstant('{src}\CODMW2.7z'), ExpandConstant('{app}\data1'), false, '') then break;
    395.         if not ISRarExtract    ( 0, 0, ExpandConstant('{src}\data_*.rar'), ExpandConstant('{app}'), false, '') then break;
    396.         if not ISSRepExtract   ( 0, 0, ExpandConstant('{app}\data1024_1024.srep'),ExpandConstant('{app}\data1024.arc'), true) then break;
    397.         if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data.pcf'),    ExpandConstant('{app}\data.7z'), true) then break;
    398.         if not ISxDeltaExtract ( 0, 0, 0, 640, ExpandConstant('{app}\in.pcf'), ExpandConstant('{app}\*.diff'),   ExpandConstant('{app}\out.dat'), false, false) then break;
    399.         if not ISPackZIP       ( 0, 0, ExpandConstant('{app}\1a1\*'), ExpandConstant('{app}\1a1.pak'), 2, false ) then break;
    400.         if not ISExec          ( 0, 0, 0, ExpandConstant('{tmp}\Arc.exe'), ExpandConstant('x -o+ "{src}\001.arc" "{app}\"'), ExpandConstant('{tmp}'), '...',false) then break;
    401.         if not ShowChangeDiskWindow ('Пожалуйста, вставьте второй диск и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW_2.arc') then break;
    402.  
    403. //    распаковка группы файлов посредством внешнего приложения
    404.  
    405.         FindHandle1:=ISFindFiles(0,ExpandConstant('{app}\*.ogg'),ColFiles1);
    406.         ExecError:=false;
    407.         while not ExecError and ISPickFilename(FindHandle1,ExpandConstant('{app}\'),CurIndex1,true) do begin
    408.           InFilePath:=ISGetName(0);
    409.           OutFilePath:=ISGetName(1);
    410.           OutFileName:=ISGetName(2);
    411.           ExecError:=not ISExec(0, 0, 0, ExpandConstant('{tmp}\oggdec.exe'), '"'+InFilePath+'" -w "'+OutFilePath+'"',ExpandConstant('{tmp}'),OutFileName,false);
    412.         end;
    413.         ISFindFree(FindHandle1);
    414.         if ExecError then break;
    415. *)
    416.  
    417.         ISDoneError:=false;
    418.       until true;
    419.       ISDoneStop;
    420.     end;
    421.     HideControls;
    422.     WizardForm.CancelButton.Visible:=true;
    423.     WizardForm.CancelButton.Enabled:=false;
    424.   end;
    425.   if (CurStep=ssPostInstall) and ISDoneError then begin
    426.     Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false);
    427.   end;
    428. end;
    429.  
     
    Последнее редактирование: 26 фев 2012
  11. Пользователь

    Регистрация:
    3 янв 2012
    Сообщения:
    12
    Симпатии:
    0
    sergey3695, ну можно вот так сделать
    Код (Text):
    1. function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
    2. begin
    3.   if OveralPct<=10000 then ISDoneProgressBar1.Position := OveralPct;
    4.   LabelPct1.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+chr(48 + OveralPct mod 10)+'%';
    Так оно будет дублировать десятичную и сотую часть
     
  12. Пользователь

    Регистрация:
    19 фев 2012
    Сообщения:
    5
    Симпатии:
    0
    ботва + iswin 7 могут нормально вместе работать?
     
  13. Старожил Проверенный

    Регистрация:
    16 июн 2011
    Сообщения:
    219
    Симпатии:
    109
    Пол:
    Мужской
    respack,
    Ну по идее да. Смотря что вы хотите сделать?
     
Статус темы:
Закрыта.

Поделиться этой страницей