[архив] Скрипты Inno Setup. Помощь и советы [часть 2]
-
Chelluga
Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Приветствую всех знающих людей.
У меня вопрос такого рода: Кто может показать пример скрипта с прогресс-баром??
Все примеры, которые отрыл в шапке темы - либо не работают вообще, либо стабильно показывают 0%.
Заранее спасибо.
У меня вопрос такого рода: Кто может показать пример скрипта с прогресс-баром??
Все примеры, которые отрыл в шапке темы - либо не работают вообще, либо стабильно показывают 0%.
Заранее спасибо.
-
Habetdin
Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Цитата МИШАНЧИК:
но почему-то у меня если выставить его девятизначным(чтоб было 1 Гб и больше) скрипт при компиляции выдаёт ошибку в этой строке
Использую расширенную версию от Restools+дополнения, попробовал с UninstallDisplaySize=1073741824, что составляет 1Гб, компиляция прошла нормально, т.е. никаких ошибок, а вот при UninstallDisplaySize=2147483648, что составляет 2Гб, выскачила ошибка, хотя в справке написано:
Цитата из Справки:
Valid values:
1 through 4294967295
т.е. максимальный размер 4Гб, но на практике получается только 1Гб, возможно это глюк, который думаю позже исправят, но в любом случае она действует только на Win7 и выше.
Цитата МИШАНЧИК:
а размер установленной программы всё-равно равен размеру инсталятора без архивов
Я объясню, как проверял, т.е. произвожу установку полностью пустого скрипта, захожу в апплет "Установка и удаление программ", вижу размер 0,87МБ, закрываю апплет, копирую в эту же папку программы архив размером 43,7МБ, запускаю снова апплет "Установка и удаление программ" и вижу... упс... интересно вчера размер менялся, а сегодня остаётся прежний, видимо апплет читает размер по другому, чем я думал...
Цитата Deen:
где можно подглядеть как писать скрипт на распаковку архивов *.7z
Скачайте из шапки темы Inno Setup Scripting 5.1, там есть пример.
но почему-то у меня если выставить его девятизначным(чтоб было 1 Гб и больше) скрипт при компиляции выдаёт ошибку в этой строке
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Использую расширенную версию от Restools+дополнения, попробовал с UninstallDisplaySize=1073741824, что составляет 1Гб, компиляция прошла нормально, т.е. никаких ошибок, а вот при UninstallDisplaySize=2147483648, что составляет 2Гб, выскачила ошибка, хотя в справке написано:
Цитата из Справки:
Valid values:
1 through 4294967295
т.е. максимальный размер 4Гб, но на практике получается только 1Гб, возможно это глюк, который думаю позже исправят, но в любом случае она действует только на Win7 и выше.
Цитата МИШАНЧИК:
а размер установленной программы всё-равно равен размеру инсталятора без архивов
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Я объясню, как проверял, т.е. произвожу установку полностью пустого скрипта, захожу в апплет "Установка и удаление программ", вижу размер 0,87МБ, закрываю апплет, копирую в эту же папку программы архив размером 43,7МБ, запускаю снова апплет "Установка и удаление программ" и вижу... упс... интересно вчера размер менялся, а сегодня остаётся прежний, видимо апплет читает размер по другому, чем я думал...
Цитата Deen:
где можно подглядеть как писать скрипт на распаковку архивов *.7z
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Скачайте из шапки темы Inno Setup Scripting 5.1, там есть пример.
-
Serega
Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Срочно! 
Никогда не заморачивался над внешним видом, но такое очень хочется повторить!

Подскажите как, я думаю это не сложный код!? Битмэп во всю ширину.

Никогда не заморачивался над внешним видом, но такое очень хочется повторить!

Подскажите как, я думаю это не сложный код!? Битмэп во всю ширину.
-
Chelluga
Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Цитата semiono:
я думаю это не сложный код!?
Строк так на пятьсот, с учётом, что вы не все страницы будите использовать.
В шапке темы есть ссылка на скрипт Картинка на страницах инсталлятора.
я думаю это не сложный код!?
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Строк так на пятьсот, с учётом, что вы не все страницы будите использовать.
В шапке темы есть ссылка на скрипт Картинка на страницах инсталлятора.
-
Serega
Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
О! Спасибо, я не думал что так много! Но раз есть готовое, то не важно сколько строк. 
---
Немного поясню, может не совсем правильно понят был. Картинку буквально не надо растягивать,
достаточно только показать готовую широкую картинку по площади окна. И только на StartPage
и на FinishPage. Нижнее поле кнопок не надо покрывать картинкой, это хотелось бы поправить.
Может сам справлюсь, я пока удалил другие страницы, но диалоги тоже какие-то остались
со "скином", пока думаю...
Типичный мой инсталлер -
Welcome! | сразу > Redy to Install | Installing... | Complete! - больше ничего!
Картинка в области кнопок ещё и плохо тем что стили WinXP там обычно плохо прорисовываются.

---
Немного поясню, может не совсем правильно понят был. Картинку буквально не надо растягивать,
достаточно только показать готовую широкую картинку по площади окна. И только на StartPage
и на FinishPage. Нижнее поле кнопок не надо покрывать картинкой, это хотелось бы поправить.
Может сам справлюсь, я пока удалил другие страницы, но диалоги тоже какие-то остались
со "скином", пока думаю...
Типичный мой инсталлер -
Welcome! | сразу > Redy to Install | Installing... | Complete! - больше ничего!
Картинка в области кнопок ещё и плохо тем что стили WinXP там обычно плохо прорисовываются.
-
South
Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Serega, а поточнее можно, я понимаю что это уже наверное обсуждали и где на форуме это есть. Я осилил только 28 стр. и научился делать простейшие репаки без внешних упаковщиков, но иногда выходит размер не тот что надо и я пошол дальше учиться.
Посуветуйте чем проще сжимать, я сам решил что 7зип проще чем фриарк, я извлекал много разных скриптов, но в основном попадаются с ФА, а не с 7зип.
Вот например из скрипта игры AvP от механиков:
Код:
и где тут прописаны архивы, где сама игра, одни темп файлы.
Или вот от игры Dirt 2:
Код:
arc.exe это из корня папки ФА, а что за dll? и опять где сами архивы?
Посуветуйте чем проще сжимать, я сам решил что 7зип проще чем фриарк, я извлекал много разных скриптов, но в основном попадаются с ФА, а не с 7зип.
Вот например из скрипта игры AvP от механиков:
Код:
Код: Выделить всё
[Files]
Source: {tmp}\button.bmp; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\logo.bmp; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\papka.bmp; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\ac.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\sr.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\msvcr80.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\packjpg_dll.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\pp.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\zlib1.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopyи где тут прописаны архивы, где сама игра, одни темп файлы.
Или вот от игры Dirt 2:
Код:
Код: Выделить всё
[Files]
Source: {tmp}\BitmapHelper.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\InnoCallback.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\Background.bmp; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\Buttons.bmp; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\Flags.bmp; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\FolderImage.bmp; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\arc.exe; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopyarc.exe это из корня папки ФА, а что за dll? и опять где сами архивы?
-
A1EXXX
Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
South, согласен. Тут благо "почище"... хотя видать не на долго... 

-
A1EXXX
Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Мои изобретения -
Кампилируем первый файл: (stubz.exe)
Код:
Кампилируем второй файл: (stub.exe)
Код:
На словах здесь копируется калькулятор в директорию {app} и запускается три раза,
чтобы не было возможно удалить директорию. После чего запускается pkill.exe
который закрывает калькуляторы и затем чистится целевая директория, и для теста
туда копируется pkill.exe

