|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 4] |
|
Скрипты Inno Setup. Помощь и советы [часть 4]
|
Ветеран Сообщения: 1271 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Inno Setup [все вопросы] часть 1 Inno Setup [все вопросы] часть 2 Скрипты Inno Setup. Помощь и советы [часть 3] Продолжение обсуждения Скрипты Inno Setup. Помощь и советы [часть 5] |
|
Отправлено: 18:01, 29-08-2011 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать люди помогите сделать две кликабельные ссылки пожалуйста
вот код ; Installer by Evgeniy Bytaikis [Setup] AppName=Sigerous Mod äëÿ COP AppVerName=Sigerous Mod v2.2 DefaultDirName={pf}\S.T.A.L.K.E.R. - Çîâ Ïðèïÿòè InfoBeforeFile=embedded\InfoBefore.rtf WizardImageFile=embedded\WizardImage.bmp WizardSmallImageFile=embedded\logotip.bmp SetupIconFile=embedded\sgm.ico Compression=zip OutputDir=. [Languages] Name: eng; MessagesFile: compiler:Languages\english.isl Name: rus; MessagesFile: compiler:Languages\Russian.isl [CustomMessages] eng.ArcCancel=Îòìåíèòü eng.ArcBreak=Installation cancelled! eng.ExtractedInfo=Extracted %1 Mb of %2 Mb eng.ArcInfo=Archive: %1 of %2 eng.ArcTitle=Extracting FreeArc archive eng.ArcError=Decompression failed with error code %1 eng.ArcFail=Decompression failed! eng.AllProgress=Overall extraction progress: %1%% eng.ArcBroken=Archive %1 is damaged%nor not enough free space. eng.Extracting=Extracting: %1 eng.taskbar=%1%%, %2 remains eng.remains=Remaining time: %1 eng.LongTime=at no time eng.ending=ending eng.hour= hours eng.min= mins eng.sec= secs rus.ArcCancel=Îòìåíèòü ðàñïàêîâêó rus.ArcBreak=Óñòàíîâêà ïðåðâàíà! rus.ExtractedInfo=Ðàñïàêîâàíî %1 Ìá èç %2 Ìá rus.ArcInfo=Àðõèâ: %1 èç %2 rus.ArcTitle=Ðàñïàêîâêà àðõèâîâ FreeArc rus.ArcError=Ðàñïàêîâùèê FreeArc âåðíóë êîä îøèáêè: %1 rus.ArcFail=Ðàñïàêîâêà íå çàâåðøåíà! rus.AllProgress=Îáùèé ïðîãðåññ ðàñïàêîâêè: %1%% rus.ArcBroken=Âîçìîæíî, àðõèâ %1 ïîâðåæä¸í%nèëè íåäîñòàòî÷íî ìåñòà íà äèñêå íàçíà÷åíèÿ. rus.Extracting=Ðàñïàêîâûâàåòñÿ: %1 rus.taskbar=%1%%, æäè %2 rus.remains=Îñòàëîñü %1 rus.LongTime=âå÷íî rus.ending=çàâåðøåíèå rus.hour= ÷àñîâ rus.min= ìèí rus.sec= ñåê [Files] Source: *.arc; DestDir: {app}; Flags: dontcopy Source: unarc.dll; DestDir: {tmp}; Flags: dontcopy deleteafterinstall Source: compiler:InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy [_Code] { RedesignWizardFormBegin } // Íå óäàëÿòü ýòó ñòðîêó! // Íå èçìåíÿòü ýòó ñåêöèþ. Îíà ñîçäàíà àâòîìàòè÷åñêè. var Label1: TLabel; procedure RedesignWizardForm; begin { Label1 } Label1 := TLabel.Create(WizardForm); with Label1 do begin Name := 'Label1'; Parent := WizardForm.SelectDirPage; Caption := 'Ðàñïàêóéòå â ïàïêó ñ óñòàíîâëåíîé èãðîé Ñòàëêåð Çîâ Ïðèïÿòè'; Color := clBtnFace; Font.Color := clRed; Font.Height := -11; Font.Name := 'Tahoma'; Font.Style := []; ParentColor := False; ParentFont := False; Transparent := False; Left := ScaleX(0); Top := ScaleY(112); Width := ScaleX(328); Height := ScaleY(13); end; with WizardForm.WizardSmallBitmapImage do begin Left := ScaleX(0); Width := ScaleX(495); end; with WizardForm.PageDescriptionLabel do begin Left := ScaleX(0); Top := ScaleY(58); end; with WizardForm.PageNameLabel do begin Width := ScaleX(261); end; with WizardForm.FinishedLabel do begin Caption := 'Sigerous Mod äëÿ COP óñòàíîâëåí íà Âàø êîìïüþòåð. Ïðèëîæåíèå ìîæíî çàïóñòèòü ñ ïîìîùüþ ñîîòâåòñòâóþùåãî çíà÷êà.' + #13#10 + '' + #13#10 + 'Íàæìèòå «Çàâåðøèòü», ÷òîáû âûéòè èç ïðîãðàììû óñòàíîâêè.' + #13#10 + ''; end; { ReservationBegin } // Âû ìîæåòå äîáàâèòü âàø êîä çäåñü. { ReservationEnd } end; // Íå èçìåíÿòü ýòó ñåêöèþ. Îíà ñîçäàíà àâòîìàòè÷åñêè. { RedesignWizardFormEnd } // Íå óäàëÿòü ýòó ñòðîêó! const Archives = '{src}\*.arc'; // óêàæèòå ðàñïîëîæåíèå àðõèâîâ FreeArc; äëÿ âíåøíèõ ôàéëîâ ñòðîêó â [Files] äîáàâëÿòü íåîáÿçàòåëüíî totalSize = 2387; // total uncompressed size of archive data in mb, REQUIRED for correct progress displaying PM_REMOVE = 1; CP_ACP = 0; CP_UTF8 = 65001; type #ifdef UNICODE ; åñëè ó âàñ îøèáêà íà ýòîé ñòðîêå, òî óñòàíîâèòå ïðåïðîöåññîð èëè èñïðàâüòå ñêðèïò äëÿ âàøåé âåðñèè Inno Setup #define A "W" #else #define A "A" ; òî÷êà âõîäà â SetWindowText, {#A} ìåíÿåòñÿ íà A èëè W â çàâèñèìîñòè îò âåðñèè #endif #if Ver < 84018176 AnsiString = String; // There is no need for this line in Inno Setup 5.2.4 and below (äëÿ Inno Setup âåðñèé 5.2.4 è âûøå ýòà ñòðîêà íå íóæíà) #endif TMyMsg = record hwnd: HWND; message: UINT; wParam: Longint; lParam: Longint; time: DWORD; pt: TPoint; end; TFreeArcCallback = function (what: PAnsiChar; int1, int2: Integer; str: PAnsiChar): Integer; TArc = record Path: string; Size: Extended; end; var ExtractFile: TLabel; lblExtractFileName: TLabel; btnCancelUnpacking: TButton; CancelCode, n, UnPackError, StartInstall: Integer; Arcs: array of TArc; msgError: string; lastMb: Integer; baseMb: Integer; LastTimerEvent: DWORD; MouseLabel,SiteLabel: TLabel; // Êëèêàáåëüíàÿ òåêñòîâàÿ http-ññûëêà â ëåâîì íèæíåì óãëó èíñòàëëåðà // Function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: string; cbMultiByte: integer; lpWideCharStr: string; cchWideChar: integer): longint; external 'MultiByteToWideChar@kernel32.dll stdcall'; Function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD; lpWideCharStr: string; cchWideChar: integer; lpMultiByteStr: string; cbMultiByte: integer; lpDefaultChar: integer; lpUsedDefaultChar: integer): longint; external 'WideCharToMultiByte@kernel32.dll stdcall'; function PeekMessage(var lpMsg: TMyMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall'; function TranslateMessage(const lpMsg: TMyMsg): BOOL; external 'TranslateMessage@user32.dll stdcall'; function DispatchMessage(const lpMsg: TMyMsg): Longint; external 'DispatchMessageA@user32.dll stdcall'; Function OemToChar(lpszSrc, lpszDst: AnsiString): longint; external 'OemToCharA@user32.dll stdcall'; function GetWindowLong(hWnd, nIndex: Integer): Longint; external 'GetWindowLongA@user32 stdcall delayload'; function SetWindowText(hWnd: Longint; lpString: String): Longint; external 'SetWindowText{#A}@user32 stdcall delayload'; function GetTickCount: DWord; external 'GetTickCount@kernel32'; function WrapFreeArcCallback (callback: TFreeArcCallback; paramcount: integer):longword; external 'wrapcallback@files:innocallback.dll stdcall'; function FreeArcExtract (callback: longword; cmd1,cmd2,cmd3,cmd4,cmd5,cmd6,cmd7,cmd8,cmd9,cmd10: PAnsiChar): integer; external 'FreeArcExtract@files:unarc.dll cdecl'; ///////////////// Êëèêàáåëüíàÿ òåêñòîâàÿ http-ññûëêà â ëåâîì íèæíåì óãëó èíñòàëëåðà ///////////////// procedure SiteLabelOnClick(Sender: TObject); var ErrorCode: Integer; begin ShellExec('open', 'http://vk.com/by_gangster', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode); end; procedure SiteLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin SiteLabel.Font.Color:=clRed; end; procedure SiteLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin SiteLabel.Font.Color:=clblue; end; procedure SiteLabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin SiteLabel.Font.Color:=clGreen; end; procedure SiteLabelMouseMove2(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin SiteLabel.Font.Color:=clblue; end; ///////////////// Êëèêàáåëüíàÿ òåêñòîâàÿ http-ññûëêà â ëåâîì íèæíåì óãëó èíñòàëëåðà ///////////////// procedure AppProcessMessage; var Msg: TMyMsg; begin while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; end; // Ïåðåâîä ÷èñëà â ñòðîêó ñ òî÷íîñòüþ 3 çíàêà (%.3n) ñ îêðóãëåíèåì äðîáíîé ÷àñòè, åñëè îíà åñòü Function NumToStr(Float: Extended): String; Begin Result:= Format('%.3n', [Float]); StringChange(Result, ',', '.'); while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Length(Result) > 1) do SetLength(Result, Length(Result)-1); End; function cm(Message: String): String; Begin Result:= ExpandConstant('{cm:'+ Message +'}') End; Function Size64(Hi, Lo: Integer): Extended; Begin Result:= Lo; if Lo<0 then Result:= Result + $7FFFFFFF + $7FFFFFFF + 2; for Hi:= Hi-1 Downto 0 do Result:= Result + $7FFFFFFF + $7FFFFFFF + 2; End; // OnClick event function for btnCancel procedure btnCancelUnpackingOnClick(Sender: TObject); begin if MsgBox( SetupMessage( msgExitSetupMessage ), mbInformation, MB_YESNO ) = IDYES then CancelCode:= -127; end; // Scans the specified folders for archives and add them to list function FindArcs(dir: string): Extended; var FSR: TFindRec; Begin if FindFirst(ExpandConstant(dir), FSR) then try repeat // Skip everything but the folders if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY > 0 then CONTINUE; n:= GetArrayLength(Arcs); // Expand the folder list SetArrayLength(Arcs, n +1); Arcs[n].Path:= ExtractFilePath(ExpandConstant(Archives)) + FSR.Name; Arcs[n].Size:= Size64(FSR.SizeHigh, FSR.SizeLow); Result:= Result + Arcs[n].Size; until not FindNext(FSR); finally FindClose(FSR); end; End; // Converts OEM encoded string into ANSI // Ïðåîáðàçóåò OEM ñòðîêó â ANSI êîäèðîâêó function OemToAnsiStr( strSource: AnsiString): AnsiString; var nRet : longint; begin SetLength( Result, Length( strSource ) ); nRet:= OemToChar( strSource, Result ); end; // Converts ANSI encoded string into UTF-8 // Ïðåîáðàçóåò ñòðîêó èç ANSI â UTF-8 êîäèðîâêó function AnsiToUtf8( strSource: string ): string; var nRet : integer; WideCharBuf: string; MultiByteBuf: string; begin strSource:= strSource + chr(0); SetLength( WideCharBuf, Length( strSource ) * 2 ); SetLength( MultiByteBuf, Length( strSource ) * 2 ); nRet:= MultiByteToWideChar( CP_ACP, 0, strSource, -1, WideCharBuf, Length(WideCharBuf) ); nRet:= WideCharToMultiByte( CP_UTF8, 0, WideCharBuf, -1, MultiByteBuf, Length(MultiByteBuf), 0, 0); Result:= MultiByteBuf; end; // Sets the TaskBar title Procedure SetTaskBarTitle(Title: String); var h: Integer; Begin h:= GetWindowLong(MainForm.Handle, -8); if h <> 0 then SetWindowText(h, Title); End; // Converts milliseconds to human-readable time // Êîíâåðòèðóåò ìèëèñåêóíäû â ÷åëîâåêî-÷èòàåìîå èçîáðàæåíèå âðåìåíè Function TicksToTime(Ticks: DWord; h,m,s: String; detail: Boolean): String; Begin if detail then {hh:mm:ss format} Result:= PADZ(IntToStr(Ticks/3600000), 2) +':'+ PADZ(IntToStr((Ticks/1000 - Ticks/1000/3600*3600)/60), 2) +':'+ PADZ(IntToStr(Ticks/1000 - Ticks/1000/60*60), 2) else if Ticks/3600 >= 1000 {more than hour} then Result:= IntToStr(Ticks/3600000) +h+' '+ PADZ(IntToStr((Ticks/1000 - Ticks/1000/3600*3600)/60), 2) +m else if Ticks/60 >= 1000 then {1..60 minutes} Result:= IntToStr(Ticks/60000) +m+' '+ PADZ(IntToStr(Ticks/1000 - Ticks/1000/60*60), 2) +s else Result:= IntToStr(Ticks/1000) +s {less than one minute} End; // The main callback function for unpacking FreeArc archives function FreeArcCallback (what: PAnsiChar; Mb, sizeArc: Integer; str: PAnsiChar): Integer; var percents, Remaining: Integer; s: String; begin if GetTickCount - LastTimerEvent > 1000 then begin // This code will be executed once each 1000 ms (ýòîò êîä áóäåò âûïîëíÿòüñÿ ðàç â 1000 ìèëëèñåêóíä) // .... // End of code executed by timer LastTimerEvent := LastTimerEvent+1000; end; if string(what)='filename' then begin // Update FileName label lblExtractFileName.Caption:= FmtMessage( cm( 'Extracting' ), [OemToAnsiStr( str )] ) end else if (string(what)='written') and (totalSize>0) and (Mb>lastMb) then begin // Assign to Mb *total* amount of data extracted to the moment from all archives lastMb := Mb; Mb := baseMb+Mb; // Update progress bar WizardForm.ProgressGauge.Position:= Mb; // Show how much megabytes/archives were processed up to the moment percents:= (Mb*1000) div totalSize; s := FmtMessage(cm('ExtractedInfo'), [IntToStr(Mb), IntToStr(totalSize)]); if GetArrayLength(Arcs)>1 then s := s + '. '+FmtMessage(cm('ArcInfo'), [IntToStr(n+1), IntToStr(GetArrayLength(Arcs))]); ExtractFile.Caption := s; // Calculate and show current percents percents:= (Mb*1000) div totalSize; s:= FmtMessage(cm('AllProgress'), [Format('%.1n', [Abs(percents/10)])]); if Mb > 0 then Remaining:= trunc((GetTickCount - StartInstall) * Abs((totalSize - Mb)/Mb)) else Remaining:= 0; if Remaining = 0 then SetTaskBarTitle(cm('ending')) else begin s:= s + '. '+FmtMessage(cm('remains'), [TicksToTime(Remaining, cm('hour'), cm('min'), cm('sec'), false)]) SetTaskBarTitle(FmtMessage(cm('taskbar'), [IntToStr(percents/10), TicksToTime(Remaining, 'h', 'm', 's', false)])) end; WizardForm.FileNameLabel.Caption := s end; AppProcessMessage; Result:= CancelCode; end; // Extracts all found archives function UnPack(Archives: string): Integer; var allSize: Extended; callback: longword; FreeMB, TotalMB: Cardinal; begin // Display 'Extracting FreeArc archive' lblExtractFileName.Caption:= ''; lblExtractFileName.Show; ExtractFile.caption:= cm('ArcTitle'); ExtractFile.Show; // Show the 'Cancel unpacking' button and set it as default button btnCancelUnpacking.Show; WizardForm.ActiveControl:= btnCancelUnpacking; WizardForm.ProgressGauge.Position:= 0; WizardForm.ProgressGauge.Max:= totalSize; // Get the size of all archives allSize:= FindArcs(Archives); // Other initializations callback:= WrapFreeArcCallback(@FreeArcCallback,4); //FreeArcCallback has 4 arguments StartInstall:= GetTickCount; {âðåìÿ íà÷àëà ðàñïàêîâêè} LastTimerEvent:= GetTickCount; baseMb:= 0 for n:= 0 to GetArrayLength(Arcs) -1 do begin lastMb := 0 CancelCode:= 0; AppProcessMessage; try // Pass the specified arguments to 'unarc.dll' Result:= FreeArcExtract (callback, 'x', '-o+', '-dp' + AnsiToUtf8( ExpandConstant('{app}') ), '--', AnsiToUtf8(Arcs[n].Path), '', '', '', '', ''); if CancelCode < 0 then Result:= CancelCode; except Result:= -63; // ArcFail end; baseMb:= baseMb+lastMb // Error occured if Result <> 0 then begin msgError:= FmtMessage(cm('ArcError'), [IntToStr(Result)]); GetSpaceOnDisk(ExtractFileDrive(ExpandConstant('{app}')), True, FreeMB, TotalMB); case Result of -1: if FreeMB < 32 {Ìá íà äèñêå} then msgError:= SetupMessage(msgDiskSpaceWarningTitle) else msgError:= msgError + #13#10 + FmtMessage(cm('ArcBroken'), [ExtractFileName(Arcs[n].Path)]); -127: msgError:= cm('ArcBreak'); //Cancel button -63: msgError:= cm('ArcFail'); end; // MsgBox(msgError, mbInformation, MB_OK); //ñîîáùåíèå ïîêàçûâàåòñÿ íà ñòðàíèöå çàâåðøåíèÿ Log(msgError); Break; //ïðåðâàòü öèêë ðàñïàêîâêè end; end; // Hide labels and button lblExtractFileName.Hide; ExtractFile.Hide; btnCancelUnpacking.Hide; end; procedure CurStepChanged(CurStep: TSetupStep); begin if CurStep = ssPostInstall then begin UnPackError:= UnPack(Archives) if UnPackError = 0 then SetTaskBarTitle(SetupMessage(msgSetupAppTitle)) else begin // Error occured, uninstall it then Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n); //îòêàò óñòàíîâêè èç-çà îøèáêè unarc.dll SetTaskBarTitle(SetupMessage(msgErrorTitle)) WizardForm.Caption:= SetupMessage(msgErrorTitle) +' - '+ cm('ArcBreak') end; end; end; // ñòàíäàðòíûé ñïîñîá îòêàòà (íå íóæíà CurPageChanged), íî àðõèâû ðàñïàêîâûâàþòñÿ äî èçâëå÷åíèÿ ôàéëîâ èíñòàëëÿòîðà // if CurStep = ssInstall then // if UnPack(Archives) <> 0 then Abort; Procedure CurPageChanged(CurPageID: Integer); Begin if (CurPageID = wpFinished) and (UnPackError <> 0) then begin // Extraction was unsuccessful (ðàñïàêîâùèê âåðíóë îøèáêó) WizardForm.FinishedLabel.Font.Color:= $0000C0; // red (êðàñíûé) WizardForm.FinishedLabel.Height:= WizardForm.FinishedLabel.Height * 2; WizardForm.FinishedLabel.Caption:= SetupMessage(msgSetupAborted) + #13#10#13#10 + msgError; end; End; procedure InitializeWizard(); begin RedesignWizardForm; with WizardForm.ProgressGauge do begin // Create a label to show current FileName being extracted lblExtractFileName:= TLabel.Create(WizardForm); lblExtractFileName.parent:=WizardForm.InstallingPage; lblExtractFileName.autosize:=false; lblExtractFileName.Width:= Width; lblExtractFileName.top:=Top + ScaleY(35); lblExtractFileName.Caption:= ''; lblExtractFileName.Hide; // Create a label to show percentage ExtractFile:= TLabel.Create(WizardForm); ExtractFile.parent:=WizardForm.InstallingPage; ExtractFile.autosize:=false; ExtractFile.Width:= Width; ExtractFile.top:=lblExtractFileName.Top + ScaleY(16); ExtractFile.caption:= ''; ExtractFile.Hide; end; // Create a 'Cancel unpacking' button and hide it for now. btnCancelUnpacking:=TButton.create(WizardForm); btnCancelUnpacking.Parent:= WizardForm; btnCancelUnpacking.SetBounds(ScaleX(260), WizardForm.cancelbutton.top, ScaleX(140), WizardForm.cancelbutton.Height); btnCancelUnpacking.OnClick:= @btnCancelUnpackingOnClick; btnCancelUnpacking.Caption:= cm('ArcCancel'); btnCancelUnpacking.Hide; ///////////////// Êëèêàáåëüíàÿ òåêñòîâàÿ http-ññûëêà â ëåâîì íèæíåì óãëó èíñòàëëåðà ///////////////// MouseLabel:=TLabel.Create(WizardForm); MouseLabel.Width:=WizardForm.Width; MouseLabel.Height:=WizardForm.Height; MouseLabel.Autosize:=False; MouseLabel.Transparent:=True; MouseLabel.OnMouseMove:=@SiteLabelMouseMove2; MouseLabel.Parent:=WizardForm; SiteLabel:=TLabel.Create(WizardForm); SiteLabel.Left:=10; SiteLabel.Top:=330; SiteLabel.Cursor:=crHand; SiteLabel.Font.Color:=clblue; SiteLabel.Caption:='Installer by Evgeniy Bytaikis'; SiteLabel.OnClick:=@SiteLabelOnClick; SiteLabel.OnMouseDown:=@SiteLabelMouseDown; SiteLabel.OnMouseUp:=@SiteLabelMouseUp; SiteLabel.OnMouseMove:=@SiteLabelMouseMove; SiteLabel.Parent:=WizardForm; ///////////////// Êëèêàáåëüíàÿ òåêñòîâàÿ http-ññûëêà â ëåâîì íèæíåì óãëó èíñòàëëåðà ///////////////// end; [ISFormDesigner] WizardForm=FF0A005457495A415244464F524D0030103F06000054504630F10B5457697A617264466F726D0A57697A617264466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C65667402000B4578706C69636974546F7002000D4578706C6963697457696474680301020E4578706C69636974486569676874038E010D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D65506167650D4578706C69636974576964746803F1010E4578706C696369744865696768740339010000F110544E65774E6F7465626F6F6B5061676509496E6E6572506167650D4578706C69636974576964746803F1010E4578706C6963697448656967687403390100F10C544E65774E6F7465626F6F6B0D496E6E65724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B4C6963656E7365506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6F6B506167650D53656C656374446972506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED0000F2020106544C6162656C064C6162656C31044C656674020003546F70027005576964746803480106486569676874020D0743617074696F6E146E000000D0A0D0B0D181D0BFD0B0D0BAD183D0B9D182D0B520D0B220D0BFD0B0D0BFD0BAD18320D18120D183D181D182D0B0D0BDD0BED0B2D0BBD0B5D0BDD0BED0B920D0B8D0B3D180D0BED0B920D0A1D182D0B0D0BBD0BAD0B5D18020D097D0BED0B220D09FD180D0B8D0BFD18FD182D0B805436F6C6F720709636C42746E466163650C466F6E742E43686172736574070F44454641554C545F434841525345540A466F6E742E436F6C6F720705636C5265640B466F6E742E48656967687402F509466F6E742E4E616D6506065461686F6D610A466F6E742E5374796C650B000B506172656E74436F6C6F72080A506172656E74466F6E74080B5472616E73706172656E7408000000F110544E65774E6F7465626F6F6B50616765095265616479506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6F6B506167650E496E7374616C6C696E67506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED00000000F1065450616E656C094D61696E50616E656C00F10C544269746D6170496D6167651657697A617264536D616C6C4269746D6170496D616765044C656674020005576964746803EF010C4578706C696369744C65667402000D4578706C69636974576964746803EF010000F10E544E65775374617469635465787414506167654465736372697074696F6E4C6162656C044C656674020003546F70023A0C4578706C696369744C65667402000B4578706C69636974546F70023A0000F10E544E6577537461746963546578740D506167654E616D654C6162656C0557696474680305010D4578706C69636974576964746803050100000000F110544E65774E6F7465626F6F6B506167650C46696E6973686564506167650D4578706C69636974576964746803F1010E4578706C6963697448656967687403390100F10E544E6577537461746963546578740D46696E69736865644C6162656C0743617074696F6E142E01000053696765726F7573204D6F6420D0B4D0BBD18F20434F5020D183D181D182D0B0D0BDD0BED0B2D0BBD0B5D0BD20D0BDD0B020D092D0B0D18820D0BAD0BED0BCD0BFD18CD18ED182D0B5D1802E20D09FD180D0B8D0BBD0BED0B6D0B5D0BDD0B8D0B520D0BCD0BED0B6D0BDD0BE20D0B7D0B0D0BFD183D181D182D0B8D182D18C20D18120D0BFD0BED0BCD0BED189D18CD18E20D181D0BED0BED182D0B2D0B5D182D181D182D0B2D183D18ED189D0B5D0B3D0BE20D0B7D0BDD0B0D187D0BAD0B02E0D0A0D0AD09DD0B0D0B6D0BCD0B8D182D0B520C2ABD097D0B0D0B2D0B5D180D188D0B8D182D18CC2BB2C20D187D182D0BED0B1D18B20D0B2D18BD0B9D182D0B820D0B8D0B720D0BFD180D0BED0B3D180D0B0D0BCD0BCD18B20D183D181D182D0B0D0BDD0BED0B2D0BAD0B82E0D0A0000000000 |
Отправлено: 20:04, 18-03-2012 | #1161 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Забанен Сообщения: 216
|
Цитата alex_13_15:
Цитата boss911:
1 вариант на сколько мне известно. Иконка для инсталятора, она же идёт для деинсталятора unins000.exe. Второй вариант [Icons] Name: {group}\{cm:UninstallProgram,My Program}; Filename: {uninstallexe}; IconFilename: icon.ico Других вариантов не вижу. |
||
Последний раз редактировалось Devils Night, 19-03-2012 в 22:29. Отправлено: 21:55, 18-03-2012 | #1162 |
Ветеран Сообщения: 1133
|
Профиль | Отправить PM | Цитировать Цитата Stable19:
Цитата FX-DENIS:
|
||
------- Отправлено: 22:03, 18-03-2012 | #1163 |
Пользователь Сообщения: 75
|
Профиль | Отправить PM | Цитировать Цитата Serega:
|
|
Последний раз редактировалось FX-DENIS, 18-03-2012 в 23:24. Причина: опечатки Отправлено: 23:21, 18-03-2012 | #1164 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать Спасибо всем за все предыдущие ответы и советы!
Я перечитал литературу, но несмог найти что ищю. Скажите пожалста, какой скрипт нужно написать, который непозволит деинсталятору удалить определённую папку (файл) и после окончания деинсталяции чтоб появлялось сообщение: "определённые парки не тронуты.". |
Отправлено: 23:28, 18-03-2012 | #1165 |
Alien Сообщения: 4262
|
Профиль | Отправить PM | Цитировать Devils Night, вы бы уточнили, что это иконка ярлыка от деинсталлятора, а не самого файла Uninstall.exe.
alex_13_15, файлу Uninstall.exe задать свою иконку нельзя, разве что поменять ее самостоятельно и компилировать проект уже с этим деинсталлятором и не забыть прописать 'Uninstallable=false'. Не совсем красивый метод, но другого я не знаю. |
Отправлено: 23:33, 18-03-2012 | #1166 |
Ветеран Сообщения: 1133
|
Профиль | Отправить PM | Цитировать FX-DENIS, дайте именно тот скрипт, в котором возникла ваша ошибка, а лучше всего залить архив на файлообменник, для теста. В скрипте, который вы приводите выше, ошибок не вижу.
Цитата rasim933:
|
|
------- Отправлено: 00:04, 19-03-2012 | #1167 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать Попробую снова.
Установил игру. Запускаю деинстолятор. Ону даляет все файлы которые находятся в папке с игрой. Мне нужен скрипт. Который недаст удалить нужную мне папку. Пример: запусткаю деинстолятор, он удаляет все файлы кроме нужной мне папкии, выскакивает окно с надписью: такая-то папка небыла удалена. |
Отправлено: 00:09, 19-03-2012 | #1168 |
Ветеран Сообщения: 608
|
Как скрыть появление лого на странице установки
|
Последний раз редактировалось Ivan_009, 24-03-2012 в 01:15. Отправлено: 00:53, 19-03-2012 | #1169 |
Пользователь Сообщения: 75
|
Профиль | Отправить PM | Цитировать Цитата Serega:
И прикреплю сам скрипт,раз так надо для теста |
|
Отправлено: 04:08, 19-03-2012 | #1170 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Test | ferget | Тест-форум | 0 | 24-08-2011 01:25 | |
test | ! ! Aaa ! ! | Тест-форум | 0 | 23-04-2011 11:29 | |
test | Santa aka Snt | Тест-форум | 0 | 16-04-2011 22:35 | |
test | xolod. | Программное обеспечение Linux и FreeBSD | 0 | 19-04-2009 21:03 | |
Test memory | KEugeNik | Хочу все знать | 11 | 23-11-2003 23:11 |
|