Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 4]

Закрытая тема
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 4]

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 22-05-2012
Описание: Закрыто
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2
Скрипты Inno Setup. Помощь и советы [часть 3]


Продолжение обсуждения
Скрипты Inno Setup. Помощь и советы [часть 5]

Отправлено: 18:01, 29-08-2011

 

Забанен


Сообщения: 216
Благодарности: 62

Профиль | Цитировать


Цитата rasim933:
мне неизвестен способ достования и поиска ключей реестра »
Знаю только 2 варианта,
Первый с помощью Regshot, надеюсь тут понятно без слов.
Второй немного по извращённей, с помощью Revo Uninstaller.
читать дальше »
Запускаешь Revo Uninstaller, кликаешь на установленную игру, выбираешь Удалить, появится окно, жмёшь Да, выбираешь Расширенный режим, жмёшь Дальше, после появится окно Самого деинсталятора с подтверждением, жмёшь Нет, потом жмёшь Дальше, ждёшь пока он там всё просканит, жмёшь Дальше, вот у тебя должны появиться Найденные записи реестра, а дальше открываешь regedit, смотришь что нашёл Revo Uninstaller, и ищешь в regedit, что нужно сохраняешь. После всей проделанной работы, в Revo Uninstaller, жмёшь отмена и закрывешь, вот и всё. Ну вот как то так.

Отправлено: 00:25, 31-03-2012 | #1351



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для valyok666

Старожил


Сообщения: 241
Благодарности: 79

Профиль | Отправить PM | Цитировать


Devils Night, можно также " извращённый " токо через Unistall Tools правый клик по программе показать запись в реестре

-------
Салтыков-Щедрин: "А надо учиться, учиться, учиться"


Отправлено: 05:55, 31-03-2012 | #1352


Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


valyok666, Devils Night, rasim933 это именно что извращенный способ тк прога не всегда сносит при деинсталляции все ключи реестра, а вот при инсталляции пишет точно все, так что регшот: снимок1 - поставили - снимок2 - сравнили - через истул импортировали - пути поправили и натюрлих

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:14, 31-03-2012 | #1353


Забанен


Сообщения: 216
Благодарности: 62

Профиль | Цитировать


Цитата valyok666:
токо через Unistall Tools правый клик по программе показать запись в реестре »
А причём тут SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall? Revo Uninstaller тоже так может, ПКМ -> Открыть ключ реестра, но это не то что нужно.
Цитата R.i.m.s.k.y.:
тк прога не всегда сносит при деинсталляции все ключи реестра »
Это вариант, когда без вариантов (на худой конец).
А так то несомненно Regshot, но так или иначе и тут придётся допиливать, удалять не нужное, т.к он много лишнего хлама за собой тащит.

Отправлено: 18:54, 31-03-2012 | #1354


Аватара для Gnom_aka_Lexander

Ветеран


Сообщения: 978
Благодарности: 564

Профиль | Сайт | Отправить PM | Цитировать


Цитата R.i.m.s.k.y.:
через истул импортировали »
А чем Серегин конвертер не угодил? Проверял лично, хексовые записи он единственный конвертит адекватно.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Отправлено: 19:48, 31-03-2012 | #1355


Забанен


Сообщения: 216
Благодарности: 62

Профиль | Цитировать


Сложный вопрс!
читать дальше »

Монтируется образ, в нём присутствует AutoRun.dat, в котором прописан следующий конфиг
Код: Выделить весь код
[SETUP_CONFIG]
PRODUCT_GUID_KEY=SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{0E01BD6F-4E8E-4E08-B578-D3EB0972C093}
USB_ID=USB\Vid_00D0&Pid_0000
APP_SETUP_PATH=Data\setup.exe
APP_VERSION_KEY=SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{0E01BD6F-4E8E-4E08-B578-D3EB0972C093}
APP_VERSION_NAME=AppVersion
APP_VERSION_VALUE=1.0
APP_FILE_NAME=Program.exe
APP_PARAMETER_FLAG=0
APP_PARAMETER= -appid DESKBOARDAPP
APP_PATH_KEY=SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{0E01BD6F-4E8E-4E08-B578-D3EB0972C093}
APP_PATH_NAME=InstallLocation
FILE_CHECK_NUM=1

[FILE_CHECK_LIST]
FILE0=Program.exe
Краткое описание AutoRun.dat:
[SETUP_CONFIG]
PRODUCT_GUID_KEY - Определяет установлена программа или нет
USB_ID - Определяет вставленно ли устройство (Если устройство не вставлено, то ничего не происходит, если же вставлено, то происходит либо установка setup.exe (если программа не установлена), либо запуск программы Program.exe (при условии если программа установлена)).
APP_SETUP_PATH - если программа не установлена то благодаря этой секции запускает setup.exe

а благодаря
[SETUP_CONFIG]
APP_FILE_NAME и

[FILE_CHECK_LIST]
FILE0
При нахождении ключа {0E01BD6F-4E8E-4E08-B578-D3EB0972C093} запускает программу, и с тем учётом если программа установлена, это определяется по ключу {0E01BD6F-4E8E-4E08-B578-D3EB0972C093}.
Как сделать так, чтобы всё работало?

В основном интересует:
Код: Выделить весь код
[SETUP_CONFIG]
PRODUCT_GUID_KEY
USB_ID
APP_SETUP_PATH
APP_FILE_NAME
и
Код: Выделить весь код
[FILE_CHECK_LIST]FILE0

Последний раз редактировалось Devils Night, 05-04-2012 в 15:55.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:22, 31-03-2012 | #1356


Аватара для Raf-9600

Старожил


Сообщения: 398
Благодарности: 21

Профиль | Отправить PM | Цитировать


Собсно я хочу добавить поддержку нескольких языков инсталлятора, но вот как это реализовать в секции Code, мне неизвестно =(
Может какой-то добрый человек помочь с этой проблемой?

Вот четыре кода, которые нуждаются в добавлении поддержки многоязычности:

Проверка на кирилицу в пути установки
читать дальше »
function NextButtonClick(CurPageID: Integer): Boolean;
var
i,j: integer;
s,c: string;
begin
Result := True;
if CurPageID = wpSelectDir then
begin
c := 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя';
for i:=1 to length(WizardForm.DirEdit.text) do
for j:=1 to length(c) do
begin
if WizardForm.DirEdit.text[i] = c[j] then //{app} содержит русские символы
begin
s := 'В пути установки присутствуют русские буквы, что недопустимо'#13#13'Пожалуйста, повторите ввод.';
MsgBox(s, mbError, mb_Ok);
Result := False ; //запрет перехода на следующую страницу
exit;
end
else Result := True; //разрешаем переход на следующую страницу
end;
end;
end;

Скрипт для вывода данных о винтах.
читать дальше »
var
NeedSize:Integer;
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel: TLabel;
n: Integer;
VolumeName, FileSystemName: String;
VolumeSerialNo, MaxComponentLength, FileSystemFlags: Longint;
ListBox: TListBox;
StartMenuTreeView: TStartMenuFolderTreeView;

procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := False else
WizardForm.NextButton.Enabled := True; end;

procedure GetNeedSpaceCaption;
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := 'Требуется как минимум '+ FloatToStr(round(NeedSize/1024*100)/100) + ' Гб свободного дискового пространства.' else
NeedSpaceLabel.Caption := 'Требуется как минимум '+ IntToStr(NeedSize)+ ' Мб свободного дискового пространства.';end;

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))
StartMenuTreeView: if StartMenuTreeView.Directory <> '' then WizardForm.GroupEdit.Text:= StartMenuTreeView.Directory else WizardForm.GroupEdit.Text:= '{#SetupSetting("DefaultGroupName")}'
WizardForm.NoIconsCheck: begin WizardForm.GroupEdit.Enabled:= not(WizardForm.GroupEdit.Enabled); StartMenuTreeView.Enabled:= WizardForm.GroupEdit.Enabled; WizardForm.GroupBrowseButton.Enabled:= WizardForm.GroupEdit.Enabled end;
end; End;

procedure InitializeWizard();
begin
NeedSize := 6100; //Здесь указывается место для приложения
WizardForm.DiskSpaceLabel.Hide;
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(220);
Width := ScaleX(209);
Height := ScaleY(13);
end;
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:= []
ListBox.Font.Name:= 'Courier New';
ListBox.OnClick:= @ObjectOnClick;
ListBox.Parent:= WizardForm.SelectDirPage;
WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpSelectDir then
begin
GetNeedSpaceCaption;
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False
ListBoxRefresh
end;
end;

Описание компонентов
читать дальше »
procedure InitializeWizard();
begin
WizardForm.TypesCombo.Visible:=False;
WizardForm.ComponentsList.Height := WizardForm.ComponentsList.Height + WizardForm.ComponentsList.Top - WizardForm.TYPESCOMBO.Top;
WizardForm.ComponentsList.Top := WizardForm.TYPESCOMBO.Top;
WizardForm.ComponentsList.Width := ScaleX(212);
WizardForm.ComponentsList.OnItemMouseMove:= @ShowDescription

InfoPanel := TPanel.Create(WizardForm);
InfoPanel.Parent := WizardForm.SelectComponentsPage;
InfoPanel.Caption := '';
InfoPanel.Top := WizardForm.ComponentsList.Top;
InfoPanel.Left := ScaleX(220);
InfoPanel.Width := ScaleX(197);
InfoPanel.Height := WizardForm.ComponentsList.Height;
InfoPanel.BevelInner := bvRaised;
InfoPanel.BevelOuter := bvLowered;
InfoCaption := TNewStaticText.Create(WizardForm);
InfoCaption.Parent := WizardForm.SelectComponentsPage;
InfoCaption.Caption := ExpandConstant('{cm:ComponentsInfoPanel1}');
InfoCaption.Left := ScaleX(234);
InfoCaption.Top := InfoPanel.Top - ScaleY(5);
InfoCaption.Font.Color := clActiveCaption;

Info := TNewStaticText.Create(WizardForm);
Info.Parent := InfoPanel;
Info.AutoSize := False;
Info.Left := ScaleX(6);
Info.Width := ScaleX(188);
Info.Top := ScaleY(12);
Info.Height := WizardForm.ComponentsList.Height - ScaleY(18);
Info.Caption := ExpandConstant('{cm:ComponentsInfoPanel2}');
Info.WordWrap := true;

AddDescription(1, 'текст1.');
AddDescription(2, 'текст2.');
AddDescription(3, 'текст3.');
AddDescription(4, 'текст4.');
end;

И такой
читать дальше »
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
WizardForm.StatusLabel.Caption := 'Распаковка слайдов...';
for z:=2 to N1 do ExtractTemporaryFile('Image_'+inttostr(bmp[z])+'.bmp');
end;
if CurStep = ssPostInstall then begin
if (IsComponentSelected('GameDiablo2\VoiceD2\German') or IsComponentSelected('GameLoD\VoiceLoD\Italian') or IsComponentSelected('GameLoD\VoiceLoD\Polish') or IsComponentSelected('GameLoD\VoiceLoD\Russian') ) then begin
ChangeCaption('Конвертация монологов...');
RecodeOgg;
end; //if IsComponentSelected
if CurStep = ssPostInstall then RecodeOgg;
end; //CurStep = ssPostInstall
end;

Отправлено: 16:14, 01-04-2012 | #1357


Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


Raf-9600,
может так
выплняется то или иное, если ActiveLanguage='Russian'
[Languages]
Name: Russian; MessagesFile: compiler:Languages\Russian.isl;
Name: English; MessagesFile: compiler:Languages\English.isl;

и вот первый пример на запрет кириллицы в пути
читать дальше »
Код: Выделить весь код
function NextButtonClick(CurPageID: Integer): Boolean;
var
i,j: integer;
s,c: string;
if ActiveLanguage='Russian' then
begin
Result := True;
if CurPageID = wpSelectDir then
begin
c := 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя';
for i:=1 to length(WizardForm.DirEdit.text) do
for j:=1 to length(c) do
begin
if WizardForm.DirEdit.text[i] = c[j] then //{app} содержит русские символы
begin
s := 'В пути установки присутствуют русские буквы, что недопустимо'#13#13'Пожалуйста, повторите ввод.';
MsgBox(s, mbError, mb_Ok);
Result := False ; //запрет перехода на следующую страницу
exit;
end
else Result := True; //разрешаем переход на следующую страницу
end;
end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:31, 01-04-2012 | #1358


Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


Raf-9600,
языки делаются воттаг, я не буду парить моск вакуумическими примерами, дерну из рабочего скрипта
Код: Выделить весь код
# define AppName "SmoothVideo Project"

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl; LicenseFile: License_rus.txt
Name: english; MessagesFile: compiler:Languages\English.isl; LicenseFile: License_eng.txt

[CustomMessages]
english.ResProf=Reset Profiles
russian.ResProf=Сбросить настройки
english.code1={#AppName} depends on the following components:
russian.code1=Для работы {#AppName} требуются следующие программы и компоненты:
english.code2=It is not alowed to install program to the folder with russian characters.%nPlease select another path
russian.code2=В пути установки присутствуют русские буквы, что недопустимо%nПожалуйста, повторите ввод.

[Icons]
Name: {group}\{cm:ResProf}; Filename: {app}\reset-profiles.cmd; WorkingDir: "{app}";

[*CODE]
function IsRus(): Boolean;
begin
if ( Lowercase(ActiveLanguage) = Lowercase('russian') ) then Result := True else Result := False;
end;

function IsEng(): Boolean;
begin
if ( Lowercase(ActiveLanguage) = Lowercase('english') ) then Result := True else Result := False;
end;


function NextButtonClick(CurPageID: Integer): Boolean;
var
i,j: integer;
s,c: string;
begin
Result := True;
if CurPageID = wpSelectDir then
begin
if isRus then begin
c := 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя';
for i:=1 to length(WizardForm.DirEdit.text) do
for j:=1 to length(c) do
begin
if WizardForm.DirEdit.text[i] = c[j] then //{app} содержит русские символы
begin
MsgBox(ExpandConstant('{cm:code2}'), mbError, mb_Ok);
Result := False ; //запрет перехода на следующую страницу
exit;
end
else Result := True; //разрешаем переход на следующую страницу
end; end; end; end;

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Последний раз редактировалось R.i.m.s.k.y., 01-04-2012 в 16:39.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:32, 01-04-2012 | #1359


Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


использую отображение процентов в установке
вот так
читать дальше »
Код: Выделить весь код
[Files]
Source: Files\*; DestDir: {app}; AfterInstall: ExtLog();

[  code]
var
ProgressLabel: TLabel;

procedure ExtLog();
begin
  with WizardForm.ProgressGauge do begin
    ProgressLabel.Caption:=IntToStr((Position-Min)/((Max - Min)/100)) + '%'
    if (Position-Min)/((Max - Min)/100) > 50 then ProgressLabel.Font.Color:= clWhite
  end
end;

procedure InitializeWizard;
begin
    ProgressLabel:=TLabel.Create(WizardForm)
    ProgressLabel.Top:= 10;
    ProgressLabel.Left:= 270;
    ProgressLabel.Caption:= '0%';
    ProgressLabel.AutoSize:= True;
    ProgressLabel.Font.Color:= cl3DdkShadow;
    ProgressLabel.Font.Style:= [fsBold];
    ProgressLabel.Transparent:= True;
    ProgressLabel.Parent:= WizardForm.ProgressGauge;
end;

проблема в том, что лейбл обновляется после копирования файла и если он большой, то рывками например с 50% до 60%
Есть вроде возможность считывать положение прогресбара
может у кого есть пример (там кажется задействована InnoCallBack.dll) для отображения таких процентов?
оно будет точнее

Отправлено: 16:43, 01-04-2012 | #1360



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 4]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход