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

Iska
25-09-2017, 10:11
Nordek, это-то понятно. Я имею в виду: в первой-второй строках указан каталог «Artificial Academy 2», а далее якобы файлы, начинающиеся тоже на «Artificial Academy 2»? Ну, явная же описка!

vk_k14m@vk
25-09-2017, 12:04
это-то понятно. Я имею в виду: в первой-второй строках указан каталог «Artificial Academy 2», а далее якобы файлы, начинающиеся тоже на «Artificial Academy 2»? Ну, явная же описка! »
Нет. Проблема как раз в / была. Это не файлы начинающиеся на «Artificial Academy 2». Это папки.
по адресу 1 Main Files\Artificial Academy 2 у меня основные файлы установки. Дальше, моды которые заменяют некоторые основные файлы. По этому я так же назвал их Artificial Academy 2. Это как если бы ты вручную копировал основные файлы, а потом в ту же папку кидал моды с заменой.

Iska
25-09-2017, 12:13
Нет. Проблема как раз в / была. Это не файлы начинающиеся на «Artificial Academy 2». Это папки. »
Что значит «нет»? Ну, а я про что?!

P.S. Видимо, мне пора нанимать пресс-секретаря, ибо в очередной раз меня поняли с точностью до наоборот.

Nordek
25-09-2017, 17:58
Я имею в виду: в первой-второй строках указан каталог «Artificial Academy 2», а далее якобы файлы, начинающиеся тоже на «Artificial Academy 2»? »
Что значит «нет»? Ну, а я про что?! »
Iska, Ты предположил правильно. И я того же мнения:
пропущенного обратного слэша »
Обратный слэш действительно был упущен, и "Artificial Academy 2" - это каталог.

Единственное что может сбить с толку, это вопрос.
Например при всём этом, так или иначе стоило бы уточнить:
У меня проблемы с упаковкой. »Что значит проблемы с упаковкой?
Т.е дальше компиляция не продолжается?

Inni Setup в секции [Files] игнорирует все дальше второй строчки. »Что значит игнорирует? Останавливается на какой-то ошибке?

Первые две запаковывает остальные пропускает. »Что значит пропускает? Т.е всё-таки компиляция продолжается, но файлы не включаются в инсталлятор?
- т.е "Что происходит?".

Но ведь мы редко уточняем "Что на самом деле происходит?", как ясновидцы сразу предлагаем ответ - От чего зачастую случаются недопонимание, недоразумения, конфликты.
Будь ответ правильным - то вопросов вообще никаких не возникло бы, даже в мыслях не зародились.
Правильно составленный вопрос - это половина ответа.

vk_k14m@vk
26-09-2017, 17:11
Привет народ, снова я. Я вам еще не надоел?
Снова нужен ответ. С помощью секции [Run] можно запустить любое приложение после распаковки всех файлов. А можно ли тоже самое провернуть ДО распаковки?
Суть в чем, если помните моя инсталляция распаковывает "распакованные" файлы, и в конце их запаковывает. И так же установка выборочная. Если кто-то установит "легкую" версию, а потом захочет до-установить что-то. То ему нужно будет полностью удалять приложение и ставить с нуля. Так как инсталляция распакует нужные файлы а в конце снова их запакует чем создаст дубликаты архивов (так уже работает тот пакер).

По этому при повторной установке перед распаковкой нужно запустить файл (батник) который бы снова распаковал установленные ранее архивы. Как это сделать? Это получается что этот батник должен сначала распаковаться, потом прекратить установку остальных файлов, и только после его закрытия распаковка должна продолжиться. И это должно происходить только если программа уже была ранее установлена. Это не слишком сложно сделать?

З.Ы. Кто-то сталкивался с подобными запаковывающими/распаковывающими приложениями которые через консоль работают? Может подскажите какие могут быть аргументы что б приложение не создавало дубликат уже существующего архива, а заменяло его? В описании программы нет вообще никаких данных о работе через консоль. Только "кинуть на него архива для распаковки" и "кинуть папку для запаковки".

R.i.m.s.k.y.
26-09-2017, 17:19
vk_k14m@vk, в справке прочти раздел installation order и Event Functions, ты поймешь что выполнять можно на разных этапах, и задай более осмысленный вопрос, например в какой момент нужно запускать твой батник

В описании программы нет вообще никаких данных о работе через консоль »и правильно, Инно он же не про консоль

vk_k14m@vk
26-09-2017, 17:48
в справке прочти раздел installation order и Event Functions, ты поймешь что выполнять можно на разных этапах, и задай более осмысленный вопрос, например в какой момент нужно запускать твой батник »
Почитаю, и вернусь если ничего не пойму)
И я вроде достаточно подробно описал когда этот файл должен запускаться.
1-я установка, этот файл не запускается.
Если приложение УЖЕ установлено и кто-то снова запускает установку. Тот этот файл должен быть извлечен самым первым, и сразу же после извлечения дальнейшее извлечение должно быть приостановлено до завершения работы этого файла. Потом извлечение продолжается.
Вроде все ясно, вот запускаешь ты установщик с уже установленным приложением, листаешь далее далее, выбираешь создавать не создавать ярылки, и потом с нажатием кнопки "установить". сразу извлекается и запускается этот файл, и после завершение этого файла извлечение продолжается в обычном режиме.

и правильно, Инно он же не про консоль »
Нет нет, я смотрел описание именно декомпилера которым пользуюсь. Там вообще не написано что он с консолью работает. Вот я и спрашиваю о других подобных командах.Например можно же через CMD.exe создавать, копировать, перемещать файлы? Что будет если создаваемый/копируемый/перемещаемый файл уже существует по указному адресу? Сделается дубликат? Или команда не выполнится? Или заменится?

R.i.m.s.k.y.
26-09-2017, 19:53
Вроде все ясно, вот запускаешь ты установщик с уже установленным приложением, листаешь далее далее, выбираешь создавать не создавать ярылки, и потом с нажатием кнопки "установить". сразу извлекается и запускается этот файл, и после завершение этого файла извлечение продолжается в обычном режиме. »
это можно сделать через [Files] BeforeInstall, CurStepChanged, CurPageChanged и NextButtonClick
Я обычно делаю так
[Files]
Check: Уже_установленное_приложение; Source: сразу_извлекается_и_запускается_этот_файл.exe; DestDir: {tmp}; BeforeInstall: ChangeCaption('Установка этого файла'); AfterInstall: install_this_file; Flags: ignoreversion recursesubdirs createallsubdirs;
...
Source: Твои файлы...


[Code]

procedure install_this_file();
var res:integer; file, path : string;
begin
file := ExpandConstant('{tmp}\сразу_извлекается_и_запускается_этот_файл.exe'); path := ExpandConstant('{tmp}');
if FileExists(file) then Exec(file, ' параметры',path,SW_SHOW,ewWaitUntilTerminated,res) else MsgBox('Файл') + ' ' + file + #13#10 + 'не найден'), mbInformation, MB_OK);
end;

Function Уже_установленное_приложение():boolean;
begin
if это_приложение_уже_установлено then Result := True else Result := False;
end;

vk_k14m@vk
29-09-2017, 01:52
Я обычно делаю так »
Вопросик, а в коде все правильно? Меня почему-то немного пугает красный текст в Inno Setup

[Code]
procedure install_this_file();
var res:integer; file, path : string;
begin
file := ExpandConstant('{tmp}\AA2Decrypt_unpack.bat'); path := ExpandConstant('{tmp}');
if FileExists(file) then Exec(file, 'параметры',path,SW_SHOW,ewWaitUntilTerminated,res) else MsgBox('Файл') + ' ' + file + #13#10 + 'не найден' ), mbInformation, MB_OK);
end;

Function AA2Decrypt_fix_unpack.bat():boolean;
begin
if это_приложение_уже_установлено then Result := True else Result := False;
end;

А вот когда меняю ' на " то красный текст меняет цвет.

R.i.m.s.k.y.
29-09-2017, 07:33
vk_k14m@vk, это подсветка синтаксиса

http://images.vfl.ru/ii/1506659632/a84829cb/18786144.jpg

Iska
29-09-2017, 11:09
Там, безо всякой подсветки, несогласованность скобок наблюдается невооружённым глазом:
else MsgBox('Файл') + ' ' + file + #13#10 + 'не найден' ), mbInformation, MB_OK); »

R.i.m.s.k.y.
29-09-2017, 12:05
да после 'Файл' скобка не нужна
простите напутал при переделке под пост

vk_k14m@vk
30-09-2017, 01:02
Продолжаем викторину "помоги тупому". Вопрос дня - Что я делаю не так...
https://pp.userapi.com/c841120/v841120163/2839e/FU9lWHP_FZI.jpg
; Этот сценарий создан с помощью Мастера Inno Setup.
; ОБРАТИТЕСЬ К СПРАВОЧНОЙ ДОКУМЕНТАЦИИ, ЧТОБЫ ИСПОЛЬЗОВАТЬ ВСЕ ВОЗМОЖНОСТИ INNO SETUP!

#define MyAppName "Artificial Academy 2"
#define MyAppVersion "2.0.1"
#define MyAppPublisher "Illusion"
#define MyAppExeName "AA2Play.exe"

[Setup]
; Примечание: Значение AppId является уникальным идентификатором для этого приложения.
; Не используйте одно и тоже значение AppId для разных приложений.
; (Для создания нового значения GUID, выберите в меню "Инструменты" пункт "Создать GUID".)
AppId={{37EDDB6D-1F9B-474F-8FF4-57CC8277B1A7}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName=D:\Games\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=D:\Inno Setup
OutputBaseFilename=setup
SetupIconFile=D:\Inno Setup\Installer\ico.ico
WizardImageFile=D:\Inno Setup\Installer\WizardImage.bmp
WizardSmallImageFile=D:\Inno Setup\Installer\WizardSmallImage.bmp
Compression=lzma2/ultra64
SolidCompression=yes
DiskSpanning=yes
DiskSliceSize=1536000000

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

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Components]
Name: "Main"; Description: "Artificial Academy 2"; Types: full compact custom; Flags: fixed
Name: "Anticensor"; Description: "Антицензор"; Types: custom
Name: "Anticensor\MKIII"; Description: "МКIII"; Types: custom; Flags: exclusive
Name: "Anticensor\MKIII\clothes"; Description: "Пак одежды для MKIII анцензора"; Types: custom; Flags: exclusive
Name: "Anticensor\MKIII\clothes\garter_belt"; Description: "Аддон на подвязки"; Types: custom;
Name: "Anticensor\SVII"; Description: "SVII"; Types: custom; Flags: exclusive
Name: "Anticensor\SVII\clothes"; Description: "Пак одежды для SVII анцензора"; Types: custom; Flags: exclusive
Name: "Anticensor\SVII\clothes\texture"; Description: "Пак текстур для одежды"; Types: custom;
Name: "Anticensor\SVII\clothes\extra_a"; Description: "Extra A пак одежды для SVII анцензора"; Types: custom; Flags: exclusive
Name: "Anticensor\SVII\clothes\extra_a\texture"; Description: "Пак тестру для одежды Extra A"; Types: custom; Flags: exclusive
Name: "Anticensor\SVII\clothes\extra_h5"; Description: "Extra H5 пак одежды для SVII анцензора"; Types: custom; Flags: exclusive
Name: "Anticensor\SVII\clothes\extra_h5\texture"; Description: "Пак тестру для одежды Extra H5"; Types: custom; Flags: exclusive
Name: "Anticensor\SVII\clothes\garter_belt"; Description: "Аддон на подвязки"; Types: custom;
Name: "Hairpack"; Description: "Пак дополнительных причесок"; Types: custom;
Name: "Override"; Description: "Пак дополнительных лиц и причесок"; Types: custom;
Name: "Russification"; Description: "Русификатор"; Types: custom;
Name: "ProgramFiles"; Description: "Дополнительные приложения"; Types: custom;
Name: "ProgramFiles\ReiEditAA2"; Description: "ReiEditAA2"; Types: custom;

[Files]
Check: AA2Decrypt_unpack; Source: "D:\Inno Setup\Installer\0 Delete after install\AA2Decrypt_unpack.bat"; DestDir: "{tmp}"; BeforeInstall: ChangeCaption('AA2Decrypt_unpack.bat'); AfterInstall: install_this_file; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Inno Setup\Installer\1 Artificial Academy 2\Artificial Academy 2\*"; DestDir: "{app}"; Components: Main; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension
Source: "D:\Inno Setup\Installer\2a [AA2][Uncensor][3D MK-III][FA][v2.0][Various]\Artificial Academy 2*"; DestDir: "{app}"; Components: Anticensor\MKIII; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\2a1 [AA2][HEXA Clothing Collection][MK-III][v5.2][Various]\Artificial Academy 2*"; DestDir: "{app}"; Components: Anticensor\MKIII\clothes; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\2a2 [AA2][HEXACC][Garter Belt][v1.5][Various]\Artificial Academy 2*"; DestDir: "{app}"; Components: Anticensor\MKIII\clothes\garter_belt; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\2b [AA2][SVII Uncensor][3D Pubes][All-In-One][v1.6]\Artificial Academy 2*"; DestDir: "{app}"; Components: Anticensor\SVII; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\2b1 [AA2][SVII Clothing Collection][3D Pubes][v5.0]\Artificial Academy 2*"; DestDir: "{app}"; Components: Anticensor\SVII\clothes; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\2b1a SVII Clothing Collection - Texture Pack v5.0\Artificial Academy 2*"; DestDir: "{app}"; Components: Anticensor\SVII\clothes\texture; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\2b2 [AA2][SVII Clothing Collection][Extra A][3D Pubes][v1.2.1]\Artificial Academy 2*"; DestDir: "{app}"; Components: Anticensor\SVII\clothes\texture; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\2b2a SVII Clothing Collection - Extra A - Texture Pack v1.2\Artificial Academy 2*"; DestDir: "{app}"; Components: Anticensor\SVII\clothes\texture; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\2b3 [AA2][SVII Clothing Collection][Extra H5][Censored][v1.0]\Artificial Academy 2*"; DestDir: "{app}"; Components: Anticensor\SVII\clothes\texture; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\2b3a SVII Clothing Collection - Extra H5 - Texture Pack v1.0\Artificial Academy 2*"; DestDir: "{app}"; Components: Anticensor\SVII\clothes\texture; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\2b4 [AA2][SVII Clothing Collection][Garter Belt][v1.5]\Artificial Academy 2*"; DestDir: "{app}"; Components: Anticensor\SVII\clothes\garter_belt; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\3 [AA2][HEXA Hairpack][RE][v3.0][Various]\Artificial Academy 2*"; DestDir: "{app}"; Components: Hairpack; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\4 [AA2][HEXA Override Collection][v3.5][Various]\Artificial Academy 2*"; DestDir: "{app}"; Components: Override; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\ReiEditAA2 0.9.5.3b\Artificial Academy 2*"; DestDir: "{app}"; Components: ProgramFiles\ReiEditAA2; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\SVII Clothing Collection - ReiEdit v5.0\Artificial Academy 2*"; DestDir: "{app}"; Components: ProgramFiles\ReiEditAA2 and Anticensor\SVII; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak
Source: "D:\Inno Setup\Installer\0 Delete after install\Artificial Academy 2\*"; DestDir: "{app}"; Components: Main; Flags: ignoreversion recursesubdirs createallsubdirs deleteafterinstall solidbreak
; Примечание: Не используйте' флаги "ignoreversion" для общих системных файлов.

[Сode]
procedure install_this_file();
var res:integer; file, path : string;
begin
file := ExpandConstant('{tmp}\AA2Decrypt_unpack.bat'); path := ExpandConstant('{tmp}');
if FileExists(file) then Exec(file, 'параметры',path,SW_SHOW,ewWaitUntilTerminated,res) else MsgBox('Файл' + ' ' + file + #13#10 + 'не найден'), mbInformation, MB_OK);
end;

Function AA2Decrypt_unpack():boolean;
begin
if это_приложение_уже_установлено then Result := True else Result := False;
end;

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\data\AA2Decrypt.bat"; WorkingDir: {app}/data; Description: Упаковка папок...; Flags: waituntilterminated

[UninstallDelete]
Name: {app}\data\*.pp; Type: files

Iska
30-09-2017, 02:10
Что я делаю не так... »
Не читаете ответы (http://forum.oszone.net/post-2767528.html#post2767528) в теме. Там отмечены две некорректные скобки. Одну из них Вы нашли и убрали. Ищите там же отмеченную другую и тоже убирайте.

vk_k14m@vk
30-09-2017, 19:25
Там отмечены две некорректные скобки »
Не обратил внимание что две. Нашел исправил. Идем дальше. У меня снова ошибка, на этот раз тут:
if это_приложение_уже_установлено then Result := True else Result := False;
это_приложение_уже_установлено ведь нужно на что-то заменить?

R.i.m.s.k.y.
30-09-2017, 19:28
это_приложение_уже_установлено ведь нужно на что-то заменить?»
естественно, на твою проверку уже установленного твоего приложения

pollipen
30-09-2017, 21:04
парни подскажите как сделать что бы одновременно шла установка и показывался splash

vk_k14m@vk
30-09-2017, 21:15
естественно, на твою проверку уже установленного твоего приложения »
Значит можно сделать так?
if {#MyAppName} then Result := True else Result := False;

R.i.m.s.k.y.
30-09-2017, 21:23
if ExpandConstant('{#MyAppName}')...

vk_k14m@vk
30-09-2017, 22:04
if ExpandConstant('{#MyAppName}')... »
Эх, опять что-то не так
https://pp.userapi.com/c837137/v837137738/56c78/IsDRzzQrSr4.jpg




© OSzone.net 2001-2012