|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 8] |
|
Скрипты Inno Setup. Помощь и советы [часть 8]
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы (Archive Pack 1):
Скрипты Inno Setup. Помощь и советы [часть 6] Скрипты Inno Setup. Помощь и советы [часть 7] |
|
Отправлено: 08:52, 02-02-2015 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать Ребята , помогите з скриптом , оочень нужно ((
|
Отправлено: 22:12, 12-02-2015 | #101 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Старожил Сообщения: 399
|
Профиль | Отправить PM | Цитировать Цитата ShadeUa:
![]() Описание проблемы и скрипт в студию. ![]() |
|
Отправлено: 22:41, 12-02-2015 | #102 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать Цитата Shift85:
http://forum.oszone.net/post-2470094-95.html вот я писал , там просто не так его соеденил , и сам же скрипт |
|
Отправлено: 23:51, 12-02-2015 | #103 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать самого сначала я хотел просто впихнуть тот скрипт на языки в свой инстал , но потом с той проблемой я понял что для меня, и моих знаний ето не невзомжно по етому попросил у експертов на форуме
|
Отправлено: 18:03, 13-02-2015 | #104 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать
Помогите пож. перевести два кода с ansi в unicode.
|
||||||||
Отправлено: 14:59, 14-02-2015 | #105 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать ROMKA-1977, Пробуйте:
Disks
[Setup] OutputDir=Setup AppName=DisksInfo VersionInfoVersion=5.0 AppVerName=DisksInfo DefaultDirName={pf}\My program EnableDirDoesntExistWarning=true [CustomMessages] Ru.SysDirSelect=Выбранный путь включает в себя системную папку!%nВы уверены, что необходимо продолжать установку? [Languages] Name: Ru; MessagesFile: compiler:Languages\Russian.isl [Icons] Name: {group}\Notepad; Filename: notepad.exe [Code] type PcHar=Pansichar; var n: Integer; FreeMB, TotalMB: Cardinal; VolumeName, FileSystemName: String; VolumeSerialNo, MaxComponentLength, FileSystemFlags: Longint; ListBox: TListBox; const oneMB= 1024*1024; function GetLogicalDrives: DWord; external 'GetLogicalDrives@kernel32.dll stdcall'; function GetDriveType(nDrive: String): Longint; external 'GetDriveTypeA@kernel32.dll stdcall'; function GetVolumeInformation(PathName,VolumeName: PChar; VolumeNameSize,VolumeSerialNumber,MaxComponentLength,FileSystemFlags: Longint; FileSystemName: PChar; FileSystemNameSize: Longint): Longint; external 'GetVolumeInformationA@kernel32.dll stdcall'; function MessageBox(hWnd: Integer; lpText, lpCaption: String; uType: Cardinal): Integer; external 'MessageBoxA@user32.dll stdcall'; Function ByteOrTB(Bytes: Extended; noMB: Boolean): String; { Перевод числа в значение бт/Кб/Мб/Гб/Тб (до 3х знаков после запятой)} Begin if not noMB then Result:= FloatToStr(Int(Bytes)) +' Мб' else if Bytes < 1024 then Result:= FloatToStr(Int(Bytes)) +' Бт' else if Bytes/1024 < 1024 then Result:= FloatToStr(round((Bytes/1024)*10)/10) +' Кб' else If Bytes/oneMB < 1024 then Result:= FloatToStr(round(Bytes/oneMB*100)/100) +' Мб' else If Bytes/oneMB/1000 < 1024 then Result:= FloatToStr(round(Bytes/oneMB/1024*1000)/1000) +' Гб' else Result:= FloatToStr(round(Bytes/oneMB/oneMB*1000)/1000) +' Тб'; StringChange(Result, ',', '.'); End; Function DelSP(String: String): String; { Удаление начальных, конечных и повторных пробелов } Begin while (Pos(' ', String) > 0) do Delete(String, Pos(' ', String), 1); Result:= Trim(String); End; Function CutString(String: String; MaxLength: Longint): String; { Обрезать строку до заданного кол-ва символов} Begin if Length(String) > MaxLength then Result:= Copy(String, 1, 6) +'...'+ Copy(String, Length(String) - MaxLength +9, MaxLength) else Result:= String; End; Procedure GetDiskInfo(Disk: String); Begin FileSystemName:= StringOfChar(' ', 32); VolumeName:= StringOfChar(' ', 256); GetVolumeInformation(Disk, VolumeName, 255, VolumeSerialNo, MaxComponentLength, FileSystemFlags, FileSystemName, 31); FileSystemName:= DelSp(FileSystemName); VolumeName:= DelSp(VolumeName); if VolumeName='' then VolumeName:='без метки'; End; Procedure ListBoxRefresh; var FreeB, TotalB: Cardinal; Path, String: string; Begin ListBox.Items.Clear for n:= 1 to 31 do // диск 'А' пропустить if (GetLogicalDrives and (1 shl n)) > 0 then if (GetDriveType(Chr(ord('A') + n) +':\') = 2) or (GetDriveType(Chr(ord('A') + n) +':\') = 3) then if GetSpaceOnDisk(Chr(ord('A') + n) +':\', True, FreeMB, TotalMB) then ListBox.Items.Add(Chr(ord('A') + n) +':'); for n:= 0 to ListBox.Items.Count -1 do begin Path:= Copy(ListBox.Items[n],1,2) +'\' { если в накопителе нет диска, пропустить обновление } if GetSpaceOnDisk(Path, False, FreeB, TotalB) and GetSpaceOnDisk(Path, True, FreeMB, TotalMB) then begin GetDiskInfo(Path); if FreeB >= $7FFFFFFF then String:= PadL(ByteOrTB(FreeMB*oneMB, true),10) else String:= PadL(ByteOrTB(FreeB, true),10); if TotalB >= $7FFFFFFF then begin TotalB:= TotalMB; FreeB:= FreeMB; String:= PadL(ByteOrTB(TotalMB*oneMB, true),11) +' всего| '+ String end else String:= PadL(ByteOrTB(TotalB, true),11) +' всего| '+ String; ListBox.Items[n]:= Copy(Path,1,2) + String + PadL(FloatToStr(round(FreeB/TotalB*100)),3)+ '% своб|'+ PadL(FileSystemName,5)+ '| '+ CutString(VolumeName,9); end; end; End; Procedure ObjectOnClick(Sender: TObject); Begin Case TObject(Sender) of ListBox: for n:= 0 to ListBox.Items.Count-1 do if ListBox.Selected[n] then WizardForm.DirEdit.Text:= Copy(ListBox.Items[n],1,1) +Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text)) end; End; Function NextButtonClick(CurPageID: Integer): Boolean; Begin Result:= True if (CurPageID = wpSelectDir) and (Pos(Uppercase(ExpandConstant('{win}')), Uppercase(ExpandConstant('{app}'))) > 0) then Result:= MessageBox(StrToInt(ExpandConstant('{wizardhwnd}')), ExpandConstant('{cm:SysDirSelect}'), 'Установка в системную папку', MB_YESNO or $30) = idYes; End; Procedure CurPageChanged(CurPageID: Integer); Begin if CurPageID = wpSelectDir then ListBoxRefresh End; Procedure InitializeWizard; Begin ListBox:= TListBox.Create(WizardForm) ListBox.SetBounds(WizardForm.DirEdit.Left, WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + 8, WizardForm.DirBrowseButton.Left + WizardForm.DirBrowseButton.Width - WizardForm.DirEdit.Left, WizardForm.DiskSpaceLabel.Top - (WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + 12)) ListBox.Font.Size:= 9 ListBox.Font.Style:= [fsBold] ListBox.Font.Name:= 'Courier New'; ListBox.OnClick:= @ObjectOnClick; ListBox.Parent:= WizardForm.SelectDirPage; End; GameuxInstallHelper
#define MainExe "{app}\MassEffectLauncher.exe" #define GDFBinary "{app}\Binaries\MassEffectGDF.dll" [Files] Source: GameuxInstallHelper.dll; DestDir: {app}; Flags: overwritereadonly [Code] #ifdef UNICODE #define A "W" #else #define A "A" #endif type TGUID = record Data1: Cardinal; Data2, Data3: Word; Data4: array [0..8] of char; end; function GenerateGUID(var GUID: TGUID): Cardinal; external 'GenerateGUID{#A}@files:GameuxInstallHelper.dll stdcall setuponly'; function AddToGameExplorer(Binary: String; Path: String; InstallType: Integer; var GUID: TGUID): Cardinal; external 'AddToGameExplorerA{#A}@files:GameuxInstallHelper.dll stdcall setuponly'; function CreateTask(InstallType: Integer; var GUID: TGUID; TaskType: Integer; TaskNumber: Integer; TaskName: String; Binary: String; Parameters: String): Cardinal; external 'CreateTaskA@files:GameuxInstallHelper.dll stdcall setuponly'; function RetrieveGUIDForApplication(Binary: String; var GUID: TGUID): Cardinal; external 'RetrieveGUIDForApplicationA@{app}\GameuxInstallHelper.dll stdcall uninstallonly'; function RemoveFromGameExplorer(var GUID: TGUID): Cardinal; external 'RemoveFromGameExplorer@{app}\GameuxInstallHelper.dll stdcall uninstallonly'; function RemoveTasks(var GUID: TGUID): Cardinal; external 'RemoveTasks@{app}\GameuxInstallHelper.dll stdcall uninstallonly'; const PlayTask = 0; SupportTask = 1; var GUID: TGUID; procedure CurStepChanged(CurStep: TSetupStep); var Binary, MainExe: String; begin if CurStep = ssInstall then GenerateGUID(GUID); if CurStep = ssPostInstall then begin Binary:=ExpandConstant('{#GDFBinary}'); MainExe:=ExpandConstant('{#MainExe}'); AddToGameExplorer(Binary, ExpandConstant('{app}'), 3, GUID); CreateTask(3, GUID, PlayTask, 0, 'Play', MainExe, ''); CreateTask(3, GUID, SupportTask, 0, 'BioWare Website', 'http://www.bioware.com/', ''); CreateTask(3, GUID, SupportTask, 1, 'Support WebSite', 'http://masseffect.bioware.com/route/me/pc/vt/cs/en/', ''); end; end; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); var Binary: String; GUID: TGUID; begin if CurUninstallStep=usUninstall then begin Binary:=ExpandConstant('{#GDFBinary}'); RetrieveGUIDForApplication(Binary, GUID); RemoveFromGameExplorer(GUID); RemoveTasks(GUID); UnloadDll(ExpandConstant('{app}\GameuxInstallHelper.dll')); end; end; |
------- Отправлено: 15:46, 14-02-2015 | #106 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Цитата Dodakaedr:
код с дисками ничего не отображает. |
|
Отправлено: 16:12, 14-02-2015 | #107 |
Пользователь Сообщения: 119
|
Профиль | Отправить PM | Цитировать Всем привет, можно ли сделать несколько страниц Components, если да, то как?
Заранее спасибо за ответы! |
Отправлено: 17:37, 14-02-2015 | #108 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Цитата Kashtan007:
Пример
[Setup] AppName=MyApp AppVerName=MyApp DefaultDirname={pf}\MyApp [Languages] Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl" [CustomMessages] rus.CompName1=Зима. rus.CompName2=Снежинки при загрузке. rus.CompName3=Обводка персонажа снежинкой. rus.CompName4=Интерфейс игры. rus.CompName5=Модели. rus.CompName6=Конфедерат. rus.CompName7=Анархист. rus.CompName8=Шарик для скила "Заморозка". rus.CompName9=Fix убирающий тряску экрана. rus.CompName10=Шарик + Fix,2в1. rus.CompName11=Электро. rus.CompName12=Огненная. rus.CompName13=Снежная. rus.CompName14=Сфера. rus.CompName15=Электро. rus.CompName16=Огненная. rus.CompName17=Снежная. rus.CompName18=Сфера. rus.CompName19=Электро. rus.CompName20=Огненная. rus.CompName21=Снежная. rus.CompName22=Сфера.(Для-3Б) rus.CompName23=1-Электро,2-Огонь,3-Снег. rus.CompName24=1-Огонь,2-Снег,3-Сфера. rus.CompName25=1-Снег,2-Сфера,3-Электро. rus.CompName26=1-Сфера,2-Электро,3-Огонь. rus.CompName27=1-Электро,2-Снег,3-Огонь. rus.CompName28=1-Огонь,2-Сфера,3-Снег. rus.CompName29=1-Снег,2-Огонь,3-Сфера. rus.CompName30=1-Сфера,2-Снег,3-Электро. rus.CompName31=1-Электро,2-Огонь,3-Сфера. rus.CompName32=1-Огонь,2-Электро,3-Сфера. rus.CompName33=1-Снег,2-Огонь,3-Электро. rus.CompName34=1-Сфера,2-Снег,3-Огонь. rus.CompName35=1-Стрел,2-Пех,3-Мед. [Components] Name: Mode; Description: mode; Types: Full; flags: fixed Name: Mode/SPOnly; Description: SPOnly; Flags: disablenouninstallwarning exclusive Name: Mode/MPOnly; Description: MPOnly; Flags: disablenouninstallwarning exclusive Name: Mode2; Description: mode; Types: Full; flags: fixed Name: Mode2/SPOnly2; Description: SPOnly; Flags: disablenouninstallwarning exclusive Name: Mode2/MPOnly2; Description: MPOnly; Flags: disablenouninstallwarning exclusive [Code] var ComponentsPage: TWizardPage; ComponentsList: TNewCheckListBox; procedure RedesignWizardForm; begin ComponentsPage := CreateCustomPage(wpSelectComponents, SetupMessage(msgWizardSelectComponents), SetupMessage(msgSelectComponentsDesc)); ComponentsList := TNewCheckListBox.Create(WizardForm); with ComponentsList do begin Parent := ComponentsPage.Surface; SetBounds(ScaleX(0), ScaleY(0), ScaleX(416), ScaleY(220)); AddCheckBox('Дополнительные компоненты.', '', 0, False, True, False, True, nil); AddCheckBox('Winter', '', 1, False, True, False, True, nil); AddCheckBox(CustomMessage('CompName1'), '', 2, False, True, False, True, nil); AddCheckBox(CustomMessage('CompName2'), '', 2, False, True, False, True, nil); AddCheckBox(CustomMessage('CompName3'), '', 2, False, True, False, True, nil); AddCheckBox('Interface', '', 1, False, True, False, True, nil); AddCheckBox(CustomMessage('CompName4'), '', 2, False, True, False, True, nil); AddCheckBox('Models', '', 1, False, True, False, True, nil); AddCheckBox(CustomMessage('CompName5'), '', 2, False, True, False, True, nil); AddCheckBox(CustomMessage('CompName6'), '', 2, False, True, False, True, nil); AddCheckBox(CustomMessage('CompName7'), '', 2, False, True, False, True, nil); AddCheckBox('Шарик от скила ''Заморозка'',Fix на массу киборга', '', 1, False, True, False, True, nil); AddRadioButton(CustomMessage('CompName8'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName9'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName10'), '', 2, False, True, nil); AddCheckBox('Сферы 3B', '', 0, False, True, False, True, nil); AddCheckBox('Стрел', '', 1, False, True, False, True, nil); AddRadioButton(CustomMessage('CompName11'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName12'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName13'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName14'), '', 2, False, True, nil); AddCheckBox('Пех', '', 1, False, True, False, True, nil); AddRadioButton(CustomMessage('CompName15'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName16'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName17'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName18'), '', 2, False, True, nil); AddCheckBox('Мед', '', 1, False, True, False, True, nil); AddRadioButton(CustomMessage('CompName19'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName20'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName21'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName22'), '', 2, False, True, nil); AddCheckBox('Сферы для 3B + Tesla.Cкрины идут по цифре 1,показывая как выглядит тесла пуха.Как выглядит 3B смотрите выше', '', 1, False, True, False, True, nil); AddRadioButton(CustomMessage('CompName23'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName24'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName25'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName26'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName27'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName28'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName29'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName30'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName31'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName32'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName33'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName34'), '', 2, False, True, nil); AddRadioButton(CustomMessage('CompName35'), '', 2, False, True, nil); end; end; procedure InitializeWizard(); begin RedesignWizardForm; end; |
|
------- Отправлено: 18:02, 14-02-2015 | #109 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать Здраствуйте еще раз , я ту проблемку уже как то сам решил возник другой вопрос . У меня в старом коде выполнялась процедура через "EngOnClick" , неподскажете как сделать артельнативу , тоесть через ьту процедуру у меня выполнялась нажатия на кнопку ,.... блин мне сложно обьяснить , если кто то понял поможете ?
https://yadi.sk/i/_48ekHNVegFvk вот еще , в том инстале одна кнопка активна а одна не активная в моем оба , ето все изза той процедури https://yadi.sk/i/Kk9r5DcyegGGP |
Последний раз редактировалось ShadeUa, 14-02-2015 в 22:42. Отправлено: 22:31, 14-02-2015 | #110 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты Inno Setup. Помощь и советы [часть 7] | El Sanchez | Автоматическая установка приложений | 2499 | 02-02-2015 08:59 | |
Скрипты Inno Setup. Помощь и советы [часть 6] | El Sanchez | Автоматическая установка приложений | 2494 | 10-03-2014 11:51 | |
Скрипты Inno Setup. Помощь и советы [часть 5] | El Sanchez | Автоматическая установка приложений | 1999 | 28-03-2013 19:09 | |
Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 |
|