PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 8]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 [116] 117 118 119 120 121 122 123 124 125 126

pollipen
06-12-2017, 14:47
Друзья может кто подскажет как сделать что бы при обновлении программы не выскакивала вот эта зараза
http://i102.fastpic.ru/big/2017/1206/66/1dbe47ecf3fc3c04393a9ac5836d9666.png

TheLeon
06-12-2017, 14:58
El Sanchez, можете сказать версию программы, которая стоит у вас(именно эта ошибка мне портила тогда всю картину)?
149911

Iska
06-12-2017, 15:06
как сделать что бы при обновлении программы не выскакивала вот эта зараза »
Для начала — определиться, чем именно «эта зараза» обусловлена: нет прав, файл в данный момент используется, нужна ли дерегистрация библиотеки и т.д.

pollipen
06-12-2017, 15:19
файл в данный момент используется
http://i100.fastpic.ru/big/2017/1206/38/a089839260d8ea2c61750ded9d4dec38.png

Iska
06-12-2017, 15:58
файл в данный момент используется »
Копайте дальше — чем именно используется. Process Explorer и Process Monitor в помощь. Если Проводник — как именно им используется, «отпустит» ли после дерегистрации библиотеки.

El Sanchez
06-12-2017, 17:00
именно эта ошибка мне портила тогда всю картину »
TheLeon, вместо ItemCount напишите Items.Count

TheLeon
06-12-2017, 17:11
El Sanchez, огромное спасибо.

pollipen
07-12-2017, 08:29
проблема решена, сделал папку с программой системной теперь при обновлении программы ошибки не выдаёт :yahoo:

vvVVvv VV vvVVvv
10-12-2017, 10:33
Здравствуйте.
Подскажите пожалуйста,как сделать выбор папки пуск на странице выбора папки установки и там же расположить создание ярлыка на рабочий стол и папки пуск?

ZVSRus
10-12-2017, 20:19
vvVVvv VV vvVVvv, из Справки


#define MyAppName "My Program"
#define MyAppVerName "My Program 1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"

[Setup]
AppId={{295875A7-8789-4313-8438-D809C261C4A7}
AppName={#MyAppName}
AppVerName={#MyAppVerName}
AppPublisher={#MyAppPublisher}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputBaseFilename=setup
OutputDir=.
DisableProgramGroupPage=true

[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
Source: "compiler:Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Check: MakeStartMenuIcon
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Check: MakeDesktopIcon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#MyAppName}}"; Flags: nowait postinstall skipifsilent

[Code__]
var StartMenuIcon,DesktopIcon: TCheckBox;

function MakeDesktopIcon: Boolean; begin Result:=DesktopIcon.Checked; end;
function MakeStartMenuIcon: Boolean; begin Result:=StartMenuIcon.Checked; end;

procedure NoStartMenuIcon(Sender: TObject);
begin
if StartMenuIcon.Checked = false then
begin
wizardform.GroupEdit.enabled:= false;
wizardform.GroupBrowseButton.enabled:= false;
end
else
begin
wizardform.GroupEdit.enabled:= true;
wizardform.GroupBrowseButton.enabled:= true;
end;
end;

procedure InitializeWizard ();
begin
wizardform.SelectDirBitmapImage.free;

wizardform.GroupEdit.parent:= wizardform.SelectDirPage;
wizardform.GroupEdit.top:= wizardform.GroupEdit.top + ScaleY(60);

wizardform.GroupBrowseButton.parent:= wizardform.SelectDirPage;
wizardform.GroupBrowseButton.top:= wizardform.GroupBrowseButton.top + ScaleY(60);

wizardform.SelectDirLabel.left:= wizardform.GroupEdit.left;

wizardform.SelectStartMenuFolderLabel.parent:= wizardform.SelectDirPage;
wizardform.SelectStartMenuFolderLabel.left:= wizardform.GroupEdit.left;
wizardform.SelectStartMenuFolderLabel.top:= wizardform.GroupEdit.top - ScaleY(25);

DesktopIcon := TCheckBox.Create(WizardForm);
DesktopIcon.Parent := WizardForm.SelectDirPage;
DesktopIcon.Caption := 'Добавить ярлык на Рабочий стол';
DesktopIcon.SetBounds(ScaleX(0),WizardForm.DirEdit.Top+ScaleY(90),ScaleX(400),ScaleY(25));
DesktopIcon.TabOrder := 0;
DesktopIcon.Checked:= true;

StartMenuIcon := TCheckBox.Create(WizardForm);
StartMenuIcon.Parent := WizardForm.SelectDirPage;
StartMenuIcon.Caption := 'Создать папку в меню Пуск';
StartMenuIcon.SetBounds(ScaleX(220),WizardForm.DirEdit.Top+ScaleY(90),ScaleX(400),ScaleY(25));
StartMenuIcon.TabOrder := 0;
StartMenuIcon.Checked:= true;
StartMenuIcon.OnClick:= @NoStartMenuIcon;
end;

vvVVvv VV vvVVvv
10-12-2017, 23:47
vvVVvv VV vvVVvv, из Справки
Скрытый текст »
Отлично,то что искал,спасибо большое.

ENERGES
11-12-2017, 13:19
Нужна помощь,как указать оставшееся время https://s8.hostingkartinok.com/uploads/images/2017/12/3053443a10e56817cbe966b5b039e874.png
вот скрипт с файлами http://rgho.st/8TsjZx2Y6

Nordek
11-12-2017, 22:31
Нужна помощь,как указать оставшееся время https://s8.hostingkartinok.com/uploads/images/2017/12/3053443a10e56817cbe966b5b039e874.png»Что вы показываете?
Однажды, давно это было, мне также было не понятно почему у меня "Тестовый прогон" до тех пор, пока не прочитал справку.


web_form, Вам также дам хороший совет: Прочтите справку.

Т.е у вас два варианта:

Прочитать справку (Если действительно нужно).
Не использовать ISDone (Если лень читать справку).


Описание режимов работы библиотеки
Для осуществения работоспособности библиотеки существует 2 вида определения процентных соотношений между операциями на всем прогрессбаре:
Автоматическая расстановка процентных соотношений в операциях.
При автоматической расстановке необходим тестовый проход для определения времени выполнения каждой операции относительно других.
Для включения данного режима необходимо заполнить вторые значения всех функций извлечения архивов нулями.

Краткая инструкция:
а) первым делом убедитесь, что в начале скрипта закомментирована строка
#define records
т.е. необходимо поставить точку с запятой в начале этой строки);

б) компилим проект и запускаем на установку. Это и будет нашим тестовым проходом. Все операции должны дойти до конца и завершиться удачно. Прогрессбар будет зашкаливать и все компоненты будут извлечены вне зависимости от того выбраны они, или нет. Все так и должно быть!

в) после тестового прогона в указанной папке создастся файл records.inf (имя и путь назначается в процедуре инициализации. О ней см. "подробное описание функций" ниже), его необходимо добавить в проект, раскомметировав, или добавив в начале скрипта строку:

#Define records

Так же стоит отметить, что если сам скрипт находится в папке отличной от той, в которую компилится проект (например в скрипте NFS:Undercover откомпиленный файл сохраняется в Output\setup.exe), то records.inf создастся в папке с setup.exe и его необходимо будет перенести непосредственно к скрипту, или же подправить в секции [Files] его истинное расположение, например:
#ifdef records
Source: Output\records.inf; DestDir: {tmp}; Flags: dontcopy
#endif

г) снова откомпилить проект.
После этого инсталлер готов к работе.
При запуске процесс выполнения операций будет равномерно и корректно отображаться на прогрессбаре.



Ручная расстановка процентов на каждую операцию.
При ручной расстановке если в проекте множество операций, все расчеты необходимо производить вручную. Т.е. сумма процентов всех выполненных операций должна равняться 100%, иначе корректного отображения на прогрессбаре не будет.
Для включения данного режима необходимо заполнить вторые значения всех функций извлечения архивов значениями процентов, отличными от 0 (числа могут быть дробными).
При групповой распаковке архивов по маске (типа *.pcf) для операции задается общий процент на все распаковываемые файлы данной командой, а уж каждый из найденных файлов будет разбивать указанный кусок прогрессбара еще на части пропорциональные размерам файлов. Например строка:
if not ISArcExtract (0, 100, ExpandConstant('{src}\*.arc'), ExpandConstant('{app}'), false, '', '', '') then break;
...
распакует все *.arc архивы из {src} в {app}, при чем весь прогрессбар будет поделен на кусочки пропрорциональные размерам архивов. В общем тут все так же как в скрипте распаковки FreeArc.iss и ему подобным. Таким образом при распаковке нескольких архивов одного типа проще пользоваться ручной расстановкой, т.к. отличие расперделения процентов от автоматической будет совсем небольшим, но за то не требуется тестовый проход.

Вот некоторые правила, которые неоходимо выполнять при ручной расстановке:
а) сумма процентов учитывая ветвления (использование компонентов, условий) в скрипте должна составлять 100;
б) у компонентов, для которых возможен выбор только одного из нескольких, должны быть одинаковые значения процентов;
в) НЕЛЬЗЯ использовать компоненты, которые можно выбирать одновременно с другими в одной группе (например несколько рядом стоящих компонент без флага exclusive), потому что сумма процентов при различном выборе пользователя может отличаться от 100.


Примечание
Стоит упомянуть функцию ISExec, в которой третьим параметром задается время выполнения текущей операции. При автоматической расстановке время на операцию расчитывается приближенное к реальному (при условии, что данная операция не первая, иначе время выполнения берется равное тому, которое было в тестовом проходе). При ручной же расстановке: если машина пользователя быстрее обработает данную операцию, чем расчитано автором инсталла, то прогресс будет немного скачкообразным в моменты переходов между функциями распаковки; если машина пользователя медленнее - прогресс наоборот будет задерживаться между операциями.

ENERGES
12-12-2017, 06:24
Nordek, спасибо,а как сделать сделать две полоски с вершу и снизу начальной установки приветствия https://s8.hostingkartinok.com/uploads/images/2017/12/ef5e3331e0155a9ba79a827d235b5b15.png

ZVSRus
12-12-2017, 14:13
web_form,
Чтобы полосы сверху и снизу отображались на странице приветствия, зайди в папку modules открой page.iss, найди такие строки

if CurPageID=wpWelcome then begin
HideComponents;

это будут 22 и 23 строки
и вставь после них

Bevel2.show;
Bevel3.show;

и все отобразится

ENERGES
12-12-2017, 14:21
ZVSRus, спасибо а как подключить Проверка MD5

ZVSRus
12-12-2017, 15:21
web_form
как подключить Проверка MD5
Сам никогда этим не занимался, но по данному адресу найдёшь все что интересует. (http://krinkels.org/threads/ismd5.1943/)

PS. Нужна помощь, как указать оставшееся время
В справке много примеров про проценты и про время.

ENERGES
12-12-2017, 15:34
ZVSRus, он уже прописано в скрипте но не знаю как подключится

Alloc
13-12-2017, 16:19
Друзья, подскажите пожалуйста как убрать флажок с компонентов по умолчанию?

Вот скриншот. По умолчанию компонент "HD HUD" выбран, как убрать?

http://forum.oszone.net/attachment.php?attachmentid=150028&stc=1&d=1513171034

вот кусочек кода:


[Types]
Name: Full; Description: {cm:full}; Flags: iscustom

[Components]
Name: Text; Description: {cm:GameText}; Types: Full; Flags: fixed
Name: Text\Eng; Description: {cm:eng}; Flags: exclusive; ExtraDiskSpaceRequired: 98362
Name: Text\Rus; Description: {cm:rus}; Flags: exclusive; ExtraDiskSpaceRequired: 7104361
Name: Voice; Description: {cm:GameVoice}; Types: Full; Flags: fixed
Name: Voice\Eng; Description: {cm:eng}; Flags: exclusive; ExtraDiskSpaceRequired: 659897918
Name: Voice\Rus; Description: {cm:rus}; Flags: exclusive; ExtraDiskSpaceRequired: 664216745
Name: Patch; Description: {cm:Patch}; Types: Full; Flags: fixed collapsed
Name: Patch\WS; Description: {cm:PatchWS}; ExtraDiskSpaceRequired: 1329304
Name: Patch\HUD; Description: {cm:HUD}; Types: Full; Flags: collapsed
Name: Patch\HUD\Eng; Description: {cm:eng}; Flags: exclusive; ExtraDiskSpaceRequired: 79449474
Name: Patch\HUD\Rus; Description: {cm:rus}; Flags: exclusive; ExtraDiskSpaceRequired: 79482234

nik1967
13-12-2017, 17:13
Alloc,
Name: Patch\HUD; Description: {cm:HUD}; Flags: collapsed




© OSzone.net 2001-2012