Кампилируем первый файл: (stubz.exe)
Код:
Код: Выделить всё
[Setup]
AppName=stub
AppVerName=stub 1.1.1.1
AllowUNCPath=yes
DefaultDirName={win}
DirExistsWarning=no
DisableDirPage=yes
DisableFinishedPage=no
DisableProgramGroupPage=yes
DisableReadyMemo=yes
DisableReadyPage=no
ArchitecturesInstallIn64BitMode=x64
Compression=lzma
SolidCompression=yes
OutputDir=.
OutputBaseFilename=stubz
TouchDate=2001-01-01
TouchTime=00:00
MinVersion=4.1,4.0
VersionInfoCompany=Semiono
VersionInfoCopyright=2001-2005 GmbH
VersionInfoDescription=stub
VersionInfoTextVersion=1.1.1.1
VersionInfoVersion=1.1.1.1
Uninstallable=no
UsePreviousAppDir=no
[Kode] // < защита от html тэга
procedure InitializeWizard();
begin
try
DelTree(ExpandConstant('{sd}\Test\*'), False, True, True);
except
Beep; Exit;
end;
end;
[Files]
Source: "pkill.exe"; DestDir: "{sd}\Test"; Flags: touch; Permissions: admins-fullКампилируем второй файл: (stub.exe)
Код:
Код: Выделить всё
[Setup]
AppName=stub
AppVerName=stub 1.1.1.1
AllowUNCPath=yes
DefaultDirName={win}
DirExistsWarning=no
DisableDirPage=yes
DisableFinishedPage=no
DisableProgramGroupPage=yes
DisableReadyMemo=yes
DisableReadyPage=no
ArchitecturesInstallIn64BitMode=x64
Compression=lzma
SolidCompression=yes
OutputDir=.
OutputBaseFilename=stub
TouchDate=2001-01-01
TouchTime=00:00
MinVersion=4.1,4.0
VersionInfoCompany=Semiono
VersionInfoCopyright=2001-2005 GmbH
VersionInfoDescription=stub
VersionInfoTextVersion=1.1.1.1
VersionInfoVersion=1.1.1.1
Uninstallable=no
UsePreviousAppDir=no
[Kode]
procedure InitializeWizard();
var
ErrorCode: Integer;
begin
FileCopy(ExpandConstant('{sys}\calc.exe'), ExpandConstant('{sd}\Test\calc.exe'), true);
ShellExec('', ExpandConstant('{sd}\Test\calc.exe'), '', '', SW_SHOW, ewNoWait, ErrorCode);
ShellExec('', ExpandConstant('{sd}\Test\calc.exe'), '', '', SW_SHOW, ewNoWait, ErrorCode);
ShellExec('', ExpandConstant('{sd}\Test\calc.exe'), '', '', SW_SHOW, ewNoWait, ErrorCode);
end;
[Run]
Filename: "{tmp}\pkill.exe"; Parameters: "calc.exe"; Flags: runhidden
Filename: "{tmp}\stubz.exe"; Parameters: "/verysilent"; Flags: waituntilterminated
[Files]
Source: "pkill.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall touch; Permissions: admins-full
Source: "stubz.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall touch; Permissions: admins-fullНа словах здесь копируется калькулятор в директорию {app} и запускается три раза,
чтобы не было возможно удалить директорию. После чего запускается pkill.exe
который закрывает калькуляторы и затем чистится целевая директория, и для теста
туда копируется pkill.exe

-
Serega
Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Мне недавно понадобилось найти в файле нужный параметр и дописать к нему своё значение. Функция замены строки в файле в "чистом" виде не подошла. Пришлось слегка доработать его. Собственно сам скрипт:
Код:
В этом примере скрипт ищет в файле file.txt строку содержащую param, потом в полученной строке ищет знак равенства = Если такой знак имеется, то через один символ дописывает insParam.
Результат работы: было "bla bla param = bla bla" стало "bla bla param = insParam bla bla"
Может кому нибудь пригодится
Код:
Код: Выделить всё
Procedure StrInsert ();
var
S: TArrayOfString;
F: String;
i:integer;
begin
F := ExpandConstant('{app}')+'\file.txt';
if not FileExists(F) then Exit;
LoadStringsFromFile(F, S);
for i:=0 to GetArrayLength(S)-1 do begin
if Pos('param',S[i])>0 then
begin
if Pos('=', S[i])>0 then Insert('insParam ', S[i], Pos('=', S[i])+2) else Exit;
end;
end;
SaveStringsToFile(F, S, False);
end;В этом примере скрипт ищет в файле file.txt строку содержащую param, потом в полученной строке ищет знак равенства = Если такой знак имеется, то через один символ дописывает insParam.
Результат работы: было "bla bla param = bla bla" стало "bla bla param = insParam bla bla"
Может кому нибудь пригодится

-
Chelluga
Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Неожиданно с кодом загрузки большой картинки увидел следущее:
begin
ExtractTemporaryFile('img.bmp');
Значит все мои шаманства с двумя инсталлерами бред!
Я не знал что из кода можно распаковать!
Правильно ли так будет или можно оптимизировать?
Код:
И чем отличается Exec() от ShellExec(), первый я так и не смог использовать
из-за безчисленных BEGIN IF THEN в примере.
begin
ExtractTemporaryFile('img.bmp');
Значит все мои шаманства с двумя инсталлерами бред!

Я не знал что из кода можно распаковать!
Правильно ли так будет или можно оптимизировать?
Код:
Код: Выделить всё
procedure InitializeWizard();
begin
ExtractTemporaryFile('pkill.exe');
ShellExec('', ExpandConstant('{tmp}\pkill.exe'),'calc.exe', '',
SW_SHOW, ewNoWait, ErrorCode);
end;И чем отличается Exec() от ShellExec(), первый я так и не смог использовать
из-за безчисленных BEGIN IF THEN в примере.