Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]
Irenis, http://rghost.ru/57616167 »
Пробовала ваш скрипт и программа inno setup уже переустановлена, почему то у меня получается не setup-1.bin, setup-2.bin и т.д., а вот что получилось:
setup
setup-1a.bin
setup-1b.bin
setup-2a.bin
Никто не в курсе, от чего это зависит? Как сделать, чтоб все красиво выглядело? :)
Irenis, все правильно потому что идет деления на диски закаментируй ;SlicesPerDisk=2 и будет setup-1.bin setup-2.bin
1 диск
setup-1a.bin
setup-1b.bin
2 диск
setup-2a.bin и так далее
Kashtan007
23-08-2014, 14:56
Всем привет.
Нужна ваша помощь!
Первый вопрос:
На странице каталога нужно 2 чекбокса.
1 чекбокс - будет удалять содержимое в res_mods\0.9.2\* и удалять папку xvm по пути res_mods\xvm.
2 чекбокс - должен делать бекап папки res_mods, по пути IB\old_res_mods, а после удаление репака возвращал бекап в папку res_mods.
Как это реализовать?
Второй вопрос:
Как сделать, чтобы файлы unins000.exe помещало по пути IB\Uninstall\* ?
Третий вопрос:
У меня в репаке есть файл "bin" и в папке куда я ставлю репак он тоже есть. В следствии чего если я ставлю репак, то файл заменяется, а когда удаляешь репак то файл тоже удаляется и не запускается игра. Как сделать, чтобы когда устанавливаешь репак, то файл "bin" из папки куда ставишь репак копировался по пути IB\BackUp, а после удаление возвращался на свое место.
P.S. Пользуюсь юникодом. Всем заранее спасибо за помощь!
Подскажите, что означает солидное сжатие SolidCompression? Точнее, для чего это нужно? И на что влияет? И что будет, если его вообще убрать из скрипта?
что означает солидное сжатие »Для чиновников, с обстоятельным подходом.
SolidCompression? »Непрерывное сжатие.
Непрерывный архив
(https://ru.wikipedia.org/wiki/Непрерывный_архив)
Справка:
Inno Setup Help » Секция скриптов » Секция [Setup] » SolidCompression:
Возможные значения: yes или no
Значение по умолчанию: no
Описание:
При значении yes включается уплотненное сжатие. Результат такого сжатия будет лучше, особенно если инсталлятор содержит файлы одного типа и эти файлы сгруппированы в секции [Files]. Убедитесь, что Compression=lzma или Compression=bzip, т.к. zip (значение по умолчанию) не позволяет выгодно использовать уплотненное сжатие (потому что работает с меньшими блоками).
Неудобство использования уплотненного сжатия в состоится том, что так как все файлы сжаты единым потоком, инсталлятор не может беспорядочно обращаться к любому из файлов. Это может тормозить работу. Если определенный файл не будет установлен в систему пользователя, данные все равно придется декомпрессировать (в память) для того, чтобы инсталлятор получил доступ к следующему файлу. И если, допустим, в процессе декомпрессии возникнет ошибка и пользователь нажмет Retry, инсталлятор не сможет обратиться к файлу, в котором возникла ошибка, потому что все файлы сжаты в один файл, и придется производить повторную попытку с нуля. Если включено разбиение на диски, пользователь должен будет снова ставить первый диск.
В общем, уплотненное сжатие не рекомендуется применять к большим по размеру инсталляторам (скажем, больше 100 MB) или если используется разбиение на диски. Эта директива служит для того, чтобы при скачивании из Internet маленьких приложений экономилось время.
Nordek, Ясно, большое спасибо :)
Возможные значения: yes или no »
А если SolidCompression вообще убрать из скрипта, это будет то же самое, что поставить SolidCompression=no?
А если SolidCompression вообще убрать из скрипта, это будет то же самое, что поставить SolidCompression=no? »Именно.
Т.е если будет в вашем скрипте присутствовать именно SolidCompression=no = то результат будет равнозначен тому, что SolidCompression и вовсе бы отсутствовал.
Чуточку дополню:
Если вместо no, использовать false = то результат от этого не изменится.
А если вместо yes использовать true = то результат так же, от этого не изменится.
Уже вроде бы и спрашивать не удобно (что то я зачастила), но если не затруднит, может кто ответит еще на пару вопросов :blush2:
1. Убрала SolidCompression,
Поставила Compression=none
Может еще что то можно придумать, чтобы ускорить создание установщика? Мне сжатие не нужно, даже наоборот, чем больше будет весить установщик, тем лучше. Просто многие пользователи почему то считают, что чем больше весит установщик, тем лучше, значит ничего не вырезано, и графика лучше, ну и тому подобное.
2. Для чего нужны эти строчки:
#ifdef NeedSize
ExtraDiskSpaceRequired={#NeedSize}
#endif
Компилировала и с ними, и без, но так и не заметила, что меняется.
Может кстати где то на просторах интернета есть что то типа инструкции (или обозначений), где можно почитать, за что отвечают различные строки(коды) в скрипте.
R.i.m.s.k.y.
24-08-2014, 21:55
Может еще что то можно придумать, чтобы ускорить создание установщика? »
дефрагментировать диск
Просто многие пользователи почему то считают, что чем больше весит установщик, тем лучше, значит ничего не вырезано, и графика лучше, ну и тому подобное. »
о святая простота
Для чего нужны эти строчки:
#ifdef NeedSize
ExtraDiskSpaceRequired={#NeedSize}
#endif »
ifdef NeedSize - если true установщик будет к размеру файлов плюсовать дополнительное место для установки ExtraDiskSpaceRequired
чтобы ускорить создание установщика? »
InternalCompressLevel=none
Compression=none
Nordek, Спасибо, сейчас попробую :)
дефрагментировать диск »
Спасибо, что напомнили о таком понятии, как дефрагментация :) Тем более я часто удаляю-устанавливаю игры и программы, компьютер начал сильно тормозить. Правда, честно признаться, никогда не делала такую процедуру, страшновато как то, чтоб ничего нигде не повредилось. Просто читала, что после дефрагментации иногда бывает только хуже, система еще больше тормозит, а то и вовсе не запускается.
Irenis, если ты используешь мой пример тогда удали вот эти строчки простоя давал для максимального сжатия
SolidCompression=yes
Compression=lzma2/ultra64
LZMAUseSeparateProcess=yes
LZMAMatchFinder=BT
LZMANumFastBytes=273
LZMADictionarySize=262144
InternalCompressLevel=ultra64
MergeDuplicateFiles=true
#define NeedSize "8336330752" указываешь сколько нужно свободного места для установки игры
Kashtan007
25-08-2014, 00:57
Всем привет.
Нужна ваша помощь!
Первый вопрос:
На странице каталога нужно 2 чекбокса.
1 чекбокс - будет удалять содержимое в res_mods\0.9.2\* и удалять папку xvm по пути res_mods\xvm.
2 чекбокс - должен делать бекап папки res_mods, по пути IB\old_res_mods, а после удаление репака возвращал бекап в папку res_mods.
Как это реализовать?
Второй вопрос:
Как сделать, чтобы файлы unins000.exe помещало по пути IB\Uninstall\* ?
Третий вопрос:
У меня в репаке есть файл "bin" и в папке куда я ставлю репак он тоже есть. В следствии чего если я ставлю репак, то файл заменяется, а когда удаляешь репак то файл тоже удаляется и не запускается игра. Как сделать, чтобы когда устанавливаешь репак, то файл "bin" из папки куда ставишь репак копировался по пути IB\BackUp, а после удаление возвращался на свое место.
P.S. Пользуюсь юникодом. Всем заранее спасибо за помощь!
Kashtan007, вот ты думаешь, буду постить на каждой странице одни и те же вопросы, может кто ответит. Твои вопросы были прочитаны на предыдущей странице всеми. Но. Кто захочет ответить - ответит. Да и на все твои "вопросы" есть ответы давным давно. Нужно только не лениться, и воспользоваться поиском и справкой к Inno Setup. Кнопка F1 сломалась? Например на вопрос
Как сделать, чтобы файлы unins000.exe помещало по пути IB\Uninstall\* ? »
[Setup]: UninstallFilesDir
"Default value:
{app}
Description:
Specifies the directory where the "unins*.*" files for the uninstaller are stored.
Note: You should not assign a different value here on a new version of an application, or else Setup won't find the uninstall logs from the previous versions and therefore won't be able to append to them.
Example:
UninstallFilesDir={app}\uninst"
В твоём случае:
UninstallFilesDir={app}\IB\Uninstall
Да и по первому и последнему вопросу есть ответы, если поискать. Пример (http://forum.ru-board.com/topic.cgi?forum=5&topic=30413&start=2274&limit=1&m=1#1).
Что, сложно и трудно? Нет, просто лень.
P.S. А если сложно с Inno Setup, то есть тема для заказа инсталлятора (http://krinkels.org/forums/kuplju-zakazhu.265/).
R.i.m.s.k.y.
25-08-2014, 09:24
Просто читала, что после дефрагментации иногда бывает только хуже, система еще больше тормозит, а то и вовсе не запускается. »
о святая простота »
InternalCompressLevel=none Compression=none »
вторая строчка и так стоит, а первая фактически ни на что не влияет тк отвечает за сжатие самого кода установщика, весит который немного, счет на десятки КИЛОбайт
тогда удали вот эти строчки »
и будет сжатие по-умолчанию, вопрос бул - максимально быстрое создание установщика
Kashtan007
25-08-2014, 11:26
nik1967, спасибо.
Где только не искал, но никак не могу найти ответ на 1 и 3 вопрос, либо же нахожу, но оно не работает.
Leka_651
25-08-2014, 11:45
Добрый день!
Такая задачка: если при удалении программы какие-то файлы были заняты, то по завершению будет выдано сообщение о перезагрузке. Если комп не перезагружать, и сразу в этот же каталог поставить программу, то инсталлятор выдаст сообщение, что сначала необходимо перезагрузить комп. Но если инсталлятор запустить в тихом режиме, то комп сразу начинает перезагружать. Как сделать так, чтобы при тихой установке инсталлятор просто завершал свою работу, ничего не установив.
Leka_651, попробуйте запустить инсталлятор с параметрами /VERYSILENT /NORESTART. Подробнее смотрите в справке раздел "Setup Command Line Parameters".
Kashtan007, как-то вы криво ищите, простите. По вопросам 1 и 3 nik1967 уже ответил, но еще есть например здесь: http://forum.oszone.net/post-2346042-530.html. И учитесь поиском пользоваться: правильно поставленный вопрос содержит в себе половину ответа, да и результат значительно быстрее, чем ждать, пока кто-то ответит :))
Leka_651
25-08-2014, 12:42
Shkutu, параметры помогают, я уже так попробовала. а можно ли как-то из кода проверить и запретить установку?
R.i.m.s.k.y.
25-08-2014, 12:47
а можно ли как-то из кода проверить и запретить установку? »
var isSilent : boolean;
Function InitializeSetup: Boolean;
Begin
isSilent := false;
for i:=2 to ParamCount do begin
if ( Pos(LowerCase('/silent'), Lowercase(ParamStr(i))) > 0 ) then isSilent := true;
if ( Pos(LowerCase('/verysilent'), Lowercase(ParamStr(i))) > 0 ) then isSilent := true;
end;
if isSilent then begin
MsgBox('тихая установка запрещена', mbInformation, MB_OK);
Result := False;
exit;
end;
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC