Войти

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


Страниц : 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

TROY Diamond
01-12-2011, 20:35
TROY Diamond, ты только себя читаешь?

НЕ ПОСЫЛАЙТЕ МЕНЯ И НЕ ПОСЫЛАЙТЕ В ПОИСКОВИКИ, ПОЖАЛУЙСТА!!!

НЕ пишите, что-нибудь вроде "Погугли в Яндексе...". Я только Яндексом и пользуюсь, именно с помощью него я и вышел на Ваш форум!!!

Я писал: "Скрипты для Inno Setup"; "Как сделать в Inno Setup"; "Секция [Code] в Inno Setup" и эти же вопросы которые я здесь задаю, - все "дорожки привели" сюда!!!

Но поисковик - машина, его не спросишь на прямую, он не поймёт... если не сформулируешь верно или не будет совпадений, - а здесь живые люди - великие мудрецы!!!

Где, как не на форуме, задавать вопросы, узнавать что-то новое и нужное, а также делиться полезной информацией с нуждающимися?!

Да как Вы не поймёте зачем и почему мне это надо?! Не для гламура ведь ради...

1. Если тупо взять и загнать всё, как есть в Inno Setup или попытаться сжать каким-нибудь другим компрессором, то в лучшем случае, пару метров всего выиграю, а в худшем, размер ещё больше увеличится!!!
АРХИВЫ, НЕ СЖИМАЮТ!!! Сжатие одного архива другим архиватором приводит к увеличению размера!!! Только сжатие в zip, не накручивает размер, а они и так zip-архивы. Проще тогда вообще БЕЗ сжатия скомпилировать и всё!

2. А я хочу уменьшить размер... я пробовал... распаковывал эти архивы и упаковывал их обратно, но в RAR или 7-zip, ТАК РАЗМЕР УМЕНЬШАЛСЯ РАЗА В 3-4!!! Поэтому я и хочу так сделать.

3. Если запускать упаковку в архивы просто из секции "[Run]", то сначала всё содержимое инстала извлечётся на винт, потом начнётся, упаковка в архивы и только в конце "всё это дело" удалится!!! Для такого репака места на ЖД нужно раза в 3-4 больше, чем занимает сама игра!!!
К ТОМУ ЖЕ ИНДИКАТОР ПРОЦЕССА ДОЙДЁТ ДО КОНЦА (будет 100%), А ПОТОМ ПОЛЧАСА ВСЁ ЭТО БУДЕТ ВИСЕТЬ... так как создать архивов нужно кучу, да и на упаковку не мало времени уйдёт!!!
Пользователь подумает, что комп просто завис - индикатор процесса дошёл до конца, а установка не всё никак не завершается!!!

4. Поэтому я и хочу, чтобы всё происходило "по шагам":
Из инстала извлекается 1 папка -> создаётся архив (можно и сообщение соответствующее добавить "Создание файла...", а расширение из *.zip - переименовывается на нужное или сразу создаётся с нужным, или в конце), папка удаляется - индикатор процесса "двигается"...
Из инстала извлекается 2 папка -> создаётся 2 архив (расширение из *.zip - переименовывается на нужное или сразу создаётся с нужным, или в конце), папка удаляется - индикатор процесса продолжает "двигается"...
Из инстала извлекается 3 папка -> создаётся 3 архив, (расширение из *.zip - переименовывается на нужное или сразу создаётся с нужным, или в конце), папка удаляется - индикатор процесса всё дальше и дальше...
И так по очереди, пока все извлечённые нужные папки не "превратятся" в архивы.
А когда индикатор процесса дойдёт до конца, то и установка тоже завершится.

Вот и всё! Я ведь видел подобную реализацию, в какой-то сборке игры Бернаут или какой-то другой, а также в некоторых русификаторах от SerGEAnt's (Zone Of Games) - НЕ будут же они все ресурсы игры упаковывать?!
Поэтому они вызывают команду, чтобы архив распаковался, в него добавился перевод, а потом он снова упаковался обратно... (НО ЭТО НЕ ВЕЗДЕ В "МАЛЕНЬКИХ" РУСИФИКАТОРАХ, команда вызывалась просто из секции "[Run]").

ПОМОГИТЕ, ПОДСКАЖИТЕ, ПОЖАЛУЙСТА!!!

Ведь и установку каких-нибудь дополнительных приложений, реализуют подобным образом.
БЫВАЕТ же, к примеру, что до начала или во время установки приложения, надо что-то скопировать и/или запустить - это ведь примерно тоже самое!

Я ведь не прошу никого чё нибудь "гламурненкое" замутить, не прошу слайд-шоу, музыку и т.п. Не прошу; "А как вот такой сделать" и т.п. А тут ведь много таких просьб - им Вы помогаете!!!

А мне всего лишь кодик, команду, параметр, пример, нужны... Я ведь даже не знаю, что и куда в этом случае...


тебе известен способ как ищется твоя прога?
ты уже хотя бы отрегшотил что пишет в реестр твоя прога?

к тому же задаешь такие общие вопросы, что у меня закладываются подозрения что компьютер появился около месяца назад

не обижайся

если ты сам свою задачу разложишь по полочкам и начнешь с начала то
а) будет проще самому разобраться
б) задавать конкретные вопросы по одному разу и получать конкретные ответы,

в конце концов кому тут помощь нужна?

начать следует как раз с того какие изменения нужно сделать в системе чтобы поставить прогу: скопировать файлы, записать в реестр, зарегить библиотеки.
это ты знаешь?
если знаешь - начинаешь потихоньку заполнять Setup/Files/Registry
кстати это ответ на твой вопрос "как узнать стоит прога или нет?"

поменьше эмоций, у компилятора нет параметра /emotion=true

Я хочу чтобы моя сборка определяла это же ранее установленное приложение, каким бы инсталлятором оно не было установлено. NSIS, Wise, InstallShild или Inno Setup.

ВСЕ возможные и невозможные варианты названий и т.п. я готов написать, хоть 100 - мне не влом, Вы только скажите куда и как?

Inno Setup в реестре пишет в "Uninstall" с "is1", Wise "{цифры}" и т.п. К тому же название тоже может быть разным, к примеру у кого-то с какими-нибудь знаками "-", "." ":" или просто к названию прибавлено "Сборка..."
И как мне к каждому привязать, что бы всё это находилось, а главное можно было запустить деинсталлятор!

И ещё мне обязательно нужно, чтобы было несколько вариантов, в том числе и продолжении установки, так как очень часто юзвери тупят и некоректно удаляют приложение - не при помощи деинсталлятора!!!

А потом ещё и возмущаются, почему приложение нельзя переустановить?! Ключ в реестре, то висит, его никто не удалил...

Поделитесь скриптом для UltraISO

Как сделать проверку разрядности и/или версии ОС для установки соответствующих компонентов?

К примеру у меня есть какие-то дополнительные файлы/проги, которые нужно поставить в зависимости от разрядности и/или версии системы.
Если x86, то ставим одну, если x64, то другую или туже, но с соответствующей разрядностью, если XP, то одно если Vista/7, то другое и т.п.

Чё та надо писать, типа "Check", а что конкретно и какой код я вообще НЕ знаю.

ТОТ ЖЕ САМОЕ И ДЛЯ ПАПКИ УСТАНОВКИ (или это не принципиально?).
К примеру папка "Program Files" вроде бы чем-то "отличается"?

Поделитесь, пожалуйста, самым оптимальным и простым скриптом для создания сильно упакованного дистрибутива (Inno Setup + внешний компрессор)
Насколько я знаю, чаще всего используют FreeArc

МНЕ НУЖНО, чтобы архив(ы), был(и) "рядом" с файлом "setup.exe" и извлекались сразу напрямую из него, чтобы не тратилось время и места на ЖД, для извлечения сначала из "Inno Setup".
ОБЯЗАТЕЛЬНО НУЖНО, чтобы архивы были поделены на части нужного мне размера, т.к. как размер большой и ВЫГЛЯДЕЛИ ОНИ ТАК ЖЕ КАК И "СТАНДАРТНЫЕ ЧАСТИ INNO SETUP" (setup-1.bin, setup-2.bin...).
И ВНЕШНЕ ПРИ РАСПАКОВКЕ, ЧТОБЫ ВСЁ ВЫГЛЯДЕЛО "КАК СТАНДАРТНАЯ УСТАНОВКА", с одним обычным прогресс-баром и БЕЗ всяких: "Извлечение из архива...", "файлов: .., % выполнено, осталось ждать..." и т.п. НИЧЕГО ЭТОГО НЕ НАДО!!!

Должно быть как обычно "Распаковка файлов..." и один стандартный индикатор процесса.
И распаковка начиналась НЕ из секции "Run", а в процессе установки, чтобы индикатор процесса "двигался".
А при отмене/прерывании установки - удалялось всё, что распаковалось, типа как обычно: "Откат изменений..." и всё...

Один раз видел, что-то подобное... поэтому и спрашиваю!

А обычно "куча мишуры", оформление, несколько индикаторов процесса, дополнительные окна и надписи, изменение цвета, НИЧЕГО этого не надо.

Дайте, пожалуйста, скрипт и посоветуйте как и чем лучше сжимать и т.п.

Спасибо! Жду Вашего ответа...
Модератор: TROY Diamond учитесь оформлять сообщение, скрываете большие тексты тегом more, код выделять тегом code. Писать в тексте слова вроде ПОМОГИТЕ МНЕ ПОЖАЛУЙСТА!!! , да еще большим шрифтом пустая трата времени + нарушение правил оформления сообщения.

dracosha
02-12-2011, 00:59
Доброго дня!
Люди помогите решить задачу...
Через препроцессор пишу в ини дату:
#expr WriteIni(MyAppSourcePath + "\profiles\settings_ru.ini", "Section1", "ReleaseDate", GetDateTimeString('dd.mm.yyyy', '', ''))
Значение (т.е.) саму дату пишет естественно без кавычек... Вот так:
ReleaseDate=01.12.2011
а я хочу что бы писало так:
ReleaseDate="01.12.2011"

куда только не пробовал подсунуть кавычки, ничего не помогает :(

Arsi000
02-12-2011, 05:43
никто не в курсе собираются разработчики портировать inno на 64 бита? вообще разработчик достаточно ленивый походу такую маленькую программку до сих пор не портировал. прямо странности

R.i.m.s.k.y.
02-12-2011, 08:09
dracosha, что если добавить AddQuotes?
#expr WriteIni(MyAppSourcePath + "\profiles\settings_ru.ini", "Section1", "ReleaseDate", AddQuotes(GetDateTimeString('dd.mm.yyyy', '', '')))

Rikill
02-12-2011, 15:17
Arsi000, всё работает и хорошо. Зачем это нужно?

R.i.m.s.k.y.
02-12-2011, 16:32
Rikill, между прочим я старался помочь, пытался узнать чего нужно, на понятые мною вопросы я ответил
а смысл в сообщениях обратно пропорционален кол-ву знаков
что до per rectum ad astrum я только сегодня после обеда вкурил что TROY Diamond хочет такой изврат сотворить, у меня просто в голове не укладывалась вся абсурдность этой затеи
столько писать и я смогу, см на моем сайте инструкции :)

Devils Night
03-12-2011, 22:31
Как сделать такое как на скрине?
http://i1.imageban.ru/thumbs/2011.12.02/51790a0676bddf5975ee71d03381e4b3.png (http://i1.imageban.ru/out/2011/12/02/51790a0676bddf5975ee71d03381e4b3.png)
собственно нужно, сделать такие чебоксы, а вот где выделено красным, там должна быть типа превьюшка, т.е если выбран первый чебокс, то одна превьюшка, если выбран второй чебокс, то вторая превьюшка и.т.д, в общем чтобы менялась картинка в зависимости от выбранного компонента, можно такое реализовать?

Rikill
04-12-2011, 01:15
Devils Night, а как может быть три подряд выбранных радиобаттонов?!
Сейчас очень быстро накатал примерчик, так что умные люди сильно ногами не бейте, а поправьте меня.
Пример не работает, но думаю если приложить немного знаний и сил то заработает, просто самому интересно стало. :)
[Setup]
AppName=1
AppVerName=1
DefaultDirName=1

[Files]
Source: Files\*; Flags: dontcopy

[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: Lang1; Description: ляляля; Types: full;
Name: Lang2; Description: ляляля1; Types: full;


var
bmp: TBitmapImage;
bmp1: TBitmapImage;

procedure InitializeWizard;
begin
ExtractTemporaryFile('bmp1.bmp');
bmp1 := TBitmapImage.Create(WizardForm);
With bmp1 do
begin
Top:=100;
Left:=330;
Width:=100;
Height:=30;
Parent:=WizardForm.SelectComponentsPage;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\bmp1.bmp'));

ExtractTemporaryFile('bmp.bmp');
bmp := TBitmapImage.Create(WizardForm);
With bmp do
begin
Top:=100;
Left:=330;
Width:=100;
Height:=30;
Parent:=WizardForm.SelectComponentsPage;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\bmp.bmp'));
end;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
//bmp.hide
if IsComponentSelected('Lang1') then bmp.show
if IsComponentSelected('Lang2') then bmp1.show
end;

Devils Night
04-12-2011, 06:22
Rikill, Не то.
а как может быть три подряд выбранных радиобаттонов?! »нужно не три подряд, а один из них, но три и более.


[Setup]
AppId={{452AA98F-8AA7-40C9-A583-6DAF44B9E14E}
AppName=My Program
AppVersion=1.5
;AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

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

[Files]
Source: A\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs; Tasks: A
Source: B\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs; Tasks: B
Source: C\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs; Tasks: C

[Tasks]
Name: A; Description: A; GroupDescription: Типа прога; Flags: exclusive
Name: B; Description: B; Flags: exclusive; GroupDescription: Типа прога
Name: C; Description: C; Flags: exclusive; GroupDescription: Типа прога

Именно при выборе, а не при наведении.

Gnom_aka_Lexander
04-12-2011, 13:09
нужно не три подряд, а один из них, но три и более.
Конкретно, нужно тоже самое, но чтобы при выбранном, сбоку менялась картинка
Именно при выборе, а не при наведении. »
Прикрепил пример.

Devils Night
05-12-2011, 06:29
Тут появилась проблема, хотел чтобы при удалении удалялась папка MyProgs в C:\Documents and Settings\Имя_Пользователя, но {userprofile}/MyProgs не отрабатывает, подскажите, как решить?

Лександер, Спасибо большое.

Gnom_aka_Lexander
05-12-2011, 08:50
{userprofile}/MyProgs не »
а {userdocs}\MyProgs не пробовал? и это, у тебя слеш в неправильную сторону в пути.
А так-же, удаляяя из секции сода, не забываеш обрамлять в ExpandConstant('{userdocs}\MyProgs')?

P.S. Накидал тут самый короткий пример вставки изображений на все страницы инсталлятора. Страницы "зашториваются" автоматически, при создании новых страниц - теоретически так-же автоматом затекстурируется(не пробовал, но должно)

Devils Night
05-12-2011, 09:29
а {userdocs}\MyProgs не пробовал? »Ну так с этой же командой оно попадает в
C:\Documents and Settings\Имя_Пользователя\Мои документы\MyProgs а нужно в C:\Documents and Settings\Имя_Пользователя\MyProgs

Gnom_aka_Lexander
05-12-2011, 09:38
и это, у тебя слеш в неправильную сторону в пути »
Обратил внимание?но {userprofile}/MyProgs не отрабатывает »
{userprofile}\MyProgs

Devils Night
05-12-2011, 09:58
Лександер, Оно вот такую фигню выдало
http://i2.imageban.ru/thumbs/2011.12.05/fac82a93a1ef002d497ebe8d6d41c8be.png (http://i2.imageban.ru/out/2011/12/05/fac82a93a1ef002d497ebe8d6d41c8be.png)

Скрипт обычный
[Setup]
AppId={{7BF96892-6F6A-411C-B5B3-07566B9D3074}
AppName=MyProgs
AppVersion=1.5
AppVerName=MyProgs 1.5
AppPublisher=My Company, Inc.
DefaultDirName={pf}\MyProgs
DefaultGroupName=MyProgs
OutputDir=.
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

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

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

[Files]
Source: C:\Program Files\Inno Setup 5\Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion
; Примечание: Не используйте "Flags: ignoreversion" для системных файлов

[Icons]
Name: {group}\MyProgs; Filename: {app}\MyProg.exe
Name: {group}\{cm:UninstallProgram,MyProgs}; Filename: {uninstallexe}
Name: {commondesktop}\MyProgs; Filename: {app}\MyProg.exe; Tasks: desktopicon

[UninstallDelete]
Name: {userprofile}\MyProgs; Type: filesandordirs

ExpandConstant('{userdocs}\MyProgs')? »
И куда её пихать, т.е получается ещё дополнительный код нужен? InitializeWizard подойдёт?

R.i.m.s.k.y.
05-12-2011, 10:06
Оно вот такую фигню выдало »
справка инно показывает, что такой переменной нету
в шапке есть ссылка на стандартные папки винды http://www.forum.oszone.ru/showpost.php?p=1218002&postcount=102

Devils Night
05-12-2011, 10:11
справка инно показывает, что такой переменной нету »Я в файле %%_Windows нашёл

C:\D&S\User\Рабочий стол -- {userdesktop}

C:\D&S\All Users\Рабочий стол -- {commondesktop}

C:\D&S\User -- {userprofile}

C:\D&S\User\Избранное -- {userfavorites}

C:\D&S\Al Users\Избранное -- {commonfavorites}

C:\D&S\User\Local Settings\App Data -- {localappdata}

C:\D&S\User\Мои документы -- {userdocs}

C:\D&S\All Users\Общие документы -- {commondocs}

C:\D&S\User\Главное меню\Программы -- {userprograms}

C:\D&S\All Users\Главное меню\Программы -- {commonprograms}

C:\D&S\User\App Data -- {userappdata}

C:\D&S\All Users\App Data -- {commonappdata}

C:\D&S\User\Send To -- {sendto}


C:\ -- {systemdrive} или {sd}

C:\WINDOWS\Fonts -- {fonts}

C:\WINDOWS\Temp -- {tmp}

C:\WINDOWS -- {systemroot} или {windir} или {win}

C:\WINDOWS\System32 -- {sys} или {systemsystem}

C:\Program Files -- {programfiles} или {pf}

C:\Program Files\Common Files -- {commonprogramfiles}

А ещё в Inno Script Studio есть то чего нет в Inno IDE

щито это? »По Русски можешь писать? Моя твоя не понимать!
Этот файл в сборке InnoUltra имеется.

R.i.m.s.k.y.
05-12-2011, 10:15
Я в файле %%_Windows нашёл »
щито это?

Gnom_aka_Lexander
05-12-2011, 10:18
Оно вот такую фигню выдало »
Я сейчас поискал, и не нашел в инно константы {userprofile}. Может, конечно, плохо искал, но подозреваю, что достаточно. в шапке есть скрипт Стандартные папкам Windows (http://www.forum.oszone.ru/showpost.php?p=1218002&postcount=102), который в твоем случае поможет.

щито это? »
в составе справочных материалов в моей сборке есть файл констант. видимо устарел.

Devils Night
05-12-2011, 10:31
в шапке есть скрипт Стандартные папкам Windows, который в твоем случае поможет. »
Теперь точно, отвесил до зубов, мне теперь этого на целый год хватит.
А как нибудь попроще нельзя? А то как бы я в этих тонкостях не волоку.




© OSzone.net 2001-2012