Скрипты Inno Setup. Помощь и советы [часть 5]
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Inno Setup [все вопросы] часть 1 Inno Setup [все вопросы] часть 2 Скрипты Inno Setup. Помощь и советы [часть 3] Скрипты Inno Setup. Помощь и советы [часть 4] |
Цитата:
Код:
if not FileExist('твой файл') then |
Что- то у меня не получается создать ярлык в меню "Пуск"
вылетает с ошибкой Код:
Скажите пожалуйста где я опять накосячил :( прикладываю скрипт с файлом иконки |
Johny777, могу посоветовать создать все-таки, секцию [Icons] и просто скрыть страницу выбора папки в меню пуск. Сам сталкивался с засадой именно с иконками в пуск из кода. сейчас не вспомню точно, но вроде так и пришлось из [Icons] делать.
|
Johny777
Попробуй так: Код:
CreateDir(ExpandConstant('{userprograms}\Source Engine 15')); |
Как в инсталляторе вместо bmp картинок использовать png картинки... :search: Заранее спасибо.
|
Ivan_009,
ботвой в окне инсталла http://ifolder.ru/22008153 а в сплэше через isgsg.dll, которая идёт в комплекте с GameScript Generator http://forum.csmania.ru/viewtopic.php?t=4688 этой же библиотекой и фон и слайдшоу (png Jpeg и прочие) |
Лександер, а в какую процедуру вставлять
|
LinkOFF, что именно?
|
Как сделать, чтобы эта функция; SetWindowLong(WizardForm.Handle, (-20), GetWindowLong(WizardForm.Handle, (-20)) or $2000000); работала вместе со слайдшоу...А то эфекты слишком тормозят... :beta:
|
Ivan_009,
её нужно отключать во время работы той, что отвечает за эффекты в этом сообщении El Sanchez в первом "читать далее" показано как это сделать (отключить стиль) http://forum.oszone.net/post-1904450.html#post1904450 |
Доброго времени суток всем, помогите с проблемой:
--------------------------- Ошибка --------------------------- Runtime Error (at -1:0): Cannot Import dll:<utf8>C:\Users\usrname\AppData\Local\Temp\is-8C3H3.tmp\mydll.dll. --------------------------- ОК --------------------------- в скрипте: -------------------------------------------------- [Files] Source: "D:\Projects\mycomp\prod\Utils\mydll\Release\mydll.dll"; DestDir: "{app}"; Flags: ignoreversion [code] function somefunc(str: string): Integer; external 'somefunc@files:mydll.dll stdcall'; -------------------------------------------------- Mydll написана как unicode с++ проект, экспорт ф-ции происходит вот так: Код:
__declspec(dllexport) int somefunc(LPCTSTR szInstLocation); |
Johny777 можно поподробней ато все равно эфекты почемуто глючат :o
|
Цитата:
Одним словом, надо так: Код:
[Files] |
Цитата:
|
Вот
|
Ivan_009, ок. В процедуре CurPageChanged2 перед InitializeSlideShow отключаете стиль, а после DeinitializeSlideShow включаете назад.
Код:
procedure CurPageChanged2(CurPageID: Integer); |
Лександер,
Цитата:
|
LinkOFF, ну так. Это нужно писать туда, где ты распаковываешь архивы. теоретически можно вообще на запуске проверить их все на наличие, и если хоть одного не хватает - можно смело полностью отменять установку.
|
Цитата:
Далее начал ковырять свою dll: вместо _declspec(dllexport) сделал экспорт через .def-файл - всё заработало! :rupor: в Depends пропал знак вопроса перед именем моей экспортируемой функции, не силен, не знаю, с чем это связано.. Как то так :) |
Еще вопрос - как получить hwnd окна деинсталлятора?
пробую в CurUninstallStepChanged (usUninstall) использовать MainForm, при запуске деинсталлятора пишет: --------------------------- Ошибка --------------------------- Runtime Error (at 21:566): Внутренняя ошибка: An attempt was made to access MainForm before it has been created. --------------------------- ОК --------------------------- |
Как сделать инсталлятор, что до подготовленной установки, распаковался шрифт (всего лишь 1 штук, к пути: C:\WINDOWS\Fonts) и сделать в подготовленном инсталляторе, чтоб все страницы изменялись шрифты.
|
ASheff,
в деинсталятре не основная форма инсталла (MainForm), а Код:
procedure InitializeUninstallProgressForm; alert30, в шапке классный пример El Sanchez-а "Свой шрифт в инсталляторе" сам использую пока инсталл делаю сбоев не обнаружил :) ! |
Johny777, а как же распаковка файлов до начала подготовительной установки?
|
Цитата:
схему установки пожалуйста (или кусок скрипта, где всё тобой описанное происходит) и на каком этапе должен быть задействован шрифт? |
Схема такая через стрелки: запуск программы -> распаковка файлов, ну например шрифт MyriadPro Regular: C:\WINDOWS\Fonts -> начало подготовительной установки ("Вас приветствует Мастер установки...").
Вообще, надо сделать так, чтоб пользователи навсегда увидели инсталлятор со шрифтом типа MyriadPro Regular, а не стандартные. Хоть даже, что шрифт типа MyriadPro Regular не установлен. |
Цитата:
|
alert30,
не вижу проблем в начале процедуры InitializeWizard ставишь шрифт а потом создаёшь всё остальное (лейблы, чекбоксы...), которое этот шрифт использует шрифт всего инсталла ставишь так: Код:
procedure InitializeWizard; Цитата:
если да значит до создания формы в самом начале |
Johny777, а если например пользователь не установит этот шрифт (возьмем Arial). Шрифт же поменяется на стандартный (Tahoma), как обычно.
|
Цитата:
в том коде проверка есть или нет шрифта в системе пользователя, а если нет, то тут же будет! а при деинициализации (отмена, установка завершена) шрифт слетает, если был установлен |
Johny777, это да, но как автоматически установить шрифт до начала "Вас приветствует...". В деинсталляции пусть останется, вдруг кому может сделать документ в этой шрифте.
|
|
|
вот как ты хотел, с Ариалом (в качестве примера)
оно? главное в самом начале секции ставь установку шрифта |
Всем привет.
Подскажите пример наложения логотипа.PNG на инсатллятор без Fairy.dll Заранее спасибо. |
Dark_Delphin, на ботве - кнопку делашь, со всеми 4-мя положениями одинаковыми и кладешь ее на стекло. а может и картинка прокатит, хотя вроде раньше не ложилась.
|
Лександер, мне не на стекло.
|
Dark_Delphin, тем более. но лучше кнопкой - ее кликабельной проще сделать и параметры удобные, курсор можно вкорячить одной строчкой и т.п.
|
Лександер, а где пример можно посмотреть?
|
Dark_Delphin,
в твоём случае проще обойтись без ботвы тебе поможет наш друг "Image Button" и фотошоп (другой пример, который я укорачивал это Inno Setup 5\Examples\Example_MouseEvent_ImgBtn.iss) прикладываю архив с укороченный под свои нужды кодом (думаю тебе в самый раз. При желании можно добавить состояние "при наведении") . |
Johny777, у BMP фон есть...
|
Dark_Delphin,
ну есть тебе ж не на стекло сделай тот фон на который кладёшь (цвет) |
Johny777, у меня в инсатлляторе фоновая картинка.
Вот почему нужно *PNG |
Dark_Delphin,
ну так возьми кусок картинки как фон дай мне свою картинку и пнг нужного размера я тебе сейчас пример текстур сделаю а пнг это ботва по другому фиг знает |
|
Этот код Я понимаю будет копировать файлы из определенной папки? А можно эту папку засунуть в инстал и копировать файлы от туда? |
Creator000, так он не копирует файлы из папки.. Он в инсатлл компилируется и потом при установке устанавливается в папку (в вашем случае в корневую папку.)
|
Dark_Delphin, то есть файлы будут просто копироваться из инстала?
|
Creator000, да.
|
Dark_Delphin, файлы копируются, только почему деинсталлятор создается? мне он не нужен. это просто набор файлов.
|
Creator000, причём здесь компоненты и деинсталлятор?
|
Dark_Delphin, можно IS заставить копировать файлы из своего инстала без всяких деинсталляторов?
|
Creator000, тебе же ответили на Кринкельсе:
|
nik1967, Я тут недавно, так что не знаю кто тут мне отвечал .
|
Creator000, Почитай от сюда.
|
Заказ создание установщика на Inno
Всем привет, совсем недавно я начал работать с яндекс и тут же возникла такая проблемма. Нужно в инстляторе сделать при установке возможность выбора пользователя на установку яндекс бар и других параметров, но в скриптах тем более на паскаль я не силен. Помогите пожалуйста создать скрипт инстлятора или инстлятор для программ моих, конечно не за бесплатно. БОлее подробно при личной переписке. Прошу ответить как можно скорее так как сроки поджимают.
-- Контактные данные удалены модератором - ОПК п. 3.16 Для связи на форуме существует личная переписка |
Поймите мне помощь нужна, я из за этого и обратился на форум, так как раз здесь тему инстляторов обсуждают хорошо, значит есть люди способные его написать, вот я и ищю такого человека чтобы ему заказать написание инстлятора
|
Go_Ram, кто восхочет и возжаждет — тот всегда может написать Вам через систему персональных сообщений на форуме, либо непосредственно на почтовый адрес (который Вы указывали при регистрации). А нарушать правила не след.
|
все не так как Я хочу.
|
|
Здравствуйте. Как сделать чтоб файл распаковывался в C:\Users\имя пользователя\AppData\Local\ ?. Я ставлю {userappdata}, но он распаковывает в C:\Users\имя пользователя\AppData\Roaming\ . Пробовал еще {userprofile}, но с ним вообще ошибку выдает.
|
Цитата:
|
Johny777, честно - лень искать, а вообще - помоему ближе к концу 3-й части или начале 4-й части видел подобные примеры того, как создать собственные параметры для инсталлятора.
Цитата:
|
Цитата:
|
тогда такой вопрос. в установщике 3 компонента. 1 это программа. остальные 2 скины и темы. как последние 2 компонентов просто скопировать из установщика в папку назначения?
|
При использовании ISVideo как сделать так чтобы видео отображалось только на странице установки а на финишной закрывалось...Зараннее спасибо... :search:
|
Ваня,
насчёт ISVideo не знаю (ты бы скрипт с минимумом файлов дал) вот тебе пример на основе xvid.dll http://rghost.ru/private/38303460/fa...06bff122ee5155 делается легко во встроенной процедуре ______________________________________________________ El Sanchez, спасибо! очень привлекательный вариант но если честно не пойму как правильно использовать :( мне нужно для чекбоксов сделал так: даже не компилится ошибка можно мне пожалуйста живой пример? |
Цитата:
Код:
case ExpandConstant('{param:Check|}') of |
Вложений: 1
Serkap Forever & Курский Город Друзей - скрипт писался для чата Bimoid
Для чего его писал я, у меня есть большая локальная сеть которая состоит из несколько подсетей, у каждой подсети есть свой шлюз, а у меня 7 под сетей (7 шлюзов) и также есть доступ через интернет. Один сервер обрабатывает эти 7 шлюзов и 1 подключение через интернет! На этом сервере стоит сервер чата. Пользователь запускает этот инсталлятар, инсталлятар определяет автоматически шлюз, пользователь тока указывает свой логин, после этого запись этих данных происходит в 2 INI файла автоматически. После завершения установки, чат автоматически логинится и запускается с предустановленным профилем. Это хорошо помагает для сис админов в особенности у кого поднят Домен. не надо бегать, настраивать для каждого пользователя профиль и т.д.!!!! достаточно запустить и указать тока логин зарегистрированого пользователя!!! awatch.exe - для определение IP адреса или Шлюза! Код:
|
Цитата:
Код:
Checked := ExpandConstant('{param:Check|}') = '1'; |
Цитата:
|
Цитата:
Просто свойство Checked, по умолчанию := False... |
Как в ISVideo сделать кнопки Пауза,Старт,Стоп на if CurPageID=wpInstalling then :unsure: вот скрипт
|
У кого остался скрипт, чтобы маскировать установщик в NSIS? Благодарю заранее.
|
как проследить что и куда копирует установщик?
PS что дает команда •ArchitecturesInstallIn64BitMode*? а то ваша справка глючит. |
Как сделать так, чтобы путь к установки брался из файла .reg?
Прописываю Код:
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft,InstallLocation|{pf}\Pariah} Код:
[Registry] Да и кстати, как найти правильный файл реестра? Просто нужно русификатор сделать, но какую именно директорию экспортировать? Верней как она должна выглядеть. |
bear!, ты все правильно делаешь, в принцыпе.
Идеальный вариант - ищешь в разделе реестра Uninstall путь к папке с программой, которую хочешь русифицировать. Наиболее вероятно, что в пути будет подпапка с большим количеством букво-цифер, заключенная в фигурные скобки - это будет AppID программы - все официальные пачи на нем и базируются обычно. далее указываешь именно этот ключ и параметр, в котором находится путь к программе - все должно получиться. |
Добрый день!
Подскажите пожалуйста, список компонентов для установки выводится обычно в виде чекбоксов или радиокнопок. Но мне необходимо, чтобы компоненты первого уровня были просто текстом. т.е. как то так: +Уровень1 (обычный текст) - Уровень 2 (чекбокс) - Уровень 2 (чекбокс) - Уровень 2 (чекбокс) +Уровень1 (обычный текст) - Уровень 2 (чекбокс) - Уровень 2 (чекбокс) - Уровень 2 (чекбокс) Пробовал так через свойство ItemObject, не получилось (паскаль уже плохо помню) Код:
var |
С помощью задач можно это решить. Посмотрите в справке GroupDescription
|
Цитата:
Предложенный вами вариант позволяет группировать задачи на странице задач. Мне же таким образом нужно группировать компоненты на странице компонентов. Попробовал просто очистить список компонентов, добавить туда из кода группу, а чуть ниже чекбокс. Код:
WizardForm.ComponentsList.Clear; +Уровень1 (текст) -Уровень2(чекбокс) Но при попытке поставить галочку в чекбокс возникает ошибка "Access violation at address 0048BF49. Read of address 00000000" |
FrozenProtector, Вы на правильном пути. Но, не стоит чистить компонент-лист - инсталл на него рассчитывает, и не найдя того, что ожидал там увидеть - естественно, расстроится. Можно создать свой чеклистбокс и там уже делать все, что душе угодно.
|
Цитата:
|
Подскажите как решить три ниже перечисленных вопроса:
1. Как поменять заголовок окна Windows? Желательно для каждой страницы установки свой индивидуальный заголовок. 2. Как поменять сообщение, которое вылазит при закрытии программы установки с уведомлением о подтверждении закрытия, на свое? 3. Как убрать определенную страницу программы установки, если я не хочу, чтобы она вылазила? Заранее спасибо за ответы или ссылки на ответы :) |
GoshaPolo,
1. 2. а) форма (выдрал у себя из скрипта, только без картинки :)): б) месседжбокс: в) другой пример: 3. ай ди страниц: |
Johny777, спасибо за ответы :clapping:
Если не сложно еще три, я так думаю для знающих людей простых, вопроса: 1. Как можно задать свое названия ярлыка для деинсталляции в меню Пуск? 2. Как задать координаты окна установки при появлении? Например я хочу, чтобы окно вылазило в правом нижнем углу, или строго по центру экрана например. 3. Как задать на свой, а не стандартный, чекбокс функцию создания ярлыка на рабочем столе и функцию запуска программы после окончания установки? |
GoshaPolo,
прочитай ка ты дружочек сначала справочку по 1-му вопросу! (вот тебе русская справка http://sendfile.su/570136) ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,, по второму вопросу для ярлыка: для запуска (секция RUN) таким же макаром через Check ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, по третьему: через GetSystemMetrics, здесь http://innoultra.ru/?page_id=18 под 43-м номером 2 варианта |
Johny777, спасибо еще раз!
По поводу чекбоксов еще вопросик маленький. Как их поместить на определенной странице, а не на всех? |
Цитата:
можно на панели или на форме разместить (если на форме, то TNewCheckBox.Create(название формы); или другая страница только вверх сдвинь, тк он низко находится alert30 Цитата:
можно поинтересоваться зачем тебе это? в ...\Inno Setup 5\Scripts\NSIS_SkinCrafter\ не оно? |
Johny777, спасибо еще раз! Очень выручил :yahoo:
Johny777, что-то не могу разобраться. Прописал чекбокс на запуск программы в секцию RUN и он запускается сразу после странички с прогрессбаром. А как сделать, чтобы он запускался только после нажатия завершения установки на последней странице? |
GoshaPolo,
есть этапы пример (в порядке выполнения) : и в справке в поиск вбей "Exec" и "ShellExec" без кавычек поправил свою опечатку в коде и обрати внимание на флаг "postinstall" для секции RUN |
Johny777, спасибо!
Флаг "postinstall" приметил сразу, сделал через него, но не сразу сообразил как будет это действовать, сейчас разобрался и делаю через него :) |
Цитата:
Допустим так: прогресс-бар по-короче, выполнение команд при распаковке инсталлятор и его какие-либо записи над прогесс-баром, кнопочка "Детали..." под прогесс-баром и при его нажатии должен появиться список выполненных команд. |
Цитата:
|
Еще вопросик возник. Никак не могу совладать с флагом "waituntilidle", может быть я его не правильно понимаю, при запуске приложений после установки. Запускаются сразу все, которые прописаны. Как их запустить по очереди, чтобы пока не закроется процесс первого приложения, второе не запускалось, а затем сразу запускалось второе?
|
Всем привет. Скачал скрипт. Там не было страницы "Лицензия". Я его создал, но теперь при запуске инсталлятора и переходе на страницу Лицензия у меня становится не активна кнопка "Далее". Я знаю почему. Потому что не активирована Radio "Я согласен с ЛС". Но вот в чем проблема. Я не ставил эти Radio. Поэтому у меня к вам вопрос. Как поставить их ("Я согласен с ЛС" и "Я не согласен с ЛС")?
Исходный скрипт: http://www.sendspace.com/file/d77j3y Мой скрипт: http://www.sendspace.com/file/c98ply |
Цитата:
почти Тебе нужен флаг сразу под ним "waituntilterminated" Ко всем строкам в RUN для внешних экзешников припиши которые должны выполняться по очереди вот что важно: Из справки: "Все параметры выполняются инсталлятором в том порядке, в котором они располагаются в секции." (сверху вниз от начала секции до конца) Sanshalay, |
Johny777, это то, что мне надо! Спасибо огромное!
|
Поправте в чём ошибка, хочу добавить 1 картинку на все страницы (стандартные, дополнительных нету) инсталера. Сама картинка подключена в [Files]
И вопрос второй, как изменять цвет текста, на всех страницах инсталера |
ToCamoe, я начинающий и сильно в код не всматривался. Но вот зачем после InitializeWizard ставить скобки? \\\Проверил. Дело не в этом
И он у тебя не закрыт Найди Код:
WizardForm.WizardBitmapImage2.Bitmap.LoadFromFile(ExpandConstant('{tmp}\img.jpg')); Код:
WizardForm.WizardBitmapImage2.Bitmap.LoadFromFile(ExpandConstant('{tmp}\img.jpg')); |
Sanshalay, код изначально не мой, я в попытках его дописать ) убирание скобок и закрытие не помогло. Ошибка осталась, судя по всему закрывать ближе к концу кода надо.
С учётом того end; что указал ты, их количество равно 52 на 52 |
Johny777, спасибо еще раз! У меня справка в .chm не работает почему-то. Страницы не отображает. Поэтому пользуюсь другими источниками, а там такого флага не было :(
|
GoshaPolo, она работает. кликни в списке и все откроется. справка кривовата, но работает. еще вариант - в свойствах файла справки посмотри - если есть кнопка "Разблокировать" то нажми ее и потом - применить.
|
Как отключить разбиение файлов? Нужно все в одном exe. Размер около одного гигабайта. Такое возможно?
Просто файл .bin не особо нужен (получается два файла) |
Подскажите про Inno + ISDone!
Потребовалось разбить репак на диски и там arc, precomp - потому ISDone для нормального отображения прогресса. И получилось вот что - при запуске сетапа сразу просит второй диск, как выберешь параметры и "Установить" - опять просит первый!!!(ну и на середине установки, естественно, второй) Почему такая чехарда с дисками?При чистом Inno всё нормально было. ================================================================================================= Цитата:
OutputDir=куда\сохранять OutputBaseFilename=название SolidCompression=yes |
Цитата:
|
...
|
Ктонить может модифицировать скрипт для конвертации OGG чтобы он выполнялся два раза, т.е. нужно чтобы первый раз он конвертировал содержимое папки {app}\data\local\sfx (при условии что выбран компонент "GameVoice"), а второй раз чтобы конвертировал содержимое \data\global\music (при условии что выбран компонент "Music")
Собсно особенность этого кода в том, что он в виде прогресс-бара отображает процесс конвертации: |
Еще несколько вопросов:
1. Как задать выбор компонентов на свои RadioButton? 2. Как разделить RadioButton по взаимосвязи? Например у меня есть 4 RadioButton, первый и второй взаимосвязаны между собой и вместе выбираться не должны ни в коем случае, а третий и четвертый соответственно связаны между собой и вместо тоже выбираться не могут. 3. Как изменить картинку при наведении на нее курсора? |
GoshaPolo,
вполне реально потом в этом сообщении примеры сделаю скачай ка для начала (или уже?) здесь http://forum.oszone.net/showthread.p...99#post1201499 расширенную версию (ispack не unicode с препроцессором) или здесь сборку http://innoultra.ru/ В ней много примерв и библиотек! |
Johny777, я и так пользуюсь расширенной версией от ResTools. Всю облазил, многое нашел, что нужно. Но вот по этим вопросам, которые описал ничего не могу поделать. Например на картинку нет события OnEnter, так бы 3-ий вопрос не задавал.
|
1.
как во втором примере (если я правильно понял) 2. размести на панелях http://sendfile.su/604099 код: 3. Цитата:
архив с фалами http://sendfile.su/604084 код: |
Johny777, хм... не хочет у меня компилятор 5.4.3 принимать OnMouseEnter. Пишет, что неизвестный идентификатор.
|
GoshaPolo,
у меня тоже 5.4.3. всё компилится (ANSI) скачай архив с файлами если не получится ставь заново или скачай InnoUltra из ссылки моего поста |
Johny777, установил InnoUltra и все переменные заработали как следует. Спасибо! По RadioButton тоже все верно поняли, все получилось. Только вот маленький вопросик по панелям. Можно ли сделать фон панели прозрачным?
И еще в догонку, последние четыре интересующих меня вопроса, больше не будет: 1. Как поменять название окна, которое отображается в панели задач? Со стандартного "Установить" на что-нибудь свое. 2. Как поменять заголовок окна деинсталяции? 3. Как поменять текст в первом окне деисталяции, где пишется "Вы действительно хотите удалить..."? 3. Как поменять текст в завершающем деинсталяцию окне, где пишется "Программа *** была полностью удалена с Вашего компьютера."? |
Johny777, вот сейчас появился вопрос :)
Это не есть хорошо, что RadioButton прозрачной нельзя сделать. А можно ли тогда чекбоксами реализовать подобное? Чтобы при нажатии на один чекбокс с другого снималась галочка, и без панелей. И еще микро-вопросик всплыл. Какой ID имеет моя страница, вставленная после wpSelectComponents? Не могу ее скрыть никак. |
У меня есть замечательный скрипт который добавляет зависимость от не дочерних компонентов, но есть в нем одно неудобство: он завязан на номерах компонентов. Собсно можно ли его переделать, чтобы зависимость была от названия компонента?
Т.е. желательно не от "Description", а от "Name". |
Цитата:
Цитата:
Raf-9600, посмотри на свойство ItemName - вроде-бы то, что нужно. GoshaPolo, ID страниц по порядку: |
Цитата:
Код:
... Цитата:
Решение следующее: Создаете радиокнопку без надписи справа, создаете отдельно надпись к ней (элемент TLabel с Transparent:=True). Пишите процедурку клик по TLabel=клик по радиокнопочке. И в итоге получаете прозрачную радиокнопочку. Примеров таких кнопочек и чекбоксов - немеряно, поэтому ищем (скрипт Prototype от Shegorat к примеру) |
Цитата:
|
Цитата:
Цитата:
Поэтому мне нужно как-то реализовать, чтобы при выборе одного чекбокса, с другого, или даже с нескольких, снимались галочки. |
1. как поменять иконку файла удаления, она по стандарту делается как иконка установщика, хочется другую. - вопрос решён
2. как сделать, чтобы при удаление, удалялась папка с её содержимым полностью, а не только те файлы, которые были установлены. 3. сколько переменных procedure InitializeWizard; может использоваться в одном коде ? |
Цитата:
Цитата:
Код:
[UninstallDelete] |
ToCamoe,
Цитата:
Код:
[UninstallDelete] Цитата:
Инно не умеет работать с перегруженными функциями,(вроде-бы) поэтому одноименные функции нельзя выполнять в одном скрипте. но никто не запрещает эти функции ( как и процедуры ) переименовать и выполнить внутри одной procedure InitializeWizard. GoshaPolo, Можно так: Raf-9600, попозже чуток :) |
|
|
Цитата:
Цитата:
Код:
Type: filesandordirs; Name: {app} Код:
Type: filesandordirs; Name: {app}\Name |
Raf-9600, Вспомнил. бедой такой я уже занимался. и сделать можно привязку к именам компонентов. но. зависимость от номера все равно останется. единственное, что можно сделать - привязку к Description, чтобы избавится от привязки к номерам. Выглядеть будет так:
|
|
zeroka_no_onna, скртипт покажи. Пытался я тут телепатией заниматься - люди начинают завидовать и обижаться.
|
Вот скрипт
Раньше с многодисковыми установками сталкиваться не приходилось, потому вобще не представляю в чём дело. У меня подозрения только на использование ssPostInstall а не штатного значения ssInstall |
zeroka_no_onna,
Код:
DiskSpanning=yes |
Кто-нибудь мне подскажет все-таки как скрыть созданную дополнительно страницу? Какой у нее будет ID?
|
|
Gnom_aka_Lexander, сорри не заметил того ответа. Но все же я не могу сообразить. Страницу я создал в расширенной версии компилятора от ResTools внутренними средствами, то есть не прописывал ее в коде. Как бы узнать какой у нее ID?
|
Цитата:
Тут задумывалось что вначале само inno копирует с дисков, а затем уж IsDone + arc и т.п. Ведь нужные ему файлы, всё в сетапе же должно быть? Код:
#define records Гм, кстати, rep/precomp/packjpg и прочее у меня как-раз таки и не в сетапе.Хотя не пофиг ли ему где и есть ли они? Вобшем, не понимаю. Диски уже записаны потому переделывать поздно, на будущее хотелось разобраться в чём дело. |
GoshaPolo, код покажи.zeroka_no_onna, придется сперва почитать всетаки, справки по исдону. facompress - длл-ка которая ускоряет распаковку фриарк. records - директива, нужная для механизма равномерного заполнения прогрессбара. и все усложнение начинается с того момента, как запакованное во фриарк было засунуто в инсталл.
|
Цитата:
1. Как сделать чтобы компонент выбирался и блокировался? У меня получается делать только что-то одно :( 2. Можно ли сделать чтобы правило выставления галочки в зависимости от компонента, не работало и в обратном направлении. Т.е. нужно чтобы если компонент выбран, то галочка ставилась, а если не выбран, то пользователь сам мог её поставить или убрать. Грубо говоря, вот код, и последние два правила работают не так как нужно. Буду весьма признателен если подскажете как это скорректировать: |
Raf-9600,
Код:
'1.07', '1.08' : |
Gnom_aka_Lexander, кроме того, что ниже, в коде больше нет упоминания про эту страницу:
|
GoshaPolo, ISCustomPage1.ID
|
Gnom_aka_Lexander, спасибо! Наконец-то! Пол дня бился с этой страницей :)
|
Цитата:
|
Raf-9600,
Код:
procedure ComponentsListClickCheck(Sender: TObject); |
Gnom_aka_Lexander, благодарю, а как решить вторую проблему? Ну т.е. если выбрать компонент Game\Lokal то ни GameDiablo2\Text, ни GameDiablo2\VoiceD2, ни Version нельзя выбрать :(
|
Raf-9600, вот так, тогда:
Обрати внимание на условие - if IsComponentSelected('Game\Full') then - тоесть компонент принудительно выбран, только если выбран компонет Game\Full, в противном случае его можно выбирать самостоятельно. |
Цитата:
|
Цитата:
|
Raf-9600, вызывается на этапе ssPostInstall, смотрите в конце. Папки существуют-то, где ogg-файлы находятся? oggdec.exe в {app} или где-то еще?
|
|
Как создать свою пустую страницу в инсталляторе?
|
|
|
ILIA_1992, так-то оффтоп. Но, отвечу - использовать для распаковки те-же параметры, которые были при упаковке. от Inno это никаким боком не зависит.
|
Gnom_aka_Lexander,
Я давно репаки не делал . Всё забыл . Начинаю с нуля. А поподробнее про ошибку можно ? Заранее спасибо. И ещё один вопрос . Как найти реестр ? например Alan Wake's American Nightmare . |
Цитата:
Цитата:
P.S. Не увидел в вашем коде привязку какого-нибудь файла к компоненту. P.P.S. Вместо выделенных строк можете написать для теста чего-нибудь нейтральное, типа Sleep(100). |
Цитата:
Все файлы которые отвечают за GameVoice сконвертировались отлично, но вот когда дело дошло до Music то появилась ошибка Out Of Range. и компилятор выделил: Код:
Exec(ExpandConstant('{app}\oggdec.exe'), '-Q ' + AddQuotes(iFiles[i]), '', SW_HIDE, EwWaitUntilTerminated, ResultCode); И ещё на данный момент скрипт в поле статуса пишет какой файл обрабатывает, а в том поле что нижу, пишет проценты. Но мне бы хотелось чтобы в поле статуса писалось во время обработки GameVoice - "Конвертация монологов", а во время обработки Music - "Конвертация музыки". И после этих надписей уже можно отображение процентов прогресса. |
Цитата:
Цитата:
|
El Sanchez, Вот теперь все работает как нужно, Благодарю
На ум пришло лишь два нюанса которыми его можно было бы дополнить: 1. Было бы очень круто, если бы прогресс-бар так же бы был в таскбаре (на ярлыке инсталлятора) если у пользователя Win7. 2. Так как в моем скрипте на странице инсталляциии отображается только строчка статуса, то хотелось бы чтобы проценты хода выполнения отображались тоже в строке статуса, после надписи. Т.е. чтобы можно было написать "Конвертация музыки выполнена на" и справа (не снизу) отображение процентов. Это все конечно не критично, но хотелось бы иметь |
Цитата:
Цитата:
|
El Sanchez, ИМХО его можно было бы и в первый пост, под спойлер "Ссылки на примеры скриптов" закинуть. Так как уверен, что этот код многим пригодиться.
|
|
Всем привет.
Подскажите как правильно прописать строку, чтобы файл устанавливался в Мои документы... Вроде {commondocs} или по другому? Заранее спасибо. |
Цитата:
Просто наличие прогресс-бара в таскбаре это единственное что отделяет код El Sanchez от совершенства |
Покапался в хэлпе и не нашёл, что то, какой флаг отвечает за установленную галочку чекбокса, по умолчанию, но можно было снять?
|
ToCamoe,
Код:
Name: "Text"; Description: "Text"; Types: full |
Цитата:
Код:
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked |
Цитата:
{commondocs} - общие документы Цитата:
для секции задач используй флаг unchecked для неотмеченных по умолчанию а можно через код (для компонентов) так: |
ToCamoe, Может если убрать Flags: unchecked то галочка по умолчанию будет? По крайней мере у меня так.
|
Ответьте на вопросик, может немножко не по теме, но я думаю ответ найдется :)
Мне нужно прописать ключ в реестр, который у меня записывается по такому пути - HKEY_USERS\S-1-5-21-4202093143-4282819894-987643330-1006\Software\ Так вот вопрос в том, на всех ли других компьютерах будет такая же папка S-1-5-21-4202093143-4282819894-987643330-1006 в реестре или это какое-то индивидуальное обозначение пользователя? Как тогда прописать в такую папку, если у каждой системы эта папка различна? |
скажите пожалуйста
в этом нет ничего неправильного? и вообще записывать через case правильнее (с точки зрения оптимизации)? ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, также открыл для себя .Free у меня много текста и картинок в скроллбоксе на второй странице при запуске процесс инсталла кушает 43 мб оперативы во время установки 100 на шаге ssInstall освободил скроллбокс *(скроллбокс.Free) теперь во время установки чуть больше 50-ти :) GoshaPolo, Извини реестр для меня тёмный лес с чудовищами |
На мой вопрос выше никто ответа не знает?
|
GoshaPolo, если не ошибаюсь, нужно писать Root: HKCU; и без S-1-5-21-4202093143-4282819894-987643330-1006
|
Raf-9600, писал так, но при установке выдает ошибку, что не может прописать по такому пути :(
|
Поделитесь пожалуйста алгоритмом сравнения нужной версии файла 50.6 через GetVersionNumbers(FilePath, VersionMSFile, VersionLSFile);
Причем VersionMSFile деятичный, а VersionLSFile - шестандцатеричный (т.е. msgbox показывает 50 327680 соответственно) Заранее спасибо! |
Помогите пожалуйста убрать страницы "Меню пуск" и "Компоненты" правильно. Как не убираю, вылазит рантайм. Буду очень благодарен
Скрипт: http://clck.ru/d/zxAyJVzi19yFX |
|
GoshaPolo, ошибка вылазит:
Unrecognized [Setup] section directive "DisableSelectComponentsPage" |
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Через case удобно и оптимально проверять сранение двух переменных, когда: 1) одну определенную переменную нужно сравнить с несколькими другими, и в зависимости от того, какой из других она равна - совершить соответствующее действие 2) когда одну переменную нужно сравнить с несколькими другими и совершить в нескольких случаях одно и тоже действие. В обоих этих случаях плюсы ощутимы - начиная от читаемости кода, заканчивая его оптимальностью. но в плане оптимальности, нужно помнить - case of работает до первого положительного ответа. как только получен ответ - да, выполнение структуры прерывается, и если это недопустимо, то тут без вариантов - if...then...else... |
Sanshalay, со страницей компонентов у меня тоже такой способ не прокатил :(
Вот такой вариант 100% получится. Пропиши эту функцию в секцию CODE 7 и 8 это ID страниц. Вот список всех страниц: Serega, в том то и дело, что там не CURRENT USER, а в простой USERS надо записать. Если HKU\SOFTWARE прописывать, то выдает ошибку при установке, что записать такую строку не может в реестр. Или разницы нету между CURRENT USER и этой строкой в USERS? Но почему тогда они разделены на разные разделы? |
Цитата:
|
Serega, Gnom_aka_Lexander,
спасибо! понял, запомнил Sanshalay, страница выбора компонетов появляется, если у тебя есть секция компонентов вот тебе пример пропуска страниц через код (айди страниц выше ) скрываем все станицы в этом примере, но появится страница готовности. Её не скроешь другой вариант как сказал GoshaPolo через секцию [Setup] (читай справку) •DisableDirPage •DisableFinishedPage •DisableProgramGroupPage •DisableReadyMemo •DisableReadyPage •DisableStartupPrompt •DisableWelcomePage |
Serega, спасибо, но меня интересовал не MSGBox а алгоритм сравнения числа 50.6 с VersionMS и VersionLS
Т.е. в пакете версия 50.6, getVersionNumber возвращает VersionMS=50 и VersionLS=327680 Как узнать что версия в пакете новее? |
R.i.m.s.k.y., если я правильно понял, то так:
Обрати внимание на переменную Float и ее тип. Цитата:
|
Gnom_aka_Lexander, немного не то
мне нужно условие больше или равно, а в примере просто равно |
:unsure: R.i.m.s.k.y., ну, дык :)
Код:
if StrToFloat(IntToStr(VersionMS shr 16) + '.' + IntToStr(VersionLS shr 16)) >= Float then могу только догадаться, что shr 16 приводит к десятичному значению, буду благодарен, если мне кто-нибудь объяснит работу этих приведений :modesty: |
GoshaPolo, Johny777, ок. А как скрыть страницу Дополнительные задачи? wpSelectTasks = 9; Ее штатными методами скрыть не получается. А через код я не понимаю что убирать. Поможете?
Скрипт: http://clck.ru/d/zxAyJVzi19yFX |
Sanshalay, тебе нужно убрать родную страницу задач, или SelectTasksPage, которая создается в коде?
Если родную - то так: Код:
function ShouldSkipPage(PageID: Integer): Boolean; Код:
function ShouldSkipPage(PageID: Integer): Boolean; |
Gnom_aka_Lexander, теперь код вот такой:
Код:
function ShouldSkipPage(PageID: Integer): Boolean; |
Цитата:
|
Sanshalay, тогда так будет более правильно:
Код:
function ShouldSkipPage(PageID: Integer): Boolean; |
Gnom_aka_Lexander, спасибо огромное!
|
Есть очень большой текст, который не влезает в строчку редактора кода Inno. Как перенести текст на следующую строчку?
|
Sanshalay, по операторам
к примеру Код:
if (д л и н н о е у с л о в и е) если это секция реестра в которой может одна строчка весить несколько килобайт, к примеру FilterData, то в таком случае нужно выносить в файл и импортировать его через reg import К примеру вот такое файл reg.reg Код:
REGEDIT4 Код:
reg := ExpandConstant('{tmp}\\') + 'reg.reg'; |
R.i.m.s.k.y., привет. Я в [CustomMessages] прописываю rus.License= и дальше пошел текст лицензии. А так как у меня Лицензия в TLabel, то она с файла не берется. (Хоть и указан LicenseFile=Project1.rtf в секции [Setup]) С плюсом не получается
|
Sanshalay, так бы сказал что нужно разрыв строки
в коде #13#10: 'первая строка' + #13#10 + 'вторая строка' в CustomMessages %n: первая строка%nвторая строка А вот автоперенос сам инно должен делать |
Вот как раз мне автоперенос и нужен. А Inno его не делает почему то (Inno Setup Ultra)
Или по другому. Как загрузить содержимое rtm файла в TLabel |
Здравствуйте. Как сделать так чтоб инсталлятор запретил доступ к интернету приложению? Заранее спасибо.
|
Помогите убрать ISDone и поставить нормальную распаковку файлов
Скрипт .iss http://clck.ru/d/rOWYxgAt1A8g8 решено |
как сделать так чтобы во время удаления wizardsmallimage загружалась не из папки с прогой а из папки temp
я пытался сделать так [Files] Source: WiazrdSmallImage.bmp; DestDir: {tmp}; Flags: ignoreversion [code] procedure InitializeUninstallProgressForm(); begin FileCopy(ExpandConstant('{tmp}\WiazrdSmallImage.bmp'), ExpandConstant('{tmp}\WiazrdSmallImage.bmp'), False); with UninstallProgressForm.WizardSmallBitmapImage do begin Bitmap.LoadFromFile(ExpandConstant('{tmp}\WiazrdSmallImage.bmp')); end; end; но мне выдает ошибку я зашел в папку (путь на скрине с ошибкой) а там изображения нету |
Хочу что бы после установки запускались файлы по порядку (один запустился, закрылся, следующий запустился и так далее). Сделал вот так вот:
Код:
procedure CurStepChanged(CurStep: TSetupStep); |
habib2302, при деинициализации инсталлятора временная папка уничтожается всместе со всем содержимым.
ЗЫ. И как вы себе это предствляете? :) Устанавливаете игру сегодня, к примеру, а удаляете через 2 месяца. И все эти два месяца в темпе будеть висеть временная папка :) |
Цитата:
|
Подскажите, пожалуйста, чего надо в скрипт прописать чтобы в окне UAC не было слова unknown
Код:
AppName={#AppName} |
Всем привет.
Подскажите ка кразбить на диски игру, если я покую архиваторами? |
R.i.m.s.k.y., вот эти строчки по-моему надо разобрать:
Код:
AppPublisher={#SVPDefDir} |
alert30, не-не-не, все нормально, сайт на месте, # define SVPDefDir "SVP" тоже прописано
|
alert30, ну а зачем пасту удалил
Цитата:
где его можно скачать отдельно и какие параметры ему рисовать? |
R.i.m.s.k.y., боюсь, будешь спрашивать "причем тут это, а не Inno?" :(
SignTool, да это оно. Скачать этот чудный инструмент, цитирую: Цитата:
|
alert30, значит оно
у меня канал всего 256к, я не могу позволить себе веб-инсталлеры aep arse я даже картинки в нете отключаю! Хотя бы поделитесь, пожалуйста, камрады, рабочим примером интеграции SignTool в Inno чтобы мне день сэкономить на экспериментах Мурзилку по этой утилите я прочитал, в инно в меню Инструменты - инструменты подписания пошуровал, но все же |
R.i.m.s.k.y.
Цитата:
Цитата:
Если эта ссылка не работает, то Вот цитата: Я и сам знаю, где находится, но просто решил разобраться: этот или нет? |
|
Небольшой вопрос если я использую ISDone то значение AppID мне нужно или нет зараннее спасибо... :unsure:
|
alert30, спасибо
однако ничего у сертификатчиков не потрескается? от 179 до 499 уе за серт Цитата:
|
Ivan_009,
AppID никак не связан с ISDone и есть всегда, если ты принудительно не создаёшь создаваемый по умолчанию ключ реестра (CreateUninstallRegKey = no) или деинсталятор (Uninstallable=no) если AppID не указан, то он берётся автоматом из AppName= например при AppName=hl2 ключ реестра будет таким HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\hl2_is1 рекомендую всегда делать настройку AppID и использовать его по двум причинам 1. имя не будет браться из AppName= , а будет твоим уникальным 2. ты каждый раз можешь находить директорию установки игры (если установлена) вот так AppId=TheBestAppId DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID") }_is1,InstallLocation|{pf}\MyProgramm} это удобно, если игру нужно переустановить (скажем сменить озвучку) или если ты делаешь патч удобно тем, что не нужно указывать куда она установлена |
Здраствуйте.
Как установить определенный файл, если будет выбрано в установщике 2 определенных компонента Пробовал так: Components: c1 c6 Он видит только 1. и устанавливает файл, но мне нужно, чтобы файл устанавливался, если выделены эти два компонента. |
os_my_zone, Components: c1 and c6
|
Как в ISVideo.dll v.1.5.0 сделать кнопки Пауза,Старт,Стоп на if CurPageID=wpInstalling then зараннее спасибо... :search:
|
вот тебе Ваня простенькие процедуры :)
назначь сам чему нужно извиняюсь за изврат со "Стопом", тк процедура ISVideoStop почему-то ничем не отличается от ISVideoPause наглядный пример в архиве http://sendfile.su/608592 Цитата:
ISVideoInit(WizardForm.Handle, ExpandConstant('{tmp}\Video.avi'), ScaleX(65), ScaleY(65), ScaleX(320), ScaleY(200)); рекомендую извлекать видео на шаге ssinstall, те перед установкой там же кнопки делаешь или чем ты управляешь действиями |
Всем привет.
Подскажите ка кразбить на диски игру, если я пакую архиваторами? |
Dark_Delphin,
опыта с внешними архивами у меня почти никакого, но думаю, что там где у тебя списком идут внешние архивы(если это так) нужно после определённой строки создать форму и на ней эдит с обзором или просто "Обзор" и указать расположение других архивов (как в вин раре) покажи код распаковки |
Johny777,
Код:
if not ISArcExtract ( 0, 24, ExpandConstant('{src}\zdata.pro'), ExpandConstant('{app}'), false, '', '', '', PCFonFLY ) then break; Код:
if not ISArcExtract ( 0, 100, ExpandConstant('{src}\zdata.pro'), ExpandConstant('{app}'), false, '', '', '', PCFonFLY ) then break; |
Dark_Delphin,
дабы далеко не ходить вот тут есть готовый пример формы запроса от Winst@n для IsDone http://176.9.1.113:52080/showthread.php?t=7&page=3 проще, чем нечто подобное с нуля рисовать |
Во время установки подгружаю нужные мне файлы через интернет. Для этих целей использую плагин Inno Tools Downloader.
Всё устраивает кроме одной мелочи - не могу русифицировать интерфейс загрузки. Плагин позволяет править ini файлы с языками, а потом подгружать их через команду ITD_LoadStrings. Но в результате вместо русских букв получаются иероглифы. Пробовал конвертировать ini в различные кодировки, но ничего не помогло. Функция ITD_SetString дает аналогичный результат. Кто сталкивался, помогите ,пожалуйста, или подскажите аналогичные загрузчики файлов через интернет. |
Здравствуйте, кто знает скажите, что нужно пропивать в caption, чтобы на кнопке был такой символ?
http://i25.fastpic.ru/big/2012/0607/...2824d38005.png |
Цитата:
P.S. Требуется расширенная версия Inno. |
t16bz,
я бы например использовал SpeedButton с глифом (тебе понадобится расширенная версия инно http://forum.oszone.net/thread-148707-30.html) пример с картинкой во вложенном архиве хотя может на Unicode версии инно можно использовать такой символ |
Цитата:
|
t16bz
Непечтные символы вывожу так: Button.Caption := #код_символа например: Button.Caption := #244; или шестнадцатеричный код символа Button.Caption := #$FE; Конечно нужно знать код символа. |
|
El Sanchez, способ хороший но есть нюанс: в говносборках частенько вырезают шрифты
В каждой венде есть "Таблица символов", интересующие меня символы я смотрю там |
Цитата:
|
Цитата:
|
Всем привет.
Кто знает как изменить окошко "Выбор языка инсталлятора" ? |
Dark_Delphin,
http://176.9.1.113:52080/showthread.php?t=7&page=4 (в сообщении sergey3695) __________________________________________________ скажите пожалуйста как можно короче записать обновление прогрессбара извлекаются 92 файла и после каждой строки приписываю Позиция := число может можно покороче и по проще я не знаю :( ......................... |
Как путь для установки игры извлечь из реестра (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\nhl2009.exe. Параметр Path)?
|
Цитата:
короче точно не порлучится, да и проще тоже. как вариант - забивать все имена распаковываемых файлов в стринглист и потом в цикле от нуля до количества итемов минус один стринглиста, извлекать файлы, беря из стринглиста названия по номеру текущего цикла. тогда распаковка любого количества файлов займет буквально меньше десятка строчек кода. но, добавление файлов в стринглист займет все остальное, в итоге проще не станет точно, да и короче не сильно. |
Цитата:
Код:
with LoadPrgsBar do |
El Sanchez,
спасибо так и сделал только не сами файлы картинок переименовал а сделал/делаю как дизайнер ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, доработал немного "проценты установки" (под свои нужды) :grin: а именно добавил при помощи этого примера (смена названия кнопки в панели задач) отображение процентов (там же на кнопке) Так же доработке подверглось создание процентного лейбла и функция отмены эксклюзивно для страницы установки вроде мелочи, но может кому пригодится сам считаю отображение процентов (помимо прогрессбара) на кнопке в панели задач очень удобным, если окно свёрнуто |
Цитата:
|
Привет всем!
Примеры смотрел, но это не то. Всё очень сложно. Код реализации xml большой и не понятный. В общем задача такая Имеется NetworkCfg.xml Код:
<?xml version="1.0" encoding="UTF-8"?> Код:
<?xml version="1.0" encoding="UTF-8"?> - Создаётся по умолчанию; То что в коде "но между XXX должно вводиться Название XXX; Например XXX" это должно работать в инсталляторе "вводиться в окошках" Вот код Код:
[Setup] |
|
Цитата:
остальное сам допили так NextButton.Caption := GetIniString('Messages', 'ButtonNext', '', ExpandConstant('{src}\Russian.ini')); где Russian.ini это переименованный Russian.isl (для теста я его гружу снаружи, рядом с инсталлом, хоя в конечном итоге ему дорога в temp) Messages это секция ини ButtonNext это назвние ключа (в файле ButtonNext= ) можно было бы и не из ини брать, а напрямую вписывать названия, но тогда будет много копипаста можешь смело подредактировать и укоротить ини для своего инсталла (хотя считаю, что эта кнопка чистой воды понт, тк смысл = 0, если ты уже выбрал язык перед запуском инсталла или он выбрался автоматически в зависимости от настроек ) |
Цитата:
1. Использовать уже готовый шаблон без значений NetworkCfg.xml (как в вашем посте, первый код) и методы объекта XMLDOM: 2. Использовать SaveStringToFile с длинной строкой. |
El Sanchez, что такое objXMLDoc? стандартная функция? или какой-то модуль?
|
Цитата:
|
Цитата:
Код:
[Setup] |
как сделать чтоб инсталл выводил окошко . идет подготовка к установке и отображения точного прогресса . в прогресс баре или в процентах . плиз хелп .
|
Mafia_forever, по моему должен по-умолчанию производится.
|
Неадекватный,
небольшой апдейт к твоему скрипту блокировка/разблокировка кнопки "далее" в зависимости от того есть ли текст во всех эдитах припиши всем эдитам OnChange := @EditsOnChange; *(или в дизайнере во вкладке события назначь) хотя не знаю являются ли твои настройки xml опициональными полный код: |
Цитата:
|
|
Всем привет!
Подскажите код, чтобы картинка (PNG) вылазила за пределы инсталлятора и не было фона? Пример |
Dark_Delphin,
думаю через ботву могу предложить такой вариант :) на основе ...\Inno Setup 5\Scripts\WindowEffects\Transperent Color.iss наглядный пример в архиве прозрачный цвет здесь $5а6a50 (фотошоп) $506a5a (инно) |
Johny777, Спасибо. Щас буду пробовать)
|
Цитата:
Код:
[Setup] |
Открыл для себя классное решение при использовании скина!
при закрытии окна на секунду появляется виндовсовские границы окна, что не есть красиво: поэтому в процедуре деинициализации использую Sleep и Hide код: при сокрытии формы (Hide) вин-границы окна не появляется, а окно плавно исчезает но если сразу после сокрытия выгружать библиотеку, то вин-границы всё же видно поэтому у нас есть ещё и Sleep (у меня настройка на 200 миллисекунд) в итоге библиотека выгружается так же некрасиво, но мы этого уже не видим ! :grin: Мелочь, но классная два наглядных примера на основе Авторана в архиве http://sendfile.su/613062 |
Цитата:
Код:
procedure CurStepChanged(CurStep: TSetupStep); |
Здравствуйте!
Мне интересен вопрос более высокой скорости распаковки.. Что-то читал за Фриарк, но не совсем понял. Как же ускорить процесс распаковки? Возможно ли использовать какие-либо библиотеки для ускорения процесса распаковки? Или какими методами достичь этого? Прошу расписать в деталях! Заранее благодарю всех, кто поможет. |
91892823, Используй IsDone там все подробно расписано... :)
|
91892823,
От себя замечу, что скорость распаковки зависит от степени сжатия (у медали две стороны) ты должен найти компромисс между нужным размером сжатого архива и нужной скоростью распаковки того самого архива если такой компромисс не найден, то тебе придётся смириться с медленной распаковкой или сравнительно большим размером архива В инно тоже при максимальном сжатии распаковка занимает хорошее время особо пока не тестировал, но если приписать ко всем строкам секции Files флаг solidbreak, то при незначительном увеличении размера конечного инстлла скорость извлечения вроде как выше ( это нужно проверить ) моё мнение: если игра влезает на двухслойный DVD и при этом никак не сжимается до ёмкости однослойного, то и не стоить особо напрягаться ужимая 7.5 гигов до 5 или 6 :) |
Привет всем!
Подскажите пожалуйста люди добрые, как сделать так чтобы не копировался файл если выбран другой? Код Код:
[Files] |
Цитата:
|
Цитата:
вот такой, завязанной на Checked : Код:
function CoonfCheck: Boolean; |
Подскажите пожалуйста как на png картинку наложить jpg в примерах botva ничего непонятно заранее спасибо :unsure:
|
Ivan_009,
а может всё же фотошопом наложишь с прозрачностью или другими эффектами и сохранишь в одно png изображение? и код короче будет и тебе проще |
Возможна такая реализация, чтобы типа к примеру, файлы-русификаторы копировался автоматом (после установки программ) в C:\Program Files\MyProgram или еще куда-то без каких-либо сторонних упаковщиков?
|
alert30,
не совсем понял хочешь копировать внешние файлы из папки, что лежит рядом с инсталлом, в директорию установки? если да, то используй флаг external если папка опциональна и не всегда есть, то дополнительно флаг "пропустить, если источника нет" - skipifsourcedoesntexist |
Johny777
Цитата:
Цитата:
|
Цитата:
Цитата:
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,пример,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Source: {src}\common\half-life 2 episode one\episodic\SAVE\*; DestDir: {app}\half-life 2 episode one\episodic\SAVE; Flags: external ignoreversion recursesubdirs createallsubdirs skipifsourcedoesntexist; ....снаружи\папка\папка\*(* - означает из этой папки всё) ; куда: в {app}(сам выбираешь в эдите пути)\папка\папка : Флаги : "внешний" "игнорировать версию" "обрабатывать каталоги в источнике" "создавать эти самые каталоги/подкаталоги в {app}" "пропускать (не выдавать ошибку) если источника, откуда копируем, нет" Примечание: при копировании из внешней папки отображается прогресбар. Короче всё как и при распаковке |
Johny777, а-а-а, я протупил. :)
DestDir отвечает куда копировать. Все понятно. |
Почему при использовании botva2p загрузка картинок проходит нормально но стоит нажать на кнопку отмена установки и выход так возникает звук ошибки....Вот код загрузки картинок.... :unsure:
|
Ivan_009, Проверь, есть у тебя такой момент?
Код:
procedure DeinitializeSetup; |
Gnom_aka_Lexander, Спасибо большое :up как раз этот момент я упустил...
|
Подскажите пожалуйста как сдесь прописать чтобы музыка воспроизводилась...BASS_Init(ExpandConstant('{tmp}\*')) //Поиск по маске... :o
|
Ivan_009,
может так: BASS_Init(ExpandConstant('{tmp}\*.mp3')) попробуй |
Ктонить может сделать так чтобы в коде на отображение комментария к компонентам, комментарий к первому компоненту различался на разных Windows? Ну грубо говоря нужно к одному описанию как-то присобачить правило MinVersion: 4.90.3000,4.0.1381; OnlyBelowVersion: 0,6.0.5999, а если у юзера другой Windows, чтобы отображалось другое описание.
Собстно код на описание компонентов: |
Raf-9600,
вот если бы кто-нибудь подкинул код на определение версии винды через код, то думаю можно б было так сделать Код:
procedure InitializeWizard(); |
Raf-9600,
|
Цитата:
|
Цитата:
Код:
Result:= (Version.Major = 6) and (Version.Minor = 0) and (Version.Build = 5999); Код:
Result:= (Version.Major = 6) and (Version.Minor = 1); |
Как сделать данную область прозрачной, чтобы был только текст... :search: Заранее спасибо за помощь...
|
Ivan_009,
либо используй юникодную версию инно либо создавай рядом с неименованным чекбоксом лейбл, прозрачный, и при нажатии на него нажимай на чекбокс потом пример дам в этом сообщении цвет надписи меняется при наведении на чекбокс? есть ещё вариант отбей привычку создавать контролы на картинках и делай их рядом или снизу и ещё где меня например твоя проблемка ни разу ещё не тревожила :) вот пример: сделал при наведении, но не уверен что работает о вот с "поставить/снять" галку вроде всё в порядке! |
Johny777, А это как убрать :o
|
Ivan_009, уменьши размеры чекбокса.
|
Ivan_009,
лейбл можно сделать безымянным так же можно убрать функцию при наведении вот используй обновлённый пример если несколько чкебоксов с неименными лейблами, то используй Tag := у лейблов |
Johny777, У меня вопрос а почему при выделении установить дополнительное ПО при отказе установки все равно оно устанавливается.... :o Код:
|
У тебя Ваня, насколько я вижу всё правильно
чекбокс точно не отмечен? меня только смущает, что на шаге на котором ПО ставится отмену нажать нельзя (если только ты не юзаешь всякие библиотеки или коды, чтоб можно было) вижу незнакомый мне IsDoneUnpack(CurStep) может его тоже нужно отменять в процедуре отмены, чтоб до него не доходило |
Johny777, IsDoneUnpack(CurStep) это от IsDone код.... :drug: Можно как нибудь переделать...
|
Цитата:
Код:
If Label_CheckBox.Checked and not CheckError then begin |
nik1967, Все равно устанавливается :( вот код
|
Ivan_009, тогда так
Код:
if (CurStep = ssPostInstall) and not ISDoneError then begin |
почему то линия стала кривой http://i39.fastpic.ru/big/2012/0620/...17e1ca91f0.jpg
полосы не видно |
insombia,
эдит пути перекрывается лейблом тут одно из 2-х 1. Этот лейбл родной. Ты просто своё сообщение вставил. Родной лейбл не поддерживает прозрачность и потому перекрывает. Поэтому уменьши его размер по вертикали так : Height := ScaleY(15); или так (я ж не знаю как ты координаты записываешь) SetBounds(ScaleX(0), ScaleY(0), ScaleX(256), ScaleY(15)) ..................слева ........сверху.........ширина.......высота 2. этот лейбл кастомный, те самопальный поэтому поставь ему в совойствах прозрачность True Transparent:= True; и отправь на задний план SendToBack; но лучше уменьши по вертикали его размер |
del
|
Здравствуйте, возможно ли использовать iswin 7 на деинсталляторе?
|
Цитата:
Цитата:
|
El Sanchez,
у меня вопрос касательно мутекса для деинсталятора (использую форму Autorun) раскидал так если запущен деинсталятор и я запускаю основной инсталл, то вылетает месседж бокс "Ок/Отмена" если запущен основной инсталл и потом запустить деинсталятор, то этого месседж бокса нет скажи пожалуйста как его добавить |
Цитата:
|
El Sanchez,
в твоём примере мутекс освобождается по завершении работы инсталла и форма деинсталятора создаётся в procedure CurUninstallStepChanged этот вариант отличный для него хватило бы и родного (уже делал так) Setup AppMutex=ggghhhgggfxgxdfgzdfg ... CreateMutex('ggghhhgggfxgxdfgzdfg'); у меня была задумка перенести деинсталятор в основной скрипт, но с этим я обломался, вот наработка не смог в конце Case Yes, если нет всех четырёх экзешников не дать появиться стандартным: 1 месседжбокс "Вы уверены, что хотите удалить "да/Нет"" 2 Создание UninstallProgressForm короче как в параметре VERYSILIENT для деинсталятора, хотя месседж бокс в самом конце с текстом "Приложение полностью удалено" не помешал бы поэтому, как изначально задумывалось деинсталятор это отдельно скомпилированная программа (отдельный скрипт), которая копируется вместе с остальными файлами во время установки в app\uninstall вот так в основном инсталле те подменяю созданный автоматом родной инсталл, на свой, который = форма , а родной запускается так (в конце процедуры Uninstall переменная типа Boolean, которая, если Тру даёт команду на запуск родного в очень тихом режиме, в конце деинициализации ) Цитата:
если нужно с файлам, то выложу :) с этим удалением (у этого кода) и отсутствует месседжбокс при конфликте мутекса, те код который у тебя в примере выполняется у меня в деинсталяторе, но без месседжбокса не дающего ему, деинсталятору, запуститься в основном скрипте я товй код пока не использую там стоит просто Setup AppMutex=ggghhhgggfxgxdfgzdfg ... CreateMutex('ggghhhgggfxgxdfgzdfg'); ================================================== нашёл procedure CreateAutoRun(); begin if CheckForMutexes('{#SetupSetting("AppMutex")}') then MsgBox('Мутекс', mbError, MB_ICONINFORMATION ); /// мутекса ещё нет и месседжбокса не будет hMutex := WINAPI_CreateMutex(0, False, '{#SetupSetting("AppMutex")}'); создаём мутекс if CheckForMutexes('{#SetupSetting("AppMutex")}') then MsgBox('Мутекс', mbError, MB_ICONINFORMATION ); /// появляется месседж бокс думаю мутекс так и надо создавать в InitializeWizard, а проверку делать в InitializeSetup буду разбирать! |
Некоторые инсталляторы (хоть из оригинального, и из диска) в середине установки может выполнять приложения, скрипты, исполняемые файлы и пр. Вот как бы это сделать? Выполнение приложения не после установки, а в середине установки; то что уже распаковалось в папку назначения.
|
alert30, почитать в хелпе / поискать в теме про CurStepChanged и CurPageChanged
|
alert30,
вот пример подобных действий вместо блокнота можно запустить архив с параметрами и извлечь куда надо (библиотеки для примера лежат, как файлы) можно ещё и к позиции прогрессбара прикрутить, но не думаю, что это правильно делал так со звуками (ну чтоб говорило 10%, 20%...), но дело в том, что позиция скажем на середине может быть там секунды две поэтому файлы начинали проигрываться несколько раз в пример в архиве (или коде ниже) действие после распаковки какого-то файла (а это намного лучше) если тебе нужно запустить архив ближе к началу установки или концу, то из справки мы узнаём о том, что файлы извлекаются в том порядке в котором записаны в секции, а удаляются в обратном те ты можешь прикинуть где лучше и после какого файла извлечь, чтоб достичь желаемого результата код: наглядный пример в архиве: |
Johny777, да, спасибо, уже нашел.
|
Johny777, держи, это писать в основном коде, код деинсталлятора не нужен.
|
Здравствуйте. Извините что не по теме, но как настроить FreeArc чтоб максимально сжималось? А то у меня ОЗУ 16 гб а используется только 2 гб.
|
LinkOFF, никак, только от без сжатия до ультры. Вроде говорят, как очень сжатый архиватор; это NanoZip.
|
Как называется окно выбора папки установки?
|
Цитата:
1. В справке поищи описание CurPageChanged, там есть названия страниц 2. в расширенном инно в Inno Form Designer видны все названия окон и элементов с "родителями" |
Как избавится от моргания картинок при переходе с одной странницы на другую :( пользуюсь b2p v0.3.9.2 от VoLT
|
R.i.m.s.k.y., мне нужно название не страница выбора папки установки, а окна, которое появляется при нажатии на кнопку "Обзор"
|
t16bz,
можно поинтересоваться зачем оно тебе? появляется форма с TFolderTreeView, эдитом и двумя кнопками в дизайнере это окно не редактируется не хочу сморозить чушь, но вроде оно вообще не редактируется (разве что в исходном коде самой инно), но его можно воссоздать двумя способами 1. - самый простой - использовать встроенную функцию function BrowseForFolder(const Prompt: String; var Directory: String; const NewFolderButton: Boolean): Boolean; наглядный пример жирным False отвечает за появление кнопки "создать папку" (False - нет кнопки, True - есть) 2. - рисовать свою форму и всё, что нужно на ней |
Как добавить чекбокс "Не создавать папку в меню пуск" :sorry: подскажите кто знает заранее спасибо...
|
Ivan_009,
[Setup] AllowNoIcons=yes или no или тебе кастомный нужен? |
Johny777, мне кастомный нужен :)
|
Цитата:
если через код значки создаёшь (не через секцию [Icons]), то переделаю |
Johny777, Респект и большое спасибо :clapping: :up
|
Всем привет! Вопрос следующий(искал, чесно, чет не нашел - если было - плиз, дайте линку на ответ) - мне в инсталяции надо сделать чекбокс "полная версия" - его я сделал, а как "объяснить" инсталу, что если он не нажат - некоторые файлы устанавливать не надо? Т.е. есть например 5 файлов - 1 2 3 4 5, если чекбокс нажат - устанавливаем все, если нет - устанавливаем 1, 3, 4 а 2 и 5 нет. Заранее спасибо :)
|
Вложений: 1
Помогите плз
Как это сделать прозрачным ? |
Парни, большая просьба.
Путь установки: "C:\Program Files\Games\Selena6000 В реестре это выглядит так: [HKEY_LOCAL_MACHINE\SOFTWARE\BaseGame\FileSystem] "DataPath"="C:\Program Files\Games\Selena6000" После установки программы нужно заменить "\Selena6000" на "\SELENA~1/>;" То есть поменять название конечной папки, прога иначе не работает. Выручайте! |
Yury_Prizrak,
вот такой пример есть: или на основе предыдущего, но попроще и как ты хотел detiedyatosla, никак родные лейблы не поддерживают прозрачность пересоздавай и используй прозрачность http://forum.oszone.net/post-1937887-305.html |
Цитата:
Johny777, я сделал все еще проще: [code][Files] Source: {#AppSrcPathAdmin}\1; DestDir: {app}; Flags: ignoreversion Source: {#AppSrcPathAdmin}\2; DestDir: {app}; Flags: ignoreversion; Check: ServiceCheck Source: {#AppSrcPathAdmin}\3; DestDir: {app}; Flags: ignoreversion Source: {#AppSrcPathAdmin}\4; DestDir: {app}; Flags: ignoreversion Source: {#AppSrcPathAdmin}\5; DestDir: {app}; Flags: ignoreversion; Check: ServiceCheck Код:
//Функция проверки чекбокса сервиса |
|
Johny777, а нельзя без прописи в реестр? Т.е. у меня
DefaultDirName={pf}\test\test - и он все равно как то выковыривает значение папки при новой инсталляции... |
Вроде не потеме: делаю репак игры. Обязательно доставать ключи реестра от игры? Нельзя добавить свои ключи?
|
Цитата:
Выручаю: Код:
Root: HKLM; SubKey: SOFTWARE\BaseGame\FileSystem; ValueType: string; ValueName: DataPath; ValueData: {code:GetShortName|{app}\Selena6000}; Flags: uninsdeletekeyifempty uninsdeletevalue deletevalue noerror Цитата:
Цитата:
Цитата:
|
Yury_Prizrak,
извини, но я не совсем врубаю чего тебе хочется Цитата:
ставь хоть куда Цитата:
вот так: CreateUninstallRegKey=no или так Uninstallable=no во втором случае деинсталятор не будет создаваться в примере который я тебе дал при первой установке создаётся ключ реестра (ну и файл копируется соответственно) по нему при повторном запуске находит путь инсталл это выражается в эдите пути на странице выбора директории установки, те там будет путь туда, куда ты в прошлый раз установил (это можно и убрать, но смысл?. Тогда ставишь по новому в другую папку, а ищет в предыдущей в выдаёт сообщение) и этот же путь считывается в процедуре инициализации, по этому пути ищет файл и выдаёт месседж бокс, если файл найден ты хотел Цитата:
Цитата:
Цитата:
Короче без ключа никак. Он всего один или скажи поподробнее (на основе примера) как тебе нужно :). Скорее всего я тебя недопонял там видно будет! |
Цитата:
ValueData: {code:GetShortName|{app}}/> |
Можно ли сделать так, чтобы если выбран компонент Game\Pottable то в меню Пуск вообще не создавались ни ярлыки ни папки?
|
|
Raf-9600
Johny777, будь проще Код:
[Setup] |
А можно сделать чтобы если выбран компонент "abc", то инсталлятор начинал использовать эти параметры?
Код:
DisableProgramGroupPage=yes |
Raf-9600, точно так же как в примерах выше
|
R.i.m.s.k.y., не получается =(
Код:
[Setup] |
Raf-9600,
страница пропускается так: Код:
function ShouldSkipPage(PageID: Integer): Boolean; |
Raf-9600,
Код:
[Setup] Порядок выполнения можно прочитать в справке по словам Installation order |
Цитата:
DisableProgramGroupPage=yes - обрабатывается по нажатию на кнопку далее перед страницей выбора папки, тоесть на странице компонентов. AlwaysShowGroupOnReadyPage=no обрабатывается по нажатию на кнопку далее перед страницей готовности, поскольку текст PeadiMemo строится в момент перехода на страницу готовности. Ну и нужно учитывать, что не все параметры в секции [Setup] позволяют управлять ими снаружи, многие являются настроечными на уровне компиляции и требуют однозначного ответа. тут уже только пробовать. |
Цитата:
К примеру с параметрами сжатия так не прокатит, а вот перезагрузкой снаружи в конце установки управлять вполне возможно |
Цитата:
|
Как обьеденить 2 прогресс бара ssInstall и ssPostInstall в IsDone :search: заранее спасибо за помощь...
|
Доброго времени суток, помогите с решением такой задачи:
Как сделать перемещения (Архив содержит уже готовый setup файл софта + в директории есть папка). Задача после установки софта инсталятор из своей корневой папки копировал в папку в которую установился софт. Или 2рое решения как научить инсталятор качать файл с фтп или веб сервера и записывать в директорию устанавливаемой программы. |
Raf-9600,
научился удалять строки из ReadyMemo, но он не удаляет строки типа "Тип установки" сделал просто если выбран компонент "Portable"(внутренне название port) и переходим на страницу готовности, то полностью очищаем мемо(!) и вносим свои строки, но без строки говорящей нам о создании папки в меню "Пуск" короче как ты хотел :) ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Цитата:
в сообщении El Sanchez -а |
Johny777, полная очистка не подходит, потому что кроме Portable, компонентов будет дофига (которые можно выбрать вместе с Portable). И хотелось бы чтобы юзер знал что он понавыберал.
Может быть, возможно, удалить только определённую строчку? Хотя это наверно уже из разряда извращений. |
Raf-9600,
смотри if (CurPageID = wpReady) and (IsComponentSelected('port')) если страница готовности и выбран компонент port те для всех остальных компонентов не буден никаких действий с мемо на странице готовности если не выбран компонент port дай мне список всех компонетов, которые выбираются с портабельной там просто нужно строки вписывать и всё. Цитата:
к тому же там строки по индексам ну их. С одного компонента галку снимешь и номера опустятся или наооборот |
Цитата:
Вот несколько начальных: Код:
[Components] |
Raf-9600,
вот тебе пример как вносить строки в мемо в зависимости от выбора (надеюсь не накосячил с проверкой "выбран ли хоть один из компонентов") разбирай И вообще ты уверен что есть люди которые читают страницу готовности ? |
Цитата:
Ну и если что, я не предполагал что для удаления той строчки придёться так извращаться :) Цитата:
|
Johny777, Raf-9600, дабы покончить с извращениями, направляю обоих в нужном направлении:
Код:
function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String; |
El Sanchez,
А что такое MemoTypeInfo и MemoDirInfo и откуда ты их взял? (часом не встроенные обозначения, которые используются только в WizardForm.ReadyMemo ?) WizardForm.TypesCombo.Text и WizardForm.DirEdit.Text например понимаю хорошо в отличии от тех, что в твоей функции |
El Sanchez, Спасибо!!! Я знал что должен быть элегантный способ! Теперь заодно уберу и ненужный MemoTypeInfo
|
El Sanchez, подскажи, пожалуйста
вроде же можно писать так Код:
[Setup] |
Цитата:
Цитата:
и CreateUninstallRegKey, понимающих булевы выражения. Делай, как Johny777 предложил - http://forum.oszone.net/post-1942430-347.html |
Подскажите пожалуйста как загрузить скин на юникод версии инно :search:
|
Вань
качни отсюда http://isskin.codejock.com/visualstyles.asp инсталл установи в директории установки будут 2 библиотеки 1. ISSkin.dll 2. ISSkinU.dll U от Unicode вот её и используй (переименуй в ISSkin.dll и замени) источник информации: http://krinkels.org/showthread.php?t=358&page=47 |
Johny777, меня интересует код для загрузки скина с обычным кодом для ANSI не пашет :( Все разобрался :gamer: спасибо :hi:
|
Цитата:
По поводу рееста - извините, сразу не разобрался. {#SetupSetting("AppID")} - вот эта хрень у меня так и не заработала - выдает внутренее исключение - указал сразу жестко. |
Кто о наверняка сталкивался...
Как в английской винде сделать так, чтобы инсталлятор на русском не крякозябрами показывал а нормальными буквами? Окромя такого вот решения как здесь описано http://www.wylek.ru/forum/31-153-5718-16-1341169828 есть что то получше? |
Вложений: 1
Привет. Кто подскажет как сделать рамочку как на http://forum.oszone.net/attachment.p...1&d=1341283641 скриншоте?
И второй вопрос. Есть два ключа реестра и один из них привязан к компоненту, как сделать чтоб если на компоненте галочка стоит то то второй не вносился а если снята то второй вносился а первый нет? |
Цитата:
http://forum.oszone.net/post-1942159-340.html http://forum.oszone.net/post-1942247-341.html Цитата:
используй дизайнер расширенной http://forum.oszone.net/thread-148707-30.html версии создай там панель и настрой BevelInner и BevelOuter а также вот тебе русская справка http://sendfile.su/570136 |
|
Цитата:
Что за BevelInner и BevelOuter, как мне их найти? |
Цитата:
|
Цитата:
|
Цитата:
|
Всем спасибо разобрался наконец. В итоге вот что мне нужно было
Код:
[Setup] |
L1nk3R,
|
Цитата:
В итоге оказалось, что это стиль границы листбокса задач :grin: ==================================================================================================== У меня возник вопрос при удалении игры деинсталятор ориентируется на экзешник есть экзешник там = есть и игра = есть активный чекбокс на форме если же в диспетчере задач висит процесс этого самого экзешника и при этом попытаться его удалить, то удаляется всё кроме него, а он остаётся те никаких ошибок и прочего подскажите пожалуйста как определить директорию расположения экзешника, процесс которого висит (определение процесса уже есть в шапке в 2-х вариантах) почему именно папку? дело в том, что речь идёт о процессе hl2.exe а он может быть и не от моей пиратки, а от другой или от steam версии и было бы некрасиво завершать процесс слева, удаляя справа также прошу не помогать мне если писанина подобного кода является трудоёмкой задачей, тк это "косметическая" правка и нацелена она на устранение хоть и надеюсь редкого, но возможного конфликта. |
Johny777, определение рабочей папки процесса:
|
El Sanchez, огромное спасибо за функцию
результат: if GetProcessWorkingDirectory('hl2.exe') = ExpandConstant('{app}\common\half-life 2') then Exec('taskkill', '/f /im hl2.exe', '', SW_Hide, ewWaitUntilTerminated, ErrorCode); работает отлично! :) надеюсь тебе было не в напряг ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,, можно пожалуйста ещё 2 мелких вопроса? 1. в чём разница между ErrorCode и ResultCode Если они оба сравниваются только с 0 , то я понимаю if (ErrorCode <> 0) then // если ошибка то... if (ResultCode <> 0) then // если успех то... а если ещё и с единицей, то не вижу разницы вот напимер форма которая создаётся в пределах создания формы Авторана в случае работающего сервиса Steam те если вписать в Exec(ExpandConstant('{reg:HKCU\Software\Valve\Steam,SteamPath|}') + '\Steam.exe', '-shutdown', '', SW_SHOW, ewWaitUntilTerminated, ResultCode); ErrorCode и сравнить if (ErrorCode = 0) then MyExit.Free else MsgBox( завршить процесс Да/Нет ... если я правильно понимаю (определение процесса взял отсюда http://forum.oszone.net/post-1800689-218.html) 2. достаточно ли завершить процесс так: Exec('taskkill', '/f /im hl2.exe', '', SW_Hide, ewWaitUntilTerminated, ErrorCode); или лучше воспользоваться библиотекой istask.dll ? |
El Sanchez,
А как переделать GetProcessWorkingDirectory, чтобы на юникоде работало? |
Цитата:
Цитата:
Цитата:
|
Привет. Насчёт taskkill (taskkill.exe) понятно - обращение идёт напрямую к исполняемому файлу. Кто подскажет, istask.dll к чему обращается? Передаёт ли библиотека обращение к исполняемому файлу или она работает внутренне непосредственно с инсталятором?
Меня интересует универсальность, если например taskkill.exe будет специально удалён из системы то библиотека отработает завершение процесса или нет? |
L1nk3R, я таскаю в инсталлере taskkill от ХР, распаковываю его в {tmp} и запускаю для убийства процесса
|
Привет.
Цитата:
Цитата:
Вообще-то меня больше интересует библиотека. По какому принципу она работает? Если она всё таки обращается к исполняемому файлу, то тогда смысла в этой библиотеке нет. |
Привет! Кто подскажет, как с помощью Inno вывести системные файлы из защиты виндофс а потом обратно защитить? Если такое возможно.
|
Цитата:
|
Как сделать деинсталлятор в стиле инсталлятора подскажите пожалуйста :search:
|
Ваня , можно подробно что именно ты хочешь?
вот есть такой пример в сообщении Winst@n http://krinkels.org/showthread.php?t=7&page=4 такой (у меня в скрипте стоит) с выбором компонентов и скином http://forum.oszone.net/post-1939326-314.html |
Johny777, типа так вот :)
|
Как правильно создать ярлык на папку? Сейчас использую
Код:
|
Johny777, Точно, сразу не сообразил так сделать, удалил taskkill.exe. Проверил, действительно без taskkill.exe всё работает и убивает процессы без исполняемого файла, а значит библиотека не обращается к taskkill.exe и не передаёт какие либо команды для завершения процесса, что имеет большой плюс. Нет двойного обращения.
El Sanchez, Спасибо! Этот ответ вполне устраивает. Т.е на сколько я понял istask.dll обращается напрямую к kernel32.dll ExitProcess. Если библиотека используется примерно так "istask.dll - > kernel32.dll, а не так istask.dll - > kernel32.dll - > taskkill.exe, то это уже совсем другое дело. Ещё раз Спасибо! А что насчёт http://forum.oszone.net/post-1946494-388.html этого вопроса, есть какие нибудь варианты? |
Ваня
код: скрин: архив со всем необходимым: http://rghost.ru/private/39052497/4e...6d5eb1311ede98 =============================================================== FMA, тебе не хватет флага припиши ... ; Flags: foldershortcut у тебя стоит {commondesktop} ты уверен, что на общем рабочем столе ? {userdesktop} - текущего пользователя а также вот тебе русская справка http://sendfile.su/570136 |
Source: BmpFiles\fon.bmp; DestDir: {app}; Attribs: hidden system;
Source: BmpFiles\fonAC.bmp; DestDir: {app}; Attribs: hidden system; Johny777, а как загрузить 2 картинки на InitializeUninstallProgressForm(); пробую так неполучается :( |
Как сделать двойной прогресс бар тоесть вот такой через IsDone :sorry:
|
Ваня,
( Кстати! Оказывается очень удобно использовать для некоторых картинок секцию Setup :) , тк нет лишней писанины с добавлением картинок в секцию Files и их перемещением в темп. как чуть ниже ) поэтому так (приписал немного комментариев) и, Вань, зачем тебе 2 картинки? склей в фотошопе в одну (Создать - новый фон (настранваешь цвет фона и указываешь размер) - перетаскиваешь обе картинки на этот самый фон - растягиваешь и двигаешь до получения желаемого результата - нажимаешь инструмент "Перемещение(V)" и при необходимости инструментом "Рамка (С)" кадрируешь (вырезаешь нужный участок)- сохраняешь в 32-битном(!).bmp - файле) юзаю версию 5.1 (русскую) Цитата:
исдан не знаю :( ------------------------------------------------------------------------------------Update понял как добавлять картинки через Setup пример в ...\Inno Setup 5\Examples\Example_BitmapResource.iss прояснил ситуацию! сократил код улучшенный результат: изменённые строки выделил жирным (3 строки) |
1. Переделал "проценты установки" под CallbackAddr
теперь библиотека "InnoCallback.dll" не нужна (нужна только расширенная версия Inno) было так: стало так: Примечание: кто не хочет отображения десятой доли процента после запятой удалите функцию function NumToStr(Float: Extended): String; begin ... end; и замените в процедуре procedure PercentsProc; NumToStr на IntToStr =========================================================================================== 2. может кто пожалуйста избавить это код от InnoCallBack.dll (при перетаскивании основного окно перетаскивается форма) речь идёт о функции: function WndProcCallBack(P:TCallbackProc;ParamCount:integer ):LongWord; external 'wrapcallback@files:innocallback.dll stdcall'; ================================================================================= 3. и последнее: Скажите пожалуйста (если можно попроще) когда нужно (лучше?) использовать указатель nil в Inno и на что он влияет? (из интереса присвоил всем элементам (ричэдитам, панелям, чекбосам) этот указатель и теперь инсталл кушает на 400 кб оперативки меньше :)) |
Цитата:
Цитата:
|
Как в данном модуле удалить все ненужное и оставить только те функции которые нужны данной кнопке.... :unsure: заранее спасибо...
|
Цитата:
всё в одном коде архив http://rghost.ru/private/39092559/fc...d1fb7dd0472c5b код: |
Может кто еще пользуется botva2.dll
Хочу разрисовать прогрессбар при джеинсталляции Но что то не так видимо делаю. Затык на функции CallWindowProc(PBOldProcUn,h,Msg,wParam,lParam); Вызывает ошибку вызова процедуры Вот кусок кода, может подскажете, в чем ошибка. Код:
function CallBackProc(P:TPBProc;ParamCount:integer):LongWord; external 'wrapcallbackaddr@files:CallbackCtrl.dll stdcall'; |
Цитата:
Наподобе этого. У меня так например. |
Цитата:
Цитата:
Да не, еще скрипт ботвы надо было править оказывается. Разьяснили с этим вопросом уже работает. |
Цитата:
[LangOptions] - такое решение пригодно только в том случае, еслои система хоть каким-нибудь боком знает русский язык - для русских либо позже русифицированных систем. В общем, присоединюсь к вопросу. |
Цитата:
1. В апплете Regional and Language Options жмакнуть Advanced и выставить для Language for non-Unicode programs значение Russian. Перезагруз. 2. Если в системе есть какие-нибудь кириллические шрифты (нет - подгрузить свой), то использовать один из них, например: Код:
[LangOptions] |
Ребята подскажите.Проблема такая:нужно папку при установке инсталятора поместить в мои документы текущей системы и текущего пользователя,но так как системной переменной мои документы нет,то перепробовал несколько способов
1.бат файл,но сложно для меня 2.через секцию файлы папка ubisoft или создаеться без файлов внутри или создается с названием игры, а потом сама папка,если убрать флаг createallsubdirs то вообще ошибки или другие флаги применить, то ошибка на ошибке. 3.пробовал сжать нужную папку в SFX архив и запустить через секцию RUN ,но нет переменной мои документы,ну есть %MyDocuments% для ХP и %USERPROFILE%/Documents для 7,но я же не знаю на какой системе будет установлена игра,тогда придеться создавать скрипт который определяет какая система и в зависимости от этого запускает нужный SFX. 4.Способ которым сейчас пользуюсь, помог ,но все равно некрасивый и должен лежать рядом с Setup.exe Может как то можно все таки через секцию файлы, средствами инно,без танцев и независимо какая система и текущий пользователь,поместить папку в мои документы,при этом с файлами внутри и чтобы не создавалась сначала папка названия игры.То есть ,не Driver San Francisco\ubisoft ,а просто ubisoft.Сейчас пользуюсь способом 4,подскажите новичку. Sanchez здравствуй,опять маленький вопросик, пример№1 который мне помог Серега и пример №2 от тебя скрипт для приведения размера устанавливаемого файла из байтовой формы в удобочитаемую,в чем отличие,поподробнее,у Сереги считывает размер файла после его копирования (фактически всегда пишется размер предыдущего файла) и +большие файлы более 3гб корректно,а твой пример?Расскажи плюсы и недостатки,если не сложно. :oszone: |
Цитата:
Хочешь скопировать папку "Ubisoft" с файлами в ней из "рядом с интсаллятором" в, например, C:\Users\Вася\Documents ? Примеръ: |
Джони я пробовал же,создается сначала в моих документах папка с названием самого приложения(игры),а потом внутри Ubisoft .если убрать флаги recursesubdirs createallsubdirs,то ошибки,то есть мне надо скопировать папку в мои документы текущего пользователя,без создания папки названия игры.И еще вопрос константа {userdocs} в XP сработает,как я понял это переменная самого инно,и ему не важно какая система?
|
Как сделать, чтобы компонет не становилсся жирным, когда его отмечаешь?
http://i43.fastpic.ru/big/2012/0712/...7de5319ba9.png Код:
procedure InitializeWizard; |
t16bz,
WizardForm.ComponentsList.Flat := True; |
Johny777, нет, это не помогло :(
|
t16bz,
Код:
WizardForm.ComponentsList.Font.Name := 'MS Sans Serif'; |
Джони так поможешь ?
|
FX-DENIS,
в общем то уже! Цитата:
а флаг "создавать подкаталоги" по незамысловатой причине работает только с флагом "обрабатывать подкаталоги" но "обрабатывать подкаталоги" может работать и в одиночку (я ж не знаю есть ли в паке из которой ты копируешь папки с файлами) Цитата:
давай ты выложи полные пути-примеры откуда, куда, что и из каких папок копируется, потому что я не совсем понимаю, что именно тебя не устраивает ............................................................................... кажись понял ты хочешь из рядом лежащей папки "Ubisoft" скопировать файлы в Мои Документы\папка названия игры\Ubisoft ну припиши ... DestDir: {userdocs}\Driver San Francisco\Ubisoft; Flags: external skipifsourcedoesntexist |
Johny777, FX-DENIS, мнээээ, а в шапке смотрели стандартные папки Windows ?
Код:
; Данный скрипт позволяет получить путь к стандартным папкам Windows |
Ребят, доброе время суток! Столкнулся с такой проблемой, как при запуске инсталлятора, произвести проверку реестра на значение ключа, и вывести его в MsgBox. Чтобы призапуске появлялось сообщение: Ваша версия программы: "тут значение прочитанное из реестра"??? mbInformation, mbOK и если такое возможно, то эту версию вывести в label призапуске инсталлятора на странице wpWelcome, чтобы label сам считывал версию из реестра?
|
Цитата:
Джони благодарствую. |
Цитата:
тот пример очень классный, тк содержит большое количество констант путей, которых нет в инно прочитай сообщение автора http://forum.oszone.net/post-1218002-103.html Цитата:
наглядный, более практичный здесь http://krinkels.org/showpost.php?p=12005&postcount=532 только смыл? зачем тебе китайские палочки, если есть вилка (читай константа {userdocs}) |
Цитата:
|
Привет. Может подскажет кто, как добавить программу в исключение браундера через инно?
Цитата:
|
L1nk3R,
вот тебе код для "добавления / удаления программ из правил брандмауэра Windows" кто автор не знаю, но спасибо ему! |
Цитата:
Для этого нужно было взять шрифт и отредактировать его так,чтобы на англ. винде кодировка нормально читалась, т.е. для каждой русс.буквы добавить кодировку. Делается это в редакторе шрифтов. Ну и в скрипте использовать уже этот шрифт. Я брал за основу Ариал и игрался с ним. В результате все работает как надо |
Что нужно сделать, чтобы в TFolderTreeView была открыта определенная директория?
|
|
Johny777, а как еще можно сделать чтоб остальные директории сворачивались?
|
Здраствуйте. Скажите пожалуйста, как можно убрать диалог создания ярлыка при установке ?
|
Вложений: 1
|
AndreY33_80, скрипт под спойлер, а по поводу убрания ярлыка на Рабочем столе; удалите:
Цитата:
|
Прошу прощения, но я не совсем это имел в виду. Мне как раз нужно, чтобы ярлык на рабочем столе создавался. Но хотелось бы, чтобы при установке программы не нужно было бы ставить галочку наспротив надписи " Создать значёк на рабочем столе "
|
AndreY33_80, автоматом, да, без выбора?
|
Совершенно верно
|
AndreY33_80,
из твоего кода видно что строке в секции значков и так не присвоена задача, те по любому значок создастся вне зависимости от того поставишь ты там (напротив надписи " Создать значёк на рабочем столе ") галку или нет секцию задач ([Tasks]) или задачу сотри t16bz, не совсем понимаю что именно ты хочешь свернуть у тебя развёрнуто то, что в строке жирным шрифтом прописано в качестве примера |
Если стереть секцию задач или сами задачи в ней, то при компиляции выскакивает ошибка.
У меня сейчас при запуске Setup появляется только вот это окно, в котором уже стоит галочука, остаётся только нажать далее... Нельзя ли как нибудь иммитировать нажатие этой кнопки ? |
Цитата:
у тебя страница приветствия скрывается так: проще будет через встроенную функцию ShouldSkipPage а ещё проще через дерективу в секции [Setup] DisableWelcomePage=yes Цитата:
вот тебе полностью тихая установка :) (ты ведь её хотел?) не забудь раскомментировать строки в секции файлов (удали толчки с запятыми перед каждой строкой) И убери пожалуйста свой код выше в [more][code] твой код [/code][/more] ,чтобы было компактнее |
В принципе всё срабатывает, единственное что, ярлык на рабочем столе не создаётся и при попытке деинсталяции пишет "Внутренняя ошибка: Cannot find utCompiledCode record for this version of the uninstalller"
|
Цитата:
Код:
;ярлык для пользователя, запустившего инсталлятор Цитата:
|
С ярлыком разобрался, работает. По деинсталятору получается только как вы сказали... Возможно, не надо добавлять лог-файл деинсталлятора unins000.dat в мастер Inno Setup ?
|
С деинсталятором тоже разобрался, достаточно не брать unins000.dat и unins000.exe.
Но теперь другая проблемма. Программа после установки только на английском языке. |
Всётаки въехал как все надо делать :yahoo:
я взял правда другую программу - CDBurnerXP после долгих поисков у меняя получился следующий скрипт: |
Цитата:
|
t16bz,
держи: при изменении эдита папки меню пуск меняется директория TFolderTreeView в и наоборот Это глючный пример. Не использовать! При редактировании эдита обновляется TStartMenuFolderTreeView и наоборот. Получается порочный круг жутких багов (пробовал исправить по всякому в пределах своих ничтожных знаний и возможностей) Кто допилит, тот будет удостоен похвалы, всеобщего признания и звания героя труда! :) ) |
Johny777, все равно не выбранные директории не сворачиваются
|
|
|
Как сделать так чтобы при нажатии на кнопку музыки выезжала такая форма :search: заранее спасибо.
|
Вот те Ваня:
http://forum.oszone.net/post-1917570-2069.html http://forum.oszone.net/post-1917597-2071.html http://forum.oszone.net/post-1917798-2074.html какая ссылка на тебя смотрит ту и открывай! :) |
Скажите, а возможно сделать так, чтобы при нажатии ярлыка деинсталяция, само удаление программы проходило без вмешательства пользователя ? через inno setup можно так переделать uninstall.exe ?
|
AndreY33_80, типо чтоб не было "Вы хотите удалить..."?
|
AndreY33_80,
В параметрах ярлыка можно указать ключ тихого удаления: Код:
[Setup] |
:) :up Спасибо
|
если делать так :
Name: "{group}\{cm:UninstallProgram,CDBurnerXP}"; Filename: "{uninstallexe}" Parameters: /SILENT; то выдаётся ошибка : mismatched or misplaced quotes on parameter "Filename" |
|
А окно при деинсталяции как можно скрыть ?
|
Код:
[Icons] |
Возможно ли как-то изменить окно выбора папки установки? Если да, поделитесь, пожалуйста, примером.
|
[q=El Sanchez]определение рабочей папки процесса:
« скрыть Код: Код:
#ifdef UNICODE ArchiCAD.exe 32-битный видится, 64-битный такой же процесс. нет. Может кто поправить? |
Цитата:
|
Gnom_aka_Lexander,
можно так (спасибо El Sanchez-у) тихое удаление (с месседжбоксом "Да Нет" вначале и в конце (удаление завершено Ок)): полностью тихое удаление: ======================================================================= Цитата:
отличия: у меня по определённым причинам новая папка имеет название New Folder здесь вернул константу изменил координаты расположения окна (у меня окно инсталла больше стандартного и поэтому координаты другие) |
Привет.
Может кто подскажет,возможно ли как то сделать чтоб при нажатии например на кнопку Button появлялась форма? На примере этого поста http://forum.oszone.net/post-1954373-453.html, только не выкатывалась а появлялась, ну в общем почти как контекстное меню. Код:
[Setup] |
Где посмотреть? Тихое удаление не нужно. Причём тут тихое удаление?
Надо чтоб например рядом с кнопкой [Обзор] была такая кнопочка со стрелочкой при нажатии на которую выпадала форма как контекстное меню. Только чтоб находилась рядом с кнопкой (под кнопкой), чтоб нельзя было двигать и не было крестика закрыть. Кликнул - Открылась, кликнул ещё раз или на основную форму или даже на рабочем столе, то она сама закрылась. Почти так Код:
[Setup] Даже не знаю как объяснить. |
L1nk3R, ну ты чувак спросил
Цитата:
Цитата:
теперь я начал понимать... ты ведь типа такого хочешь (контекстное меню = PopUp Menu выпадает из кнопки)? пример: и убери пожалуйста оба своих кода дополнительно под спойлер в [more] твой код [/more] |
Цитата:
Цитата:
|
El Sanchez,
может есть более быстрый способ определения размера папки с выводом Integer? http://forum.oszone.net/post-1953820-451.html если нет, то не проблема могу просто проверить само наличие папки :) |
Вложений: 1
IsProc2.dll поскольку проект IsProc был заброшен, по всей видимости, (я чего-то даже ссылку сейчас не нашел...) и давно не соответствует реалиям жизни (кривая работа в Windows Vista и выше), набросал аналог, с учетом именно этих систем. Работа в системе ниже ХР не гарантируется.
Точнее, могу гарантировать ошибки на системе ниже ХР :) Итак, встречаем: Библиотека, выводящая список процессов в указанной папке, с возможностью их закрытия. Скачать Тестим, отписываемся. С закрытием процессов - аккуратнее, внимательнее указываем папку процесса. потом встрою защиту от закрытия процессов из системных папок. А я пока, в деревню на грядки поехал :) |
Цитата:
Цитата:
P.S. Из-за QueryFullProcessImageName. Эта функция от Vista и выше. |
El Sanchez, Юникод? писал под анси, там явный вызов именно ансишных функций.
|
Цитата:
|
El Sanchez,Уже понял, обойдусь без нее. Как всегда придется через задницу делать.. Но возможности задницы, как известно, практически неограниченны :D
|
Привет.
Цитата:
Johny777, а там препроцессор обязателен или как то можно обойтись без него? |
Добрый вечер! После копирование архивов *.arc и его распаковки, я хочу удалить. После удаления, удаляется только архив *.arc, а вот распакованный архив нет. Как сделать так, чтобы вместе удалились и где дописывать этот код, чтобы удалить вместе с файлом, который распаковался из *.arc? Вот скрипт.
|
может так
[UninstallDelete] Type: filesandordirs; Name: {app} // трет всю папку в которую уcтановил |
Johny777, нет, файлы, которые уже распаковались из этого архива *.arc; вот мне надо удалить распакованные файлы. Архив *.arc удаляется, а вот распакованные файлы остаются.
|
alert30,
поправил предыдущий пост |
Johny777, еще, есть скрипт, который после установки и распаковки удаляет архив *.arc?
|
alert30,
ты про это Type: files; Name: {app}\FileName.arc тип: файлы; имя(файла): {app}\FileName.arc ... ? |
Johny777, спасибо, сам доделал, кому нужен - вот код, чтобы удалить файл или архив после установки и распаковки:
Код:
procedure CurPageChanged(CurPageID: Integer); |
alert30,
старайся как можно меньше вешать в переключение страниц CurPageChanged, тк они могут переключаться с тормозами, что не есть хрошо и красиво в данном случае лучше используй этапы установки ssPostInstall(после установки) или ssDone(после нажатия на кнопку завершить на финишной странице) всё что можно реализуй в procedure InitializeWizard(); пример: что такое ImgApplyChanges(WizardForm.Handle); ? |
Johny777, у меня другая проблема ISArcExtract:
Так вот написал так: Код:
if not ISArcExtract ( 0, 0, ExpandConstant('{userdesktop}\RK14\RK\rk.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break; |
alert30,
положи архив рядом с экзешником юзай константу {src} (внешний) кажись так if not ISArcExtract ( 0, 0, ExpandConstant('{src}\rk.arc'), ExpandConstant('{src}'), '', false, '', '', ExpandConstant('{src}'), notPCFonFLY {PCFonFLY}) then break; ====================================================== у меня возник вопрос наткнулся на этап установки ssPreInstall но кажется он не работает в справке о нём ни слова (значит он одно из расширений) выделил жирным в коде: ================================================== а также улучшил код "фоновый рисунок в зависимости от разрешения" под свои нужнды (блин, мои нужды - это один единственный инсталл) было так: недоработка кода выше это то что проверяется только ширина монитора те при ширине на 16 9 = 1280 на 720 или 800(16 10) и при ширине 1280 на 1024(4 3) будет одна и та же картинка стало так: скорость обработки (4 if) высокая и точность пользуйтесь кто хочет (выдрал у себя из кода)! finish.bmp это если разрешение выше так называемого фулл хд сделан учётом далёкого будущего разрешение картинки 3840 на 2160 |
Люди, может кто-то сталкивался. Проблема очень неприятная, для меня, во всяком случае. Инсталл, который я пишу использует InnoSetupForms, поля в них инициализируются 2 вариантами: если программа не была установлена - то по умолчанию, если была - то с конфигурационного файла. По завершении установки конфигурационный файл перезаписывается значениями из полей форм.
Теперь вопрос: как сделать возможность проверки на наличие программы и, если она есть, скрыть дополнительные формы(но при этом чтобы конфиг файл не пострадал при перезаписи) |
И еще, как выщемить название страницы(или ее ID) на которой предлагается создать ярлыки для текущего и для всех пользователей. Заранее спасибо :)
|
Как решить данную задачу открываю я скрипт а там пустое окно
|
если поставить курсор в поле где должен быть скрипт и нажать CTRL+A (англ) что-нибудь изменится?
|
R.i.m.s.k.y., нет
|
Ivan_009, попробуйте использовать сторонние программы генераторы-компиляторы Inno.
|
alert30, проблема решилась путем перезагрузки компа :)
|
Ivan_009, темп почистить не забудь
в дополнение предположу что своп выключен |
Вышла расширенная версия Inno setup 5.5.1
внизу страницы http://restools.hanzify.org/article.asp?id=89 |
Всем привет!
Вопрос такой: Как подключить к основному скрипту, дополнительные скрипты с кодом. Пробовал как в секциях [Files] и [Registry] добавить Код:
[Files] ошибка возникает из за того, что в дополнительном скрипте используются процедуры, которые уже используются в основном. В некоторых заготовках инсталов смотрел там в секции [code] прописывается так: [code] Код:
Заранее спасибо! |
Цитата:
Код:
#include "Program Files\Files.iss" |
Это всё понятно.
Я же ясно написал, что с подключением в секциях [Files] и [Registry] проблем не возникает, а проблема при подключении скриптов с кодом в секции [code] Вот как подключить к основному скрипту этот Что и как прописать в секцию [code] основного скрипта, что бы ино этот файл подхватил при компиляции инстала. этот скрипт лежит в папке SYSTEST\SystemTest.iss |
TEKTON, по аналогии с примером из поста #501 - #include не обязан быть в секциях, будь то [code] или [files] ;[
|
Ок.
Сейчас прописал в самом верху скрипта до секции [Setup] Код:
#include "SYSTEST\SystemTest.iss" Файл: C:\Documents and Settings\Desktop\INSTAL\SYSTEST\SystemTest.iss Строка 76: Column 37: [ISPP] Undeclared identifier: "Processor". Не хватает ему чего то. Где его это взять и как подключить ? |
Цитата:
Код:
#define System "Система" |
Смотрел я уже ту шляпу.
Парень бился бился с ошибками, потом ему втюхали какую то get_hw_caps.dll. На этом всё и кончилось... :( Можете нормальный пример сделать из двух скриптов? Чтоб один подключался ко второму. p.s. Я тоже рою нет, но пока чёткого и конкретного ответа не нашёл. |
Цитата:
|
Цитата:
Код:
#define System "Система" |
Цитата:
Код:
var Код:
var |
всем привет , скажите как мне сделать чтобы страница создания ярлыков появилась после установки игры или программы ???????????77
|
Yury_Prizrak,
мне кажется тебе не хватает одной единственной логической переменной сделай так [code] var Installed: boolean; function InitializeSetup(): Boolean; begin Installed := False; проверяем есть ли ключ (код 2 страницы назад) если есть Installed := True; и пошло по всему коду end; procedure InitializeWizard; begin if not Installed then создаём страницы. Короче всё, что должно делаться если не установлена end; procedure CurPageChanged(CurPageID: Integer); begin if not Installed then тоже самое но для того что ты делаешь в переключении страниц end; итд юзай else если надо |
Mafioza, вроде в оригинальном компиляторе Inno Setup есть чекбокс "Создать ярлык на Рабочем столе"?
|
alert30 да я зная , я хочу чтобы страница ярлыков была после страницы распаковки фалов , до страницы завершения установки , ка у InstallShield
|
Mafioza,
из справки мы узнаём о том что значки создаются до того как мы можем настроить их создание (в конце распаковки файлов) Поэтому создадим ярлыки по завершении работы инсталла (после нажатия на кнопку "завершить" на финишной странице) - этап ssDone результат: также нельзя забывать удалять их вручную (кажись потому что их нет в логе деинсталятора), те указывать что их надо удалить (секция UninstallDelete) |
ребят подскажите пожалуйста как текстурировать кнопку "отмена" на странице установки в ISDone0.6
ну или пример посоветуйте |
|
Johny777 спасибо
|
Johny777,
при запуске инстала вот такая беда |
вот полный скрипт http://narod.ru/disk/58549635001.0ec...D1%82.rar.html
|
я просто чистый скрипт дал не прописывал то что ты мне страницу назад писал :) нужно это прописать и будет ошибка
|
wertulll,
исправил, но перписывать код не осилил очень много путаницы |
Цитата:
а за кнопку спасиб большой !!!малёха цифры подправил и вобще чётко встала |
Цитата:
гляну ещё раз спокойно проверяй форум время от времени :) (особенно завтра) ======================================== скажите пожалуйста в чём разница между этой функцией Код:
function NumToStr(Float: Extended): String; |
Цитата:
|
Цитата:
|
wertulll,
переписал всё кроме исдана (его не знаю) заменил проверку свободного места на свою, (тебе понадобится расширенная версия инно, если пользуешься стандартной) и у тебя на первой странице картинка от Сталкера и дальше полосой сверху от другой игры |
Ребят, помогите в создании инсталятора для ApexDC++ s16.4. Что нужно уметь делать инсталятору, если так можно выразиться:
Поможет кто-нибудь в реализации задумки? |
Batistas,
касательно .xml в сообщении El Sanchez-а http://forum.oszone.net/post-1932532-253.html Юра! Что может быть проще чем проверять значение одой логической переменной? Хочешь пример? У меня при нажатии на кнопку создаётся форма с чек боксами задач (8 чек боксов) (форма не модальная. После её показа не идёт команда Free) при нажатии на кнопку на форме, при нажатии на кнопку основного окна с которой эта форма создалась, при переходе на страницу назад форма прячется пишется значение тру в переменную "форма спрятана" при наведении на картинку на странице с кнопкой через которую вызывается форма и рядом лежащий на всю оставшуюся страницу прозрачный лейбл, за который можно хвататься курсором мыши, форма разрушается пишется false в другую переменную "форма существует" при новом вызове формы идёт "Есои форма существует - форма.Free. если форма не существует, то создать-создать, в конце форма видимая тру, форма существует тру" логическая переменная кушает мало(булев переменная = 1 бит), а форма значительно больше. Если её не выгружая вызвать 10 раз, то ничего хорошего мне неприятно будет своим нсталлом глупо съедать ресурсы чужого компа и своего Теперь хоть 1000 раз нажми и ещё форма, если не закрыта разрушается в начале установки когда формы нет угадай как реализована передача команд "установить директ икс", "уст. визуал" и пр в конце установки? (чекбоксы слетают вместе с формой. Поэтому никаких "если отмечен, то...") :) Цитата:
И всёж советую тебе выбирать самое простое решение думаю, то что я тебе посоветовал и есть простое решение писать альтернативный километр кода если установлена или просто не обрабатывать существующий код(настройку из твоего сообщения) если не установлена что лучше? |
Johny777, там нет того, что мне нужно =(
|
Цитата:
Код:
[Setup] Цитата:
Цитата:
|
El Sanchez, c кнопкой и ссылкой сам разобрался. Скрипт выглядит теперь примерно так:
А вот остальное нет смысла там даже и искать, ведь у флая есть конфигуратор. Вот тут порылся, так и не понял, как абсолютный путь автоматом прописать - http://forum.oszone.net/post-1798658-175.html , хотя уже близко. А за ответ спасибо. |
Привет всем! Никто не знает из-за чего может возникнуть такая ошибка?
Ошибка возникает после распаковки архивов устанавливаемой игры разбитой на два двд. Ошибка не влияет на устанавлимую игру, но из-за неё потом не работает деинсталлятор. Кто знает как это исправить? :dont-know |
Добрый день!
Помогите, пожалуйста. Ситуация следующая: перед установкой делается бекап старых файлов и, если установка была прервана, нужно чтобы файлы из бекапа переносились на старое место. У меня только частично получилось это сделать. Папка с вложенными папками возвращается обратно и не удаляется. А папка с файлами переносится, но затем удаляется. Можно ли это как-то сделать, не отказываясь от механизма отката. |
Leka_651,
Уважаемая! предоставьте для начала код всего того что Вы описали для наглядности код в [more][code] здесь весь код [/code][/more] sergey3695, рискну предположить, что иконка - внешний файл и лежит на втором диске если да, то попробуй записать строку секции файлов отвечающей за копирование иконки первой в секции и положить файл на диск рядом с экзешником инсталла El Sanchez, а в принципе не нужно и без обновления рабочего стола по тестам работает на ура сам попробуй :) (убрал все ограничения. Не проверяется наличие экзешников и ключа реестра) нововведение - кнопка "параметры" http://sendfile.su/642570 |
Цитата:
1. Использовать флаг external в секции [Files] для нужных файлов, ну и положить эти файлы на 2 диск (можно в папку). 2. Запаковать нужные файлы в архив и распаковать куда надо в процессе установки. (Ну и естественно удалить их из секции [Files]. Одно но, у этих файлов не будет атрибутов скрытый, системный). |
Цитата:
http://forum.oszone.net/post-1721753-2460.html |
Johny777, ты про
Код:
SetFileAttributes(PChar(ExpandConstant('{app}\desktop.ini')), FILE_ATTRIBUTE_HIDDEN or FILE_ATTRIBUTE_SYSTEM); //скрываем ини-файл и ставим атрибут системный |
nik1967,
ну тогда вот ещё пример в отличии от верхнего кода кто автор этого не знаю "Как проверить, стоит ли атрибут 'Только для чтения' у текстового файла и, если стоит, то убрать его" Вот два решения: теперь тема атрибутов "скрытый, системный" раскрыта полностью! :) |
Johny777, ещё раз спасибо! Я как Плюшкин, всё тяну себе - авось когда и пригодиться :).
|
Привожу кусок кода - процедуру CancelButtonClick. Весь код для сборки сетапов занимает несколько файлов. Если нужно могу выложить и их.
папка Модули содержит вложенные папки и остается, а папка Jinnee содержит только файлы и в итоге удаляется. |
Цитата:
если хочешь дам тебе папку всех кодов какие есть только в ней порядок сначала навести нужно Leka_651, для процедуры отмены попробуй так |
Johny777,
попробовала. все осталось по старому. получается, что стандартный механизм отката запускается после того как я все вытащила из бекапа. и удаляет, но только частично, не трогая папку Модули. Я не понимаю почему так :dont-know а можно сделать так, чтобы мои действия выполнялись после отката? |
Leka_651,
ok постараюсь исправить :) я так понял "резервно копировать" нужно 2 папки те сначала резервируем идёт установка пользователь передумал возвращаем папки на место |
Johny777,
да, почти все правилно. Нужно бекапить папку Модули со всеми подпапками, папку Jinnee и dll-файлы из корня. У меня механизм копирования есть. А вот все вернуть обратно не получается. |
Johny777,
я поняла почему у меня остаются подпапки в папке Модули, а каталог Jinnee целиком удаляется Стандартный механизм откатывает только то, что поставил сетап. Jinnee он ставит целиком и удаляет целиком, а из папки Модули удаляет только те подпапки, что успел поставить до нажатия кнопки "отмена". |
Наверно немного нубский вопрос, но как сделать чтобы отображалась страница выбора папки в пеню "Пуск"? В старых версиях Inno эта страница отображалась просто если есть DefaultGroupName, а сейчас что нужно сделать для её активации?
|
Leka_651,
вопрос: как инсталл должен вести себя при удалении? также откатывать всё назад как при отмене установки? Raf-9600, нужна секция ярлыков |
Johny777,
при удалении нужно чтобы удалялось все, кроме каталога db. он и бекапиться не должен. |
Leka_651,
в общем для того чтобы помочь тебе с кнопкой отмены мне нужен твой код целиком или самодостаточный вариант бэкапа с файлами для теста но его нет поэтому сделал свой вариант бэкапа в нём устранены все дисфункции твоей системы резервного коприрования (по функционалу) ====================================== вот (приписал несколько комментариев) : Цитата:
Type: filesandordirs; Name: not "{app}\db" если нужно откатывать бэкап при удалении, то вот функция пользуйся! :) Разве установка должна отменяться без подтверждения ("Вы уверены...")? |
Johny777,
спасибо огромное :) пошла пробовать. Цитата:
Цитата:
|
Цитата:
|
Ну дак что, мне кто-нибудь поможет? :)
|
скажите пожалуйста как посчитать количество файлов
в папке могут лежать максимум 4 файла. Файлов может быть больше, но инсталл увидит только четыре мне нужно выполнить действие если "замеченных" файлов больше одного пока прикинул реализовать так: iFile1, iFilfe2, iFile3, iFile4: Integer; if FileExists(S_UPD + '\файл1')) then iFile1 := 1 else iFile1 := 0 if FileExists(S_UPD + '\файл2')) then iFile2 := 1 else iFile2 := 0 if FileExists(S_UPD + '\файл3')) then iFile3 := 1 else iFile3 := 0 if FileExists(S_UPD + '\файл4')) then iFile4 := 1 else iFile4 := 0 if iFile1 + iFilfe2 + iFile3 + iFile4 > 1 then действия может есть более грамотный способ я очень мало знаю о .Count может он? |
|
Gnom_aka_Lexander,
спасибо сохранил себе пример пригодится но мне нужно не все подряд считать а только 4 файла с именами те файлы 'hl2_update.exe' 'hl2_ep1_update.exe' 'hl2_ep2_update.exe' 'portal_update.exe' дело в том, что у меня на поиск всех этих 4-х обновлений отведена только одна кнопка вызывающая форму обзора, через которую можно указать их расположение (оно так и должно быть) пример: "в папке по умолчанию", те рядом с инсталлом лежат 4 файла, те максимальное количество я хочу установить 3 из них, а один из другой директории указываю директорию, но там 2 файла и получается, что они (эти 2 архива.exe) перезаписывают существующие пути заменяя {src}\Outer\update на например C:\update скрин-пример папки с многоточием это путь "не рядом с инсталлом" без многоточия - рядом в пути лежат 3 апдейта рядом 4 в итоге из пути будут взяты 3, а из "рядом с инсталом" только 1 поэтому если файлов в указываемой директории больше одного - 2, 3, 4 то должна вылезти маленькая форма (совсем маленькая) с чекбоксами, через которую можно подтвердить какие апдейты оттуда брать |
Johny777, дык, элементарно добавить условие и все.
в параметре dir функции GetFileCount указываешь нужную тебе папку, или папку, которую вернула функция выбора папки - не знаю, какую из них ты используешь, но смысл понятен, я думаю. так-же можно перечислять не множеством а по очереди и в зависимости от наличия-отсутствия определенного файла дисаблить-енаблить определенные чекбоксы обновления. |
Gnom_aka_Lexander,
спасибо за функцию :) понял Цитата:
она будет обрабатываться в событии OnChage элемента конструктора TFolderTreeView там же и блокируются/разблокируются чекбоксы таким образом: var S_UPD: String; ... S_UPD := TFolderTreeView(Sender).Directory; hl2_update_Checkbox.Enabled := FileExists(S_UPD + '\hl2_update.exe'); ____________________________ ещё хотел спросить у меня есть просчёт размера устанавливаемых компонентов там сложение размера файлов и их размер зависит от наличия гкф файла в пути установки я хотел сделать это математическое сложения для повышения скорости обработки вставкой кода ассемблера (ассемблер не знаю, но почитал статью http://sources.ru/delphi/op/learning...delphi_1.shtml по дельфи, где есть такой пример) так и не смог в инно вылетает ошибка на ключевом слове asm например function Count(): Integer; begin asm сложение(рассчёт) end; end; получается инно просто его не поддерживает? |
Цитата:
хотя.. компилятор вроде как понимает логическую скобку asm. можно попробовать сделать так: Код:
function Count(): Integer; |
Цитата:
|
Цитата:
|
Batistas, может стоит установить расширенную версию от Китайских братьев? ISC 5.5.1. ee1 (u) Система Win 7 x64 SP1
|
Цитата:
|
Цитата:
|
Цитата:
|
Batistas, залей на обменник проект целиком со всеми файлами. у меня все великолепно компилится, на 5.4.3 расширенной. Подозреваю, что ошибка после внесения тобой каких-либо изменений в скрипт.
|
Batistas, и кстати, да, ошибка возможна из-за файлов. Попробуй закомментировать секцию [Files] (все файлы) и у меня ещё закомментирована строка ";SetupIconFile=Icon.ico" - всё прекрасно компилируется и на Compil32.exe и на Compil32Ex.exe.
|
Batistas, определимся с понятиями. Файлы ISCmplr.dll, Setup.e32, SetupLdr.e32, ISCC.exe, ISPP.dll - это файлы компилятора и препроцессора, Compil32(Ex).exe - редактор (среда разработки, IDE). Скрипт компилируется на обоих видах компилятора (ANSI и Unicode), но отработал только в ANSI, на Unicode ругань на несоответствие типов, крах при создании аттрибутов, ваша ошибка тоже всплыла. Оказалось, что юникоду не понравились метод createElement при создании нод и метод setAttribute при создании аттрибутов. Процедуру CreateDCPlusPlus в своем предыдущем посте исправил.
|
nik1967, Gnom_aka_Lexander помог мне потестить - у него все работает. У меня же выдает ошибку:
El Sanchez, спасибо, я с версиями уже разобрался. Компилировал при помощи Inno Ultra. И вообще, у меня такое ощущение складывается, что дело в системе. Ведь экзэшник скомпилированный появляется в папке аутпат, но не запускается. Сегодня попробую через LiveCD все это дело проделать Разобрался. Запустилось только с переменной "ArchitecturesInstallIn64BitMode=x64", сейчас буду тестить. :) Собсно результат тестирования: запустился два раза, один раз с рантайм ерор и зависла, второй раз тоже с рантайм ерор, до конца дошла, но ни ник, ни звук не прописались. Все-таки придется с лайв сиди возиться :( |
Как сделать свою форму запроса выхода из установки примерно как тут и чтобы работала с IsDone :dont-know
|
Ivan_009,
я раньше уже выкладывал этот код (ты воспользовался бы поиском) ну да ладно выдрал у себя из скрипта без отсылки на тот код тк этот лучше: Цитата:
IsDone не знаю |
Цитата:
Код:
procedure CancelButtonOnClick(Sender: TObject); |
Цитата:
Так будет быстрей работать: Цитата:
|
Покажите пожалуйста пример как пользоваться Inno Setup Unpacker 0.37 как распаковать инсталлятор... :sorry:
|
Ivan_009, UnPacker распаковывает только инсталляторы, которые компилировались на стандартном компиляторе; а вот если использовать UnPacker, т.е. распаковать инсталляторы, которые компилровались на расширенном китайском компиляторе, выдает ошибку.
|
Serega,
спасибо за функцию. Она быстрее прощупывает папки с большим количеством файлов только вот вылетала ошибка на строке: Код:
if dir[Length(dir)] <> '\' then форма появляется при таком вот условии if (GetFileCount(S_UPD, '*_update.exe') > 1) and (GetFileCount(ExpandConstant('{src}\outer\update'), '*_update.exe') > 0) and (S_UPD <> ExpandConstant('{src}\outer\update')) then те если в пути указываемом в TFolderTreeView файлов больше одного, а в директории по умолчанию - папка Outer рядом с инсталлом - есть хоть один файл после появления формы при нажатии на кнопку отмена директория TFolderTreeView сбрасывается: TFolderTreeView(Sender).Directory := ExpandConstant('{src}\outer\update'); вот тут-то и вылетала ошибка исправил (выделил зелёным): надеюсь этим как обычно не накосячил (может стоило воспользоваться встроенной AddBackslash ?), хотя вроде по тестам всё в порядке :) ============================================================================ другой вопрос/просьба вот процедура рассчёта свободного места где Param(чекбокс отмечен через параметр запуска) и Game_From_INI_Selected(чекбокс отмечен из ключа рядом лежащего ини) это булев переменные если одна из них True, то длинный рассчёт ... half_life_2_russian_gcf := FileExists(WizardForm.DirEdit.Text + '\half-life 2_russian.gcf'); ... обрабатывается в InitializeWizard и в WizardFormDirEditOnChange укоротил и упростил эту процедуру как мог если есть ещё способы по ускорению скорости её работы, то скажите пожалуйста |
Johny777,
твой скрипт работает замечательно. детает то что мне нужно :) но при попытке соединить его с моим вылетает ошибка: Compiling [code] section Error on line 2084 in d:\setup\sbis-setup\setup-eo.iss: Column 4: Duplicate identifier 'TSHFileOpStruct' Compile aborted. на строке Код:
вот все мои скрипты и файлы для сборки http://wtrns.fr/fs097Jn71d0RQUwgkj |
Leka_651,
скачай отсюда http://forum.oszone.net/showthread.p...99#post1201499 или отсюда (проще установка) http://innoultra.ru/?page_id=18 расширенную версию Inno установи расширенный компилятор ANSI попробуй скомпилировать ели будет ошибка закомментируй так (возможно инно уже знает этот тип, те он уже встроен заводом): ещё раз попробуй Цитата:
Цитата:
_______________________-- по ссылке на твой архив пишет, что файл устарел и больше не доступен |
Johny777,
спасибо. пойду попробую :) Johny777, ошибка осталась :( до этого у меня стояла версия 5.5.0 и твой скрипт работал. ошибка похоже у меня Цитата:
вот новая ссылка. теперь должно качаться http://download.sbis.ru/files/setup.zip |
упс... как-то у меня два сообщения в одно слились :dont-know
|
Leka_651, ну и тяжёлый же у тебя скрипт. Запутался
Цитата:
#include "SHFileOperation.iss" которого рядом нет но если ты его подключаешь, то и будет вылетать с ошибкой, тк эта же функция используется и для этой версии копирования (бэкапа) function SHFileOperation(const lpFileOp: TSHFileOpStruct):integer; external 'SHFileOperation@shell32.dll stdcall'; попробую другую функцию копирования использовать. |
Johny777,
это не все скрипты. я лишнее убрала я могу обойтись без этого модуля #include "SHFileOperation.iss" я его закомментировала и сборка пошла)) пока не заморачивайся с другой функцией. сейчас посмотрю как будет работать) |
Johny777,
не хочет работать. буду сейчас разбираться где косяк. |
Leka_651,
не знаю как ты, но лично я модулями вообще не пользуюсь, тк путаюсь сильно у меня например основной скрипт инсталла халфы 2 длиной в около 9000 строк(никаких модулей) и ошибки дублирующихся функций и другие устранял очень быстро также код становится очень наглядным, хоть и длинный функции и процедуры сверху использование ниже ( Я знаю в дельфи можно объявить процедуру(её имя) в шапке и потом писать где угодно, а здесь, в Инно, так нельзя) переменные в самом верху и тд попробуй записать всё в одном скрипте в порядке чтения компилятором (сверху вниз)! :) добавь комментарии для себя, |
Johny777,
я бы рада, но у меня 21 файл, по которым собираются 44 сетапа, и пока большая часть не мое творение. а времени все привести в порядок нет - нужно ошибки править :( буду мучаться дальше :) спасибо за помощь. Johny777, можешь рассказать чем отличаются inno ultra и простая inno? |
Цитата:
Цитата:
Цитата:
Цитата:
Для уменьшения количества переменных я бы использовал массивы, а при однообразных вызовах работал через for... to...do. Так же по возможности нужно стараться разгружать InitializeWizard запуская большие расчёты в отдельном потоке. |
Как и обещал, поставил виртуальную машину, попробовал скопилировать - экзэшник скомпилирован, запускается, но выдает ошибку в самом конце установки - http://s1.ipicture.ru/uploads/20120808/bNfOvdds.png . Я так посмотрел на скрипт, попробовал добавить два слэша в одну из строк. Результат - экзэшник не запускается и выдает ошибку, что и на 7 - http://s1.ipicture.ru/uploads/20120808/c1CTB8sV.png . Сдается мне, что ошибка в самом скрипте...
Вот скрин от знакомого - та же самая ерундень - http://img-life.ru/upload_image/0be8...48a6b50795.JPG (компиляция завершена, идет окончание установки) |
Batistas, вы не читаете, что вам пишут:
Цитата:
|
El Sanchez, теперь я прочитал, видимо проглядел. Поставил ansi-версию, ошибки все равно вылетают. http://s1.ipicture.ru/uploads/20120809/WTFVVU16.png , http://s1.ipicture.ru/uploads/20120809/zUJ2xwg3.png
|
люди помогите плиз как и чем можно сжать файлы до максимума? я жал и раром фриарком 7 зип но сёравно очень слабо жмёт.
|
Spell1999, NanoZip.
|
Spell1999, все от конкретного файла зависит. http://s1.ipicture.ru/uploads/20120809/jvZcF9SW.png , http://s1.ipicture.ru/uploads/20120809/jHQMmJ9z.png
|
и чё это за чуш
Batistas, я также делал но непомогает я немогу понтять чем жмут. например maxpayne 3 с 25 гигов сжали до 12 это как? |
|
несопрю она висит вся на музыке и видео. но сёравно фриарк нежмёт так.
|
Spell1999, скорее всего удалили ненужное. Вот еще для сжатия - http://www.youtube.com/watch?v=CQcJJ_FyUnE
|
Batistas, я тоже так думал сначала. но потом скачал установил она тянет почти на 25 гигов как лицензия, там ничё не вырезано. ща гляну видос попробую.
|
Цитата:
Если будет ругань, то оформите ReadDCPlusPlus вот так: |
Spell1999,
по вопросам сжатия читай тут http://forum.ru-board.com/topic.cgi?...=30239&start=0 тут http://forum.ru-board.com/topic.cgi?forum=5&topic=32025 большинство (даже почти все) из так называемых "репаков" сжимаются на основе средств сжатия и преобразования файлов поддерживаемых библиотекой IsDone (распаковка) качай его отсюда http://176.9.1.113:52080/showthread.php?t=34&page=49 читай к нему справку и пользуйся, если хочешь (справка должна идти в комплекте, то бишь в архиве) эта тема предназначена для написания/помощи в написании кода на основе языка Object Pascal используемом в инно и всего того что стоит в справке по инно - стандартные средства |
Покажите пример наложение текстур на кнопки с двум состояниям искал везде 4 или 3 состояния... :sorry:
|
Johny777, спс до меня допёрла кажись)))
|
Ivan_009,
текстурирование кнопок 2 состояния - обычное и при нажатии код: текстура (положить рядом со скриптом) : |
Johny777, а возможно ли в свою форму отмены текстурировать эти кнопки.... :unsure:
или использовать вместе с деинсталлятором. и как сделать чтобы при нажатии на чекбокс не создавать ярлык в меню пуск кнопка становилась неактивной......Заранее спасибо за любую помощь......... |
El Sanchez, спасибо, скрипт завелся :) Я его немного подрихтовал: добавил прописывание абсолютного пути до звуков и русификации; Прописал добавление описания, бан мессэйджа, аплоад спид. Добавил древо папок и файлов, прогресс бар с отображением процентов установки, чекбокс добавления ярлыка на панель задач в Win 7. Все ок. Но вот решил добавить выбор директории для временных файлов. И тут начали ошибки вылетать...Вот код:
Мой неправильный код заслешован. Не подскажешь как правильно сделать? :) |
Цитата:
тем кнопкам не присоено событие в OnClick. Только ModalResult и смысл текстурировать кнопку на форме деинсталятора (родной), если здесь нет состояния "неактивна" проще уж тогда вообще скрыть, тк от неё толку ноль Цитата:
Забыл? |
Johny777, мне надо чтобы при нажатии на чекбокс текстурированная кнопка становилась неактивной.....У меня же все наоборот....:rotate:
В твоем примере.... |
Ivan_009,
так состояния "заблокирована" нет используй пример с 4-мя состояниями и в конце процедуры OnClick чекбокса припиши UpdateButtons вот так (только что проверил) кнопка обзор блокируется Код:
procedure Твой_кастомный_чекбокс_OnClick(Sender: TObject); Batistas, смотри El Sanchez вынес создание страниц в процедуры, которые выполняются в InitializeWizard процедуры выполняется между логическими скобками begin и end те сверху вниз (от начала до конца) и никак иначе а теперь смотри в каком порядке они - процедуры - у тебя перечислены: CreateNickNamePage; CreateDownloadDirPage; -- сначала эта CreateTempDownloadDirPage; -- потом эта CreateShareDirPage; CreateAboutInfoButton; CreateURLlink; а теперь посмотри на функцию создания страницы в процедуре CreateTempDownloadDirPage первой настройкой (выделил зелёным) идёт страница после которой должна создаться эта - TempDownloadDirPage TempDownloadDirPage := CreateInputDirPage(ShareDirPage.ID, ... те ты указывать в функции создания страницы создать страницу такую-то после ещё не созданной но которая будет создана следующей "по списку" компилятор выполняет код сверху вниз, те ты понимаешь, что так нельзя и ошибка неизбежна? также у тебя есть некоторые недочёты в коде например в событии OnChange элемента TStartMenuFolderTreeView, те при изменении директории (взаимодействии с деревом папок меню "Пуск") WizardForm.GroupEdit.Text:= AddBackslash(TFV.Directory)+'MyApp'; в конце дописывается "MyApp" это явно не было твоей целью тоже самое касается и TFolderTreeView позволил себе всё вышеописанное исправить и записать грамотнее результат: и на будущее убирай свой код в тег [more][code] твой код [/code][/more] тк без отступов код просматривать тяжело ==================================================================== El Sanchez, спасибо не знал про такую манеру написания if Sender is TStartMenuFolderTreeView ... до недавних пор это в немалой для меня мере развязывает руки :) раньше писал case TButton(Sender) или case TLabel(Sender).Tag of |
Johny777, честно сказать, я так и не понял, чем мой код в плане tempdownloaddir отличается от твоего...А то, что InitializeWizard CreateTempDownloadDirPage не на нужно месте - я в курсе, не зря же я её заслэшевал. Сам посуди - все процедуры в InitializeWizard идут по порядку, хотя я с таким же успехом мог ставить их вперед, но я же почему-то этого не сделал. =) Инсталятор, кстати, выдает ошибку. Так что вопрос актуален. А в плане остального кода - не я его писал. Я брал готовые примеры и вручную прикручивал к скрипту от El Sanchez'a . Самое главное, что это приводило к нужному результату. А длиннее\кароче код это не имеет особого значения. "TStartMenuFolderTreeView" я брал из готового примера древа дисков и папок:
|
Вложений: 1
люди мне дали клёвый скритп но там вот такая ошибка http://forum.oszone.net/attachment.p...1&d=1344553184 и незнаю что делать всё облазил вроде всё нормально а не компилица скрипт. поогите вот код ботвы
неполучилось скинуть скрипт вообщем вот сам файл http://rghost.ru/39688804 |
Johny777, правильный порядок инициализации был испорчен, ибо я перебирал последовательности, ибо только после добавления криэйттемпдир появляется ошибка. Именно после нее, хотя делается все по аналогии. А толку от правильного порядка инициализации? Он не является причиной ошибки. Ты можешь прямо сейчас его испортить - инсталятор будет компилироваться. Максимум, что будет - компонент, который находится не на своем месте не будет работать. Другой вопрос, что даже при правильном порядке ошибка вылетает. И вылетает ошибка на 253 строку - http://s2.ipicture.ru/uploads/20120810/U3w46t5i.png Заслешиваем CreateTempDownloadDirPage и вуаля - инсталятор компилируется без единой ошибки.
|
Batistas, а я ведь вам на ru-board готовый скрипт выложил, зря только писал :(
|
Цитата:
|
YURSHAT, да я там написал, мне дня четыре никто не отвечал. На пятый день написал один "умный" и сказал, что тут альтруистов нет =\ А насчет не пригодится, это ты зря =) Мне все пригодится :)
|
El Sanchez,
1)Я это изначально знал; 2)Вы сами писали, что начальный скрипт заводится на ANSI; 3)Вот именно из-за такого перемещения я и перепутал местами инициализацию. Сделал, как Вы сказали - та же ошибка. Вот архив со скриптом - http://narod.ru/disk/59165927001.1aa...08.12.rar.html. Попробуйте сами скомпилировать setup_2.iss и сами все увидите. |
Batistas, все чудесатее и страньше. Скомпилировал, запустил, установил, не ругнулось, запустил поверх несколько раз, с какой-то попытки поймал ошибку. Посмотрите на свой последний скриншот. Из него видно, что функция ReadDCPlusPlus отработала по крайней мере не меньше 2 раз, значит и проблемная строка тоже. У меня ошибка произошла при отработке процедуры CreateTempDownloadDirPage, вызов функции ReadDCPlusPlus, попытка чтения значения ноды из файла DCPlusPlus.xml. Смотрим, как вы создаете эту ноду:
Код:
//tempdir node 2. DownloadDirPage.Values[0] заменить на TempDownloadDirPage.Values[0]. P.S. Я еще говорил сменить XML Parser на более новый, пробуйте: Цитата:
|
El Sanchez, все сделал - та же самая ошибка
|
Ivan_009, Легко...
|
Цитата:
|
Gnom_aka_Lexander, не работает :o
Мне нужно чтобы передвигать мышью а не чтобы она сама ходуном ходила.....:jump: |
Вложений: 1
Ivan_009
|
YURSHAT, Спасибо большое :up но почемуто с данным скриптом нехочет работать.
|
Ivan_009, ну коль выкладываете киллометровый скрипт, то выкладывайте полностью, с нужными файлами. Ибо что бы проверить, нужно скомпилить, а у меня нет времени подбирать нужные файлы....
|
Ivan_009,
http://rghost.ru/39717893 |
Snoopak96, Респект :clapping: и большое спасибо :up все работает...
|
Как вставить свою картинку в форму отмены.... :search:
|
Цитата:
|
Почему при использовании ISVideo повтор идет нормально но стоит нажать кнопку Stop и Play так все как только видео доходит доконца и все больше неповторяется в чем может быть проблема вот код.....
|
Ivan_009,
узнаю своё кодище :) улучшил с точки зрения оптимизации касательно видео я так понял тебе нужна "петля" после нажатия на кнопку Play исправил (в код посмотри) и Вань заимей привычку с файлами выкладывать я сейчас четверть часа искал Isvideo, собирал скрипт, чтоб сделать у себя проигрывание и только потом начал искать ошибку |
Цитата:
|
Johny777, а как теперь скрыть данные кнопки и отобразить их на wpInstalling: :tomato2:
Подскажи если не трудно...:unsure: |
Ivan_009,
тогда придётся вернуть переменные ещё улучшил код теперь на одну кнопку меньше, тк объединил проигрывание и паузу, а запуск видео и прочее перенёс из переключения страниц в этапы установки код: (приписал комментарии) наглядный пример со всем необходимым в архиве: http://sendfile.su/647969 |
El Sanchez, самое смешное, что теперь ошибка не вылетает Оо День не трогал и вдруг заработало Оо
|
Помогите пожалуйста я делаю инсталл Opera , и как мне сделать так чтобы была флажок 'сделать браузером по умолчанию' и после деинсталяции по умолчанию стал тот который был до opera , заранее спасибо
|
Как сделать данные линии подскажите пожалуйста кто знает... :search:
|
Ivan_009,
// Для примера (убери если надо) with WizardForm do begin InnerNotebook.Hide; OuterNotebook.Hide; end; То,что на скрине, там тупо делали по бевалу. Так гораздо проще и лучше. :-) |
Всем привет. Возник вопрос - как завершить установку и откатить изменения при определенных условиях? Все условия я запрограммировал. Прверяются они при нажатии определенной кнопки далее:
Код:
//Функция проверки наличия Meneger при установленном сервисе Код:
// пользовательские настройки |
Как использовать разные кнопки через bmp как тут... :unsure:
|
Mafioza,
реестр не знаю извиняй жди кто подскажет ==================================================================================================== ======== Yury_Prizrak, давай писать компактнее убирай пожалуйста свои коды дополнительно в [more] [/more] Цитата:
поэтому можно только удалить, а откат (под откатом имею ввиду не удаление, а какие-то действия типа возвращения бэкапа) делать в функциях удаления Цитата:
================================================================================================ Ivan_009, за основу взял пример "4 состояния" добавил второй входной параметр процедуре текстурирования кнопок смотри procedure LoadButtonImage(AButton: TButton; Texture: Integer); ///////////// название///////////(название кнопки; номер тестуры); номер текстуры в данном случае целое число (1 или 2) в самой процедуре: if Texture = 1 then ButtonImage[n].Bitmap.LoadFromResourceName(HInstance, '_IS_BUTTON1'); if Texture = 2 then ButtonImage[n].Bitmap.LoadFromResourceName(HInstance, '_IS_BUTTON2'); использование: LoadButtonImage(WizardForm.BackButton, 1) те грузим картинку процедурой LoadButtonImage и в скобках через запятую отправляем ей параметры (родная кнопка "назад", 1), где 1 - это тестура номер 1 код: пример для наглядности с (двумя тестстурами) : http://sendfile.su/649535 |
Так, задачу немного упростим - как просто выйти из программы инсталляции в определенный момент - еще до начала копирования данных на диск. Тоесть например в момент нажатия кнопки далее на странице выбора пути выскакивал месседж - бла бла бла и при нажатии ок - инсталляция просто закрывалась - не трогая данных, находящихся на диске?
Есть решение WizardForm.Close; но оно вываливает окошко выбора - типа "а вы точно хотите завершить?" |
Yury_Prizrak,
|
nik1967, спасибо, работает. Может еще знаешь как наличие атрибута проверять? Было бы просто здорово! :)
|
johny 777
не знаешь как довавить программу в автозагрузку через реестр , а не через *пуск\автозагрузка ??? |
|
Yury_Prizrak, никогда не работал с xml документами, может стоит посмотреть
|
Цитата:
Код:
//способ №1 |
Как передвинуть кнопку "завершить" где должна быть кнопка "отмена" :sorry:
|
Ivan_009,
кнопки "завершить" и "установить" нет! это всё кнопка "далее" текст которой зависит от её, кнопки, расположения на той или иной странице передвигать кнопки, если их расположение, на разных страницах разное нужно во встроенной процедуре переключения страниц также запомни для повышении оптимизации, укорачивания кода и тем самым удалении ненужного кода: если ты кнопку например на странице приветствия расположил слева снизу и на следующей странице она там же, то при переходе на след. страницу остаются настройки с предыдущей, те не надо указывать те же координаты пока кнопка там же пример: ================================== Demo =================================== настройки переключения как выше(для примера двигаем кнопку далее) : те же настройки через таймер (не использовать такой метод без нужды) под расширенную версию: |
Johny777, у меня почемуто вышло так
|
Ivan_009,
так сделай: дело в том что текстурирование не кнопок а создание панелей поверх и на них картинок с 2-мя лейблами |
Возможно ли на эти кнопки наложить текстуру :search:
|
как ассоциировать файлы *.apm с программой Autoplay menu builder ? заранее спасибо !!!!!
|
Mafioza, при установке программы автоматически ассоциируются :read:
|
Цитата:
Делается примерно так Первый пример можно так же ассоциировать не только через HKLM но и HKCU. Это уж по личному усмотрению, кому как удобно. Вкратце: HKLM - идёт как общая расчитана на всех пользователей, т.е при таком условии даже новый созданный юзер на компе автоматически ассоциируется с программой. HKCU - В основном расчитана на одного пользователя, т.е при каком пользователе программа ассоциировалась то на нём и останется, на других зверей не повлеяет. |
Эх Ваня...
в общем так за основу взял "4 состояния" 1. Теперь пофиг какая, тк картинка растягивается (только растягивать нужно в разумных пределах). Главное чтоб были 4 кнопки одинакового размера с таким вот расположением картинок-состояний: ;обычное состояние - при наведении - при нажатии - заблокировано 2. тк картинка растягивается размеры кнопок больше не привязаны к константам const ButtonWidth = 80; ButtonHeight = 23; а это занчит, что кнопки могут быть отличными по размеру от ширины и высоты раздела тектстуры и друг от друга 3. сильно оптимизировал код: убрал лишнее переписал грамотнее заменил процедуры наведения и "уведения" курсора мыши с кнопки (стали быстрее на глаз) 4. две текстуры для кнопок на месте как были Результат: скрин: архив со всем необходимым: http://sendfile.su/650210 ==================== Важно! |
Johny777, а возможно или нет наложить изображение через bmp на чекбоксы :unsure:
|
Ivan_009, в шапке пример El Sanchez-а "Создание кастомного чекбокса"
а вообще думаю можно доработать текстурирование кнопок под эти цели не уверен |
Как добавить крестик и кнопку свернуть вот сюда без использования ботвы подскажите кто знает заранее спасибо... :search:
|
Ivan_009,
3 способа: 1. использовать TNewButton с текстом "X" и "-" (С текстурированием страницей назад можно добиться уровня 2-го способа) код: 2. использовать TNewSpeedButton с глифами (советую) код: архив с кодом и картинками-примерами: http://sendfile.su/650884 3. использовать ImageButton (лучший вариант), те картинку с событиями как при текстурировании извиняй рисованием мне сейчас заниматься некогда так что сам попробуй разобрать, будут вопросы спрашивай пример такой кнопки это: ...\Inno Setup 5\Examples\Example_MouseEvent_ImgBtn.iss там и наведение и нажатие и пр. можно такую кнопку навернуть... ... не хуже чем в аэро стиле семёрки (свечение)! но не думаю, что стоит с ним заморачиваться, если только ты не делаешь инсталл типа StarCraft 2 за авторством South |
Чтобы положить файлы в папку "Мои видеозаписи" устанавливаю путь к этой папке:
Код:
[Сode] Прописываю путь к этой папке: Код:
[Files] function GetSpecialPath(CSIDL: Word): string; пишет: Invalid prototype for 'GetSpecialPath' Как правильно прописать? |
|
|
ChVL, может антивирь блокирует?
|
Цитата:
|
Цитата:
Просто Мое Видео входит в системные файлы папки и система может не дать изменить то, что уже есть. По крайней мере семерка. |
Цитата:
Но какой-то выход из положения должен быть. Цель тривиальная: положить туда свою папку. |
папка с содержимым? Просто вот так:
Код:
Source: {code_GetSpecialPath}\MyProg; DestDir: {code:GetVideoPath}\MyProg А вот так: Код:
Source: {code_GetSpecialPath}\MyProg\*; DestDir: {code:GetVideoPath}\MyProg |
Gnom_aka_Lexander,
То, что надо положить: папка\папка\файл |
Код:
Source: {code_GetSpecialPath}\папка\папка\файл; DestDir: {code:GetVideoPath}\папка\папка |
Gnom_aka_Lexander,
Естественно, обычная запись. |
|
ChVL, тогда вот так:
но у меня почему-то распаковывает в папку видео, а не в подпапку MyProgName, которая даже не создается. Видимо, все-таки система запрещает вмешательство, не вижу других причин. |
Вообще-то решение существует. Встречал несколько программ, у которых эта функция реализована. Но до секции [Сode] не добраться...
|
ChVL, так попробуйте. Если система будет выделываться, уберите флаг CSIDL_FLAG_CREATE.
Код:
[Files] |
Как зделать так чтобы иконка отображалась в этой области... :sorry:
|
Ivan_009,
где icon.ico - иконка 16 на 16 пикселей Автор скрипта - South Ваня! только сейчас догнал этот пример тебе не катит, тк у тебя нет границ окна вот код с файлом: http://sendfile.su/651666 (проверено, одобрено) использование на форме деинсталятора |
Цитата:
Если уж так нужно, то как-то так: Johny777, на скрин посмотри. Ни че не видешь в правом углу, кнопки на которых свернуть и закрыть. |
подскажите пожалуйста как в этой процедуре обрабатываемой при изменении лист бокса получить текст выбранного айтема
procedure FileListOnClick(Sender: TObject); begin // From_Edit.Text := FileList.Items(Sender).Text; end; код целиком: |
Как сделать такие края в инсталляторе без ботвы..... :not-me:
|
Цитата:
|
nik1967, А поподробней можно какие функции :)
|
Ivan_009, Только пропадает прозрачность.
|
как сделать , окно подготовки к установке и его точный прогресс , хотя бы как в NSIS ?заранее спасибо !
|
Mafioza, ты про это что ли... :)
Johny777, как такое зделать незнаешь случаем... :not-me: |
Ivan_009, Mafioza,
блин чуваки харэ мудрить я знаю как такое задать и поделюсь, но вы поймите простую вещь у меня в инсталле при запуске извлекаются 75 картинок на них отведено 74 деления прогрессбара на форме которая создаётся в начале InitializeWizard; а в конце разрушается сама процедура InitializeWizard; у меня длиной в 4200 строк и все остальные деления (позиции прогреса) раскиданы на примерно равных интервалах по ней (25 делений) те я не мог не отобразить запуск такого тяжёлого инсталла если у вас сразу запускается, то вы и форму не особо увидите. Она мелькнёт и всё а теперь подумайте вот вы хотите вешать необдуманно рюшки которые - понты Я тоже фанат всяких наворотов но скажу честно. Если бы мой инсталл запускался за пару секунд я бы форму даже не создавал в общем призываю ещё раз пересмотреть желания если вам нужны кастомные тормоза, то дело ваше. Выдеру пример у себя из кода Прочитали? Теперь ещё раз скажите нужно или нет если не нужно то поудаляйте свои посты если нужно оставьте. Заменю это сообщение на код |
Цитата:
|
Fifth Intellect вообщето это не понт понятно некоторые инсталлы загружаются долго , мне нужен как ты говоришь этот геморой!
|
El Sanchez,
Ваш скрипт работает. Спасибо большое! В чём смысл флага CSIDL_FLAG_CREATE? - Без него тоже работает. |
Цитата:
|
Цитата:
взял у себя из кода правда без картинки чисто функционал нужна будет добавь таким макаром http://forum.oszone.net/post-1968497-631.html |
Доброго дня, подскажите пожалуйста , если возле инсталлятора лежит к примеру файл 1.mp3, скопировать его в папку установки + под папки Music\\11\\
В итоге он после установки должен оказаться так к примеру С:\\1\\Music\\11\\1.mp3 но только если он имеется возле инсталлятора. |
ddv122,
Код:
[Setup] |
Всем привет!
Выложите скрипт двойного прогресс бара, нашел один, но чет смущает пункт SizeInfo.ini - чего это такое и откуда ее брать? И такой вопрос на больших файлах пропадает моя иконка инсталлятора, это как то можно исправить? Эээ, после запуска игры появляются такие значения в реестре: Root: HKLM; Subkey: "SOFTWARE\Classes\CLSID\{EE4DEA71-3E59-432B-AF58-2B13E53D4F90}"; и т.д. Root: HKLM; Subkey: "SOFTWARE\Classes\Record\{05266000-5465-3AA0-90F4-6FDD962F7F95}"; и т.д. Где цифры выделены фиолетовым цветом, это можно как то прописать чтобы удалялось? |
MogilShik2007,
сам хотел двойной прогрессбар мне на руборде объяснили по научному - http://krinkels.org/showpost.php?p=8222&postcount=311 что это нереально или как-то так давно забил (ну почти забил :) ) Ivan_009, он о примере для не использующего исдан скрипта говорит и в исдане вверху общее количество архивов внизу текущий те это не отображение конкретных файлов - мелких и больших! |
Johny777
Спасибо. А что по поводу ключей реестра? Вот кстати скрипт двойного прогресс бара: Что за SizeInfo.ini и с чем его едят? ))) |
Как добавить в инсталлятор свой шрифт можно пример.... :sorry:
|
Цитата:
Код:
#define Font "Rurintania.ttf" |
El Sanchez, а в деинсталлятор как?
|
Цитата:
Код:
procedure InitializeUninstallProgressForm(); |
При наложении текстур на кнопки эти процедуры нужны в IsDone скрипте или нет
WizardForm.CancelButton.Visible:=true; WizardForm.CancelButton.Enabled:=false; Подскажите заранее благодарю... :search: |
Ivan_009, ну так вроде отвечает на кнопочку "Отмены", потестируй.
|
Как добавить проценты удаления на деинсталлятор...Подскажите пожалуйста... :search:
|
Всем доброго времени {суток}!
Появился вопрос: вот есть три файла с одинаковыми именами, как бы сделать так, что бы можно было выбрать, какой из них устанавливать? (Ооочень желательно еще и с выбором из командной строки). |
apozlevich,
как-то так Код:
[Components] |
Всем доброго времени суток.
Уважаемые программисты. Подскажите, пожалуйста, возможно ли через Inno подкачать недастающие файлы через интернет, не прибегая, к примеру "InnoTools Downloader "? Слышал про фунцию "Procedure url_download ", может кто знает как ей пользоватся? Через эту процедуру докачка файлов происходит во время устаноки и инсталлятор не переходит на другие странице чтобы скачать файлы. Так же интерисует: Возможно ли запустить инсталлятор только при подключении к интернет? Если соединения нет, то и инсталлятор соответственно не запускается? И самое важное: Возможно ли сделать запуск инсталлятора, только на определённой машине? Если sysuserinfoname не совпадает, то соответсвено: Result:= False Спасибо за внимание. |
Цитата:
http://www.sherlocksoftware.org/inno...ges/itd_ui.png |
Цитата:
=============================================================================== Цитата:
в справке почитай =============================================================================== Цитата:
в сообщении El Sanchez - а найдёшь! Цитата:
впиши в него заместо процедуры InitializeWizard(); это: |
Johny777, Спасибо выручил... :up
|
R.i.m.s.k.y., я Inno Setup изучал по скриптам из других инстоллеров, не знал про Components: :)
Про комстроку - в таком варианте можно будет указать, какой из компонентов ставить, и это хорошо :) |
Цитата:
Johny777 Благодарю за инфу. Всё работает прекрасно. Инсталлятор действительно не запускается без подключения к интернет, но всплывает окно о запросе подключения - это даже хорошо, но можно в него вписать свою надпись вместо: "Подключение коммутируемого соединения"? По поводу скачивания файлов тоже всё прекрасно, только также есть один вопрос: Можно ли обойтись без окна сохранить как? Просто нужно докачать недостающие файлы в {app} без запроса. |
|
Цитата:
По поводу окна о запросе сохранения файла: Скрипт, как ты и сказал: в сообщении El Sanchez находится на этой странице (второй сверху). Может ты имел в виду другой код, но я нашёл только его. За открытие окна о сохранении отвечает строка: И если её убрать, то файл сохраняется рядом с exe-ешником. P.S. Стили окон меняются в зависимости от скина инсталлятора. Просто если в окне сохранения можно вписать "Сохранить как...", то в окне о подключении тоже как-то можно изменить надпись. |
Помогите соеденить 2 скрипта чето неполучается... :sorry:
|
Johny777, В твоем примере почемуто до 100 процентов не доходит все время поразному то 93 то 85
|
Подскажите пожалуйста как убрать два русских языка и списка? цель: оставить только русский и английский, если в строке [Languages] закомментить русский, то появляется ошибка, из за месседжей, которые написаны под версию языка.
|
Ваня, ты на код посмотри
UPercentsLabel.Caption := IntToStr(UninstallProgressForm.ProgressBar.Position) + ' %'; текст лейбла := переводим целое число в строковое(позиция прогресс бара деинсталятора) + ' %' а теперь подумай проценты ли не доходят до 100% или твой прогрессбар? к тому же в таймере эта функция с переводом числа обновляется каждые 10 милисекунд (в секунде 1000) UPercentsTimer:= SetTimer(UninstallProgressForm.Handle, 0, 10, CallbackAddr('UPercentsProc')); поставь одну если хочешь Vista-w, покажи всю секцию [Languages] |
Johny777, Чтобы проценты равномерно шли и до 100 процентов... :biggrin:
|
Цитата:
Цитата:
|
Johny777,
вот [Languages] Name: rus; MessagesFile: compiler:Languages\Russian.isl Name: eng; MessagesFile: compiler:Languages\English.isl |
Johny777, Как исправить вокруг кнопок обводку и при нажатии кнопки сьезжают вниз :(
|
Vista-w, так попробуй...
Name: russian; MessagesFile: compiler:Languages\Russian.isl Name: english; MessagesFile: compiler:Languages\English.isl |
Vista-w, покажи код.
|
...
|
Vista-w, у тебя 2 секции [Languages] убери одну... :yes:
|
Ivan_009,
какой я не внимательный)) спс |
Извиняюсь за тупой вопрос но если у меня компилятор ANSI в этой строке, что нужно поставить, чтобы не использовать...
#ifdef UNICODE #define A "W" #else #define A "A" #endif |
Ivan_009,
если юникод то А - W в противном случае (только ANSI) A - A |
Ктонить может написать простенький скриптик, который в случае если выбран компонент "Game\Lokal" и нажата кнопка «Далее», проверял, существует ли ключ реестра "InstallPath" в ветке "HKLM\SOFTWARE\Blizzard Entertainment\Diablo II\" если ключ найден, то проверял по указанному в этом ключе реестра пути, существование файлов "Game.exe" и "d2data.mpq". Если всё найдено, то молча переходить на следующую страницу, если же файлы или ключ в реестре не найден, то выводить сообщение с кнопками «Да» и «Нет», на которые невозможно нажать в течение 10 секунд. По умолчанию выбрана кнопка «Да», и при нажатии на неё автоматически выбирался компонент "Game\Full" и осуществлялся автоматический переход на следующую страницу, если же нажать на «Нет» то осуществлялся переход на следующую страницу без дополнительных действий.
|
|
Друзья помогите, кто нибудь прикрутите пожалуйста ISDone и если не сложно то сделайте кликабельное лого без фона.
Вот скрипт: http://rghost.ru/40017592 |
Raf-9600, Johny777,
|
nik1967, Если бы можно было сделать чтобы возможность нажать на Да\Нет появлялась только через 10 секунд, тогда было бы в самом деле лучше.
Johny777, Благодарю |
Twoface, не умеешь сам?
|
Цитата:
|
Twoface, не пользовался Inno Setup Joiner?
|
Цитата:
|
А можно ли программно изменить путь установки? Ну в смысле сменить содержимое {app}?
|
Twoface, руками так же как бы правильно пользуюся, вот только сколько дублей выдает; тем самым и выдает ошибку. Попробуй эту утилиту, и отпишись результаты.
|
Цитата:
|
Twoface, так
|
Цитата:
|
Twoface, Для начала установи InnoUltra
http://innoultra.ru/?p=1 |
Цитата:
|
Twoface,
После чего, в проводнике выделяем подготовленные скрипты, и в контекстном меню выбираем Join Scripts. И все :drug: |
Twoface, кажись, первый: из твоего проекта (iss-файл) выделяем все коды в секции [code] и копипастим, создаем отдельный iss, вставляемую (из копипаста) код Паскаля из секции [code], сохраняем. Второй: создаем 2-ой отдельный файл, из скачанного набора скрипта IsDone, и делаем то же самое, что и первое (копипастим и вставлем), сохраняем. Выделять две созданные проекты (iss-файлы), затем ПКМ -> Join scripts.
Не могу уже повторять, я реально написал, как это сделать. |
Цитата:
|
Twoface, Щас прикручу IsDone подожди немного... :yes:
|
Цитата:
|
Twoface, Лови скрипт в папку include положишь сами файлы IsDone....
Также исправил ошибку при выходе из инсталлятора была ошибка... Таймеры забыли наверное... :happy: |
У кого есть пример создания чекбоксов через ботву поделитесь пожалуйста...В самих примерах ботвы не нашол... :(
|
Ivan_009, btnCreate
|
Маленькая проблемка, прикрутил музыку через BASS_Module отдельно, ошибки не какой нет но и втот же момент не кнопки ВКЛ и ВКЛ а также музыка не начинает самостоятельно играть, посмотрите скрипт пожалуйста.
http://rghost.ru/40050819 |
Как скрыть данную кнопку....
|
Ivan_009,
Вот нарыл что-то: Мож один из вариантов тебе подойдёт. 1) [code] Procedure CurPageChanged(CurPageID: Integer); begin if CurPageID = wpSelectDir then begin If WizardForm.FindComponent('DirBrowseButton') is TButton then TButton(WizardForm.FindComponent('DirBrowseButton' )).Hide; end; end; 2) Procedure CurPageChanged(CurPageID: Integer); begin WizardForm.DirBrowseButton.hide //wpSelectDir WizardForm.GroupBrowseButton.hide //wpSelectProgramGroup end; 3) procedure InitializeWizard(); begin WizardForm.DirBrowseButton.hide; end; |
Twoface, Вот держи в папку BASS_Files добавь Music.mp3...
|
Ivan_009 у тебя пример на ботве
procedure HideComponents; begin BtnSetVisibility(hDirBrowseBtn, false); // мы скрываем кнопку end; Procedure CurPageChanged(CurPageID: Integer); Begin HideComponents; if CurPageID = wpSelectDir then // это где именно на станице выбор папки установки begin BtnSetVisibility(hDirBrowseBtn, true); // здесь мы показываем end; end; |
|
Ivan_009,
Спасибо за то что постарался помочь, век помнить буду. Всё, я сам сделал, правда голова чуть не лопнула но сделал. |
как на финишной странице передвинуть текструированную кнопку через ботву.... :sorry:
|
|
Как сделать деинсталлятор через ботву. Дело в том что инстал я сделал а как деинсталлятор не знаю... :(
|
Повторюсь, так как не услышал ответа)))
После запуска игры появляются такие значения в реестре: Root: HKLM; Subkey: "SOFTWARE\Classes\CLSID\{EE4DEA71-3E59-432B-AF58-2B13E53D4F90}"; и т.д. Root: HKLM; Subkey: "SOFTWARE\Classes\Record\{05266000-5465-3AA0-90F4-6FDD962F7F95}"; и т.д. Где цифры со скобками выделены фиолетовым цветом, это можно как то прописать чтобы удалялось? ЗЫ. Если вручную прописывать эти ключи, то инсталлер ругается на скобы и не хочет делать сборку))) |
|
Как текструировать DirEdit и GroupEdit через ботву....Заранее спасибо.
|
Цитата:
сделай так with WizardForm.DirEdit do begin BorderStyle := bsNone; Color := clBtnFace; end; чтоб эдит сливался с окном (не было границ) и картинку наложи |
Ivan_009, вот пример
|
Привет, подскажите скрипт и что за .dll использовались на скринах:
И если можно поподробнее))) |
MogilShik2007, набери в Google "ISDone" и ищи! Тысеача раз уже спросили!
|
Цитата:
|
El Sanchez,
можно пожалуйста пример загрузки скина из оперативки (тогда его не нужно копировать в директорию установки а оттуда в темп для деинсталятора и загрузка должна быть быстрее)? и скажи можно ли пихать библиотеки в RawDataResource (если да то с примером пожалуйста для например той же ISSkin.dll)? так не работает - procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@RawDataResource:skin stdcall setuponly'; в Example_RawDataResource.iss немного не то тк файл извлекается в конечном итоге в темп и грузится оттуда |
Здравствуйте!
Я использую Stormlib.dll для упаковки игровых архивов. У меня не получается использовать Callback с помощью функции SFileSetAddFileCallback. Вот описание функции: http://www.zezula.net/en/mpq/stormli...ecallback.html Вылетает ошибка: "Access violation at address xxxxxxxx. Write of address xxxxxxxx Дебаггер указывает на SFileSetAddFileCallback (phMPQ, @AddFileCallback, 0); Очень надеюсь на помощь, заранее спасибо! Вот мой код: Код:
var |
Цитата:
|
MogilShik2007, http://freearc.org/ru/InnoSetup.aspx
|
Цитата:
Цитата:
Код:
var |
Цитата:
|
Как на b2p сделать деинсталлятор как инсталлятор или это надо делать на botva2 подскажите пожалуйста...
На b2p не получается... :( |
Ivan_009, никак. тоесть, можно, конечно - загнать графику в те-же RawDataResource и переписать модуль для b2p. Могу занятся, если время будет. но скорей всего в ближайшее время его не будет - мне на сборку-то мою, и то пришлось соавтора приглашать...
P.S. И да, b2p - это всего лишь воспомогательный плагин для botva2, который подает botva2 картинки из памяти, не более, сами картинки грузит из botva2. |
Здравствуйте.
В общем, есть игра, которую можно модифицировать поместив в нужную папку файлы. Так вот, мне нужно создать инсталлятор, который распакует в папку указанную пользователем нужные файлы и папки. НО! Есть одна самая главная проблема, нужно чтобы при установке был выбор компонентов установки. Например, некие два файла это "Мод_1" следующие 3 файла "Мод_2" и нужно что бы пользователь ставил галочки, что ему нужно, а, что нет. Так вот, как это реализовать. Заранее спасибо. |
Справка. Секция [Files] и ее связь с секцией [Components]
Приер из инсталлятора InnoUltra: |
Gnom_aka_Lexander, извиняюсь, это мне ответ? Если нет то простите, если да, то что с этим делать и как использовать? Заранее спасибо.
|
|
Gnom_aka_Lexander, а в какое место это вставлять в скрипте и где что менять, а то вдруг что-то не то изменю. Прочтите за надоедливость, первый раз с этим столкнулся. Заранее спасибо!
|
Ооо... Как можно первый раз столкнуться с тем, с чего обычно начинают? Почитайте справку на ночь - очень просветляет.
|
Gnom_aka_Lexander,
Англоязычная версия..,пожалуйста, просто изучать конкретно нет времени, пожалуйста. Что с этим кодом делать. Заранее спасибо. |
Цитата:
|
Шапка, форума, первая строчка
Цитата:
Цитата:
|
Как сделать такой прогресс бар, чтобы на первом этапе извлекались сами файлы инсталлятора а на втором шла распаковка архивов IsDone... :sorry: Все перепробовал нехочет обьеденятся прогрессбар ssInstall и ssPostInstall, заранее спасибо...
|
Вань,
я исдан не знаю, но сильно сомневаюсь что это один прогрессбар думаю товарищъ-автор инсталла скрин которого ты предоставил просто укоротил верхний прогрессбар и разместил его на том же уровне что и второй и слева от него я уверен что поделённого на 2 части прогрессбара нет, если только ты его сам не создаёшь (пусть програмисты меня не пинают. Только-только начал паскаль изучать) |
Gnom_aka_Lexander, Ivan_009, Огромное спасибо, с компонентами разобрался, получилось!!!Ура ура!Правда с 17 раза :(.
Теперь есть ещё одна задача, все файлы допустим устанавливаются в директорию: D:\Games\game\mods\version1 как указал пользователь, затем программа выходит две папки назад, попадает в папку: D:\Games\game и в нее распаковывает ещё одну папку с файлами, а после нажатия готово открывает ее. Вроде понятно описал, возможно ли это реализовать? Я так понял это как-то в секции Tasks пишется..Заранее спасибо... |
Всем привет. У меня короче проблема при отмене/закрытии инстала. При сборке инсталятора через инно инсталятор запускается а дальше когда я например запускаю отмену то инсталятор долго не завершается не смотря на то что он в процессах не висит но ясно видно что загрузка процессора скачет из за него подскажите пожалуйста как сделать чтоб при отмене инсталятор быстро завершался?
|
SatHan, Скрипт покажи.
HElmo, Можно. Покажи структуру папок, как должно быть. |
Gnom_aka_Lexander,
Вот весь код Путь установки: D:\GAMES\World of tanks\World_of_tanks\res_mods\0.7.5, затем должно вернутся в папку World_of_tanks(не World of tanks) и туда распаковать папку из следующей дирректории: D:\GAMES\Mods, под названием Options и открыть ее. Но если пользователь выбрал другой путь, например С:\World_of_tanks\res_mods\0.7.5, тоже должно вернуться две папки назад в World_of_tanks . Заранее спасибо за помощь. |
SatHan, я так понял Вы сегодня зарегистрировались на форум, для начала для "новичков" нужен скрипт, который Вы используете...
|
El Sanchez, в этом коде компилятор не устраивает тип CallbackAddr('AddFileCallback').
(Type mismatch) Хотя если написать любой адрес ручную, то компилируется... Как тут быть? Код:
var |
|
Цитата:
|
Цитата:
Мой совет - делаешь папку по умолчанию - DefaultDirName={pf}\GAMES\World of tanks\ или лучше даже {sd}\GAMES\World of tanks\, тогда при деинсталляции будет удалена только это папка. далее раскладываешь структуру перед упаковкой, как нужно и прописываешь ее подробно в секции [Files]. Цитата:
|
Цитата:
Цитата:
Сами попробуйте запустить простой скомпилированый инсталятор инно зайдите в диспетчер задач во вкладку дополнительно и завершите инсталятор и сами всё увидите что несмотря на то что инсталятор не висит в процессах а загрузка процессора на две три секунды поднимается. задался вопрос как через секцию run перезагрузить компьютер? |
Цитата:
Filename: shutdown.exe; Parameters: /r /t 10; Flags: runhidden |
Johny777 SatHan, и если открыты окна в ворде человек карму погнет тебе :)
Код:
[Run] |
У меня проблема не большая с Splash. Сперва появляется окно выбора языка инстолятора, затем сам контур инсталятора в чёрном цвете и на нём появляется сам Splash, потом когда Splash исчезает то на инсталяторе появляется приветствие и т.д. Добавлял скрипт Splash в другие инсталяторы и такой проблемы я там не наблюдал. Люди добрые, помогите.
Вот чем я пользуюсь, через подключения модуля: |
Цитата:
Я так понимаю в Inno Setup вообще проблема с указателями )) |
|
Twoface, Код полностью с модулями в студию... :drug:
|
Ivan_009,
Отправил в ЛС. |
Johny777, R.i.m.s.k.y., Спасибо.
R.i.m.s.k.y., да это было не важно что из окон открыто. Главное было параметры shutdown в инно узнать. просто я прописывал перезагрузку как указала команда shutdown help [Run] Filename: shutdown.exe; Parameters: -r -t 5; Flags: runhidden nowait postinstall unchecked что в конечном счете у меня перезагрузка не происходила. а оказалось что в инно параметры задаются совсем другим способом. а так для надежности есть более радикальный и удобный способ. например |
SatHan, есть глобальная функция NeedRestart - почитай про нее
|
El Sanchez, в том варианте, который вы предложили, при компиляции пишет type mismatch
Вот код: Код:
var А вот так пробовал я. В этом случае компилируется, но выходит ошибка в инсталляторе "Exeption: Accsess violation at adress xxxxxxxx. Write of address xxxxxxxx Код:
var |
Цитата:
при принудительном завершении setup.tmp и setup.exe всё равно нагрузка идёт, в %temp% обнаружил папки *..tmp. в одной из них есть ещё папка _isetup в ней два файла _RegDLL.tmp и _shfoldr.dll может из за них идёт нагрузка. мож на них нада какую процедуру повесить? |
Цитата:
Цитата:
Код:
SFileSetAddFileCallback(phMPQ, CallbackAddr('AddFileCallback'), 0); |
Цитата:
|
Callback работает, но теперь возникла другая проблема )) Во время упаковки файлов в архив окно Inno Setup зависает (как будто ждёт завершения выполнения dll) и отвисает только тогда, когда заканчивается добавление файлов в архив... Информация в окне во время добавления файлов не меняется, и окошко даже нельзя двигать...
Помогите, пожалуйста, разобраться! |
Вложений: 1
Народ помогите новичку! слепил скрипт из is game script generator и решил вставить скин из isskins при компиляции выдает такую ошибку, что не так сделал?
Код:
[Setup] |
spice, в секции [code] дублируются одинаковые функции/процедуры InitializeSetup и DeinitializeSetup. Fixed version, вроде должно работать :gigi:, только секция [code]:
Код:
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); |
я не понял что ты изменил, но все равно спасибо за помощь!
помогло! |
Цитата:
P.S.: ISSJoiner из шапки должен помочь в будущем ;) |
у меня все эти программы дополнения для inno setup есть но я ими не пользуюсь(не умею) у меня inno ultra.
как ISSJoiner пользоваться не подскажешь? |
Цитата:
специально для тех, кто не любит читать, набросал. |
Спасибо большое! теперь я разобрался!
|
Вложений: 1
народ помогите плиз! объединил 3 скрипта вроде все правильно сделал, но при компиляции такая ошибка
|
что это значит?
вот скрипт Код:
; Ñêðèïò ñîçäàí ÷åðåç Ìàñòåð Inno Setup Script. |
Цитата:
|
блин а как это исправить?
|
Цитата:
В следующий раз для вставки сюда своего кода, открывай свой скрипт в блокноте (например Notepad++) и копипасть от туда сюда, а то ведь не дело видеть иероглифы подобны этим [Ia ana eiiiiiaiou oaiaeaoai?y?o ieieiaeuiui o?aaiaaieyi ea?u.']. |
ок!
|
А кто-нибудь знает, как решить такую проблему: во время упаковки файлов в архив окно Inno Setup зависает (как-бы ждёт завершения выполнения dll, которая выполняет упаковку) и отвисает только тогда, когда заканчивается добавление файлов в архив... Информация в окне во время добавления файлов не меняется, и окошко даже нельзя двигать...
Помогите, пожалуйста, разобраться! |
Вложений: 1
Посмотрите на скрин который прикрепил.
1. Как переместить слова или как цвет шрифта поменять? напишите код |
spice,
Код:
НазваниеЛейбла.Left := ScaleX(10); |
А можно по подробнее я не понимаю че за название Лейбла?
куда их пихать? |
Подскажите простой вариант распаковки внешнего архива 7z, без его копирования в темп или папку программы, если они находятся в папке Data рядом Setup-ом, а надо разархивировать в {app}\base\.
Пример моего скрипта, где с exe архивом получается, а с архивом 7z ничего не получается. (В инете все описания для FreeArc хотя пишут что для 7zip реализовано.) Код:
#define MyAppName "Распаковка внешнего архива" |
Цитата:
http://sendfile.su/663612 |
Подскажите пожалуйста что нужно зделать чтобы текструированный прогрессбар работал на ssPostInstall. Дело в том что на
ssInstall он работает а на ssPostInstall нет... :( |
Как сделать так чтобы кнопка была без надписи....
|
al1511,
Есть такая функция в IsDone, называется ISExec, упаковку в архив сделайте через неё, тогда инсталл будет откликаться на вненшии команды. так же можно сделать упаковку через библиотеку IsExec.dll от Вольта или скрипт ExecAndWait (Вроде Серёга автор, не суть), в общем вашу упаковку надо запустить в консольном режиме. Рекомендую первый вариант, тк прогрессбар будет более менее плавным (при тестовом прогоне не будет "плавности", а далее плавный). Цитата:
Ivan_009, 1. Если юзал тот пример, что тебе скидывал, то только что проверял - пб рубит норм в ssPostInstall 2. Найди процедуру SetStateNewButtons и удали от туда эту строку: Код:
with WizardForm.NextButton do begin |
Цитата:
Пример |
он у меня есть у меня ultra версия, в редакторе форм все на английском я не понимаю как с ним работать.
|
Цитата:
|
Цитата:
может быть "Cкопировать как UBB код"? |
SatHan, нет. перед копированием переключи раскладку клавиатуры на русский.
|
Всем прив, подскажите скрипт, для удаления сохранений игры, чтобы запрос появлялся перед финишным окном, а не после)))
|
MogilShik2007
Код:
procedure RD(Dir:string); ________________ Цитата:
б) ставь InnoUltra от Gnom_aka_Lexander, в нем русифицированный расширенный редактор |
он у меня и стоит! все я разобрался че там да как!
|
Snoopak96, Не работает прогрессбар хоть убей :( вот код посмотри...
|
Ivan_009,
И не будет, т.к. это PostInstall, а после установки что сделал?: Код:
ISDoneError:=false; |
Цитата:
Цитата:
|
Небольшой вопрос а можно вместо 1 шрифта загрузить например 2 своих шрифта в инсталлятор... :search:
Snoopak96, Не работает все равно... :( |
Ivan_009,
скинь в лс весь проект. |
Привет хотел попросить помощи дописать скрипт что не хватает для проверки места дело в том что у меня после смены языка пропадает данные размер игры и так далее.
вот скрин вот сам скрипт http://rghost.ru/40204994 |
vint56,
Можно упростить - но мне лень :smirk: |
накатайте мне кто-нибудь пожалуйста пример считывания ини файла в массив строк (Array of String) и последующей загрузкой данных ключей из секций, но уже из переменной
те не каждый раз обращаться к файлу как в коде над моим сообщением |
Johny777, а зачем тебе парсить инишник если есть встроенные функции?
Код:
/// в начале считали, например в InitializeSetup |
подскажите ответ на такой вопрос
имеются три игры которые расположены в C:\Program Files\Games в папках Game_X таких папок три где X цифра. каждый компонент на каждую игру. Что нужно сделать а главное как сделать чтоб если один из ключей в реестре не найден то и компонент становился скрытым? |
SatHan,
Код:
[Components] Johny777, я в таких случая тупо инициализирую в память на начальном шаге все нужные переменные, благо их немного |
R.i.m.s.k.y., не работает, пишет "Directive or parameter "Check" expression error: Can only call Function "ExpandConstant" within parameter lists".
Нашёл для себя вот такой вариант только теперь проблема в следующем когда не одного компонента нет (не найдены ключи в реестре) то инсталятор всё равно запускается. Гуру подскажите как сделать чтоб если не одного компонента нет (не найдены ключи в реестре) то инсталятор не запускался а выдавал сообщение что "на компьютере не найдено установлено игр"? |
SatHan,
Код:
Function CheckRegGame1: Boolean; |
R.i.m.s.k.y., опять проблема. когда в системе ключи присутствуют то инсталятор не запускается. Как решить проблему?
|
SatHan,
Код:
Function InitializeSetup: Boolean; |
R.i.m.s.k.y., на Result-е тот что идёт после MsgBox останавливается и выдаёт ошибку с сообщением identifier expected.
|
Цитата:
они и так инициализируются при запуске или при работе процедуры вот смотри ты 10 раз открываешь файл с жёсткого диска чтоб взять из него значение (10 значений) или открываешь 1 раз, пишешь все 10 значений в переменную массива и потом работаешь уже с переменной тк она в оперативке (в стеке кажись.) а из оперативы брать быстрее в разы чем раскручивать жд понимаешь зачем мне массив до последнего времени я обходился простой GetIniString но это малость неразумно когда нужно считывать не 1 и не 2 знчения, а больше в разы SatHan, Код:
[Setup] |
Johny777, через getIniString я ручками получаю с десяток нужных мне переменных из инишника, заношу только не в аррэй а в десять переменных и с ними дальше работаю. Я вообще не понимаю целесообразности вопроса.
SatHan, Код:
[ Code] |
SatHan,
Ну скрыть компоненты не получится, тк в инно нет свойства ItemVisible, можно сделать так как вариант: |
Цитата:
вот пример кода Run_Game_CheckBox.Checked := (GetIniString('MySettings', 'Run_Games', '', ExpandConstant('{src}\Selfish.ini')) = '1'); (скоро сам всё увидишь когда докачаешь :) ) Цитата:
ненужное действие у меня выполняется двумя ини - 10 считываний вместо одного Цитата:
Код:
[Setup] |
Snoopak96, ты в этом ошибаешься, если в моем примере выше подчековая функция вернет фолсе то в списке компонентов соответствующей строчки не будет, проверь сам ;)
Johny777, чуток осталось |
R.i.m.s.k.y., я про свойство ItemVisible, а у тебя строит компонент лист на ходу при старте, путаешь ты =) хотя и так тоже можно сделать.
|
Snoopak96, извини, протупил
|
Вложений: 1
Snoopak96, Вот глянь пожалуйста....
|
Ivan_009, что этот, что тот что прислал в лс у меня всё нормально появляется пб в postinstall, версия инно у меня 5.5.1ee1 (a)
|
R.i.m.s.k.y., опять проблема теперь если один ключ в реестре есть а остальных нет то инсталл выдаёт "На компьютере не найдено установленых игр" а нужно чтоб выдавал это сообщение тогда когда вообще нет ключей в реестре.
Цитата:
ведь работает же, только осталось пара нюансов. Цитата:
Johny777, тоже не то. |
SatHan,
т.е. тоже не то?: А по моему это тоже самое, что предлагает R.i.m.s.k.y., только упрощенно + автор Johny777 сделал не большую описку, что простительно. |
SatHan, вот в общем допилил код:
|
Цитата:
1. брался за один код а у Johny777 совсем другой (не понятный мне) 2. была та же проблема то есть " если один ключ в реестре есть а остальных нет то инсталл выдаёт "На компьютере не найдено установленых игр" а нужно чтоб выдавал это сообщение тогда когда вообще нет ключей в реестре." теперь все как нада. R.i.m.s.k.y., Johny777, Snoopak96, Спасибо вам что выручили. |
Ещё кое что. Как заставить NewStaticText1 который в TBevel-е вместо {pf}\Application отображать C:\Program Files\Application?
|
SatHan,
Caption := ExpandConstant('{pf}\Application'); |
Snoopak96,
позволю себе заметить, что функция CheckRegGame рассчитана на отправку из себя булев значений компонентам и функции InitializeSetup те если мы отправляем ей целое число 1 или 2 или 3 то она возвращает значение соответствующее существованию определённого ключа если (else) значение не равно 1, 2, 3 то встроенная переменная Result возвращает значение соответствующее существованию всех 3-х ключей те CheckRegGame(1) or CheckRegGame(2) or CheckRegGame(3) это всё нормуль, но нет смысла гонять функцию 3 раза достаточно отправить ей например CheckRegGame(777) :) SatHan, замени у себя в коде Код:
function InitializeSetup:boolean; Код:
else |
Привет, появилось пару вопросов:
Код:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); 2. Если изменить папку назначения то вся эта фигня бессмысленна, как можно это решить?))) |
MogilShik2007, помоему у тебя кнопка ) западает
2. {app}\PCGAME 1. Код:
procedure RD(Dir:string); |
Не, неканает {app}, пропускает запрос на удаление сохранений...
|
MogilShik2007, смотри. Папка {app}(папка, в которую была установлена программа) это то, что удаляется вообще по всякому. соответственно - проверяем - нету, запрос пропускается - чего не понятно?
|
Разобрался)))
|
Такой вопрос, на странице приветствия когда пишется мол будет установлена такая-то программа или игра, реально как-то название этой проги или игры своим цветом сделать?
|
MogilShik2007, Можно.
|
Елки, посмотрел этот ReDrawText, там сам черт ногу сломит(((
|
Усе, победил таки с помощью ReDrawText, оказалась отличная штука)))
Подскажите какие цвета в формате color=$FF0000 поддерживает IS, а то не все хавает. Ммм, ну и хотелось бы скрипт для полного счастья, чтобы использовать скин при деинсталляции, такой же как и при установке, а то пробовал: Устанавливаться то со скином устанавливается, а удаляться не хочет выдает ошибку((( |
Всем привет. Такой вопрос - как сделать чекбокс на последней странице с надписью "Запустить сервис?" и, если он нажат выполнить функцию
|
Цитата:
Filename: net; Parameters: {code:GetStartService}; Description: Запустить сервис; Flags: runhidden nowait postinstall runascurrentuser Возник следующий вопрос - до этого у меня есть на формак чекбокс установки сервиса. Как теперь спрятать чекбокс на последней странице если файлы сервиса не были установлены Блин, туплю, извините, 2-ой вопрос тоже решил: |
Цитата:
второй простой пример касательно доп. цветов читай http://forum.oszone.net/showpost.php?p=1885463# Yury_Prizrak, зачем тебе лишние логические скобки? можно проще а если посмотреть на то что функция FileExists возвращает function FileExists(const Name: String): Boolean; то можно вообще упростить до Result := FileExists( ConfigPathCVLService ); а можно и без функции "ServiceCheck" обратиться напрямую к чекбоксу if not Installed then ServiceCheckBox.Checked := FileExists(ExpandConstant('{app}\CVL.CvlService.exe')) else ServiceCheckBox.Checked := Installed (или True); |
Странно, с любым скриптом при использовании деинсталлятора со скином выдает ошибку, вылетает несколько сот окошек, чет ругается, заметил что-то про папку Temp, может из-за того что временная папка в другом месте?
|
MogilShik2007, точнее объясняй что и где. по возможности скрипт в студию. телепаты на каникулах.
|
Скрипты выше, то что Johny777 накидал, да и любой другой скрипт, трабла у всех одна... выбивает с несколькими сотами окон об ошибки, если получиться поймаю скрины...
+ такой вопрос, кто работал с ReDrawText как в скрипте прописать, чтоб работало на разных страницах, а не на одной? Или на одной, но в разных местах... |
Вложений: 1
Цитата:
Что-то не могу понять, какие ошибки? Вот лично проверил два скрипта оба работают и не какими ошибками при деинсталяции не страдал. MogilShik2007, Вот прикрепил архив со скриптами что выложил Johny777. У меня всё работает. Проверяй. |
Удаление работает со скином, но при установке игры, после нажатия на кнопку Готово. вылетают окошки (несколько сотен):
+ такой вопрос, кто работал с ReDrawText как в скрипте прописать, чтоб работало на разных страницах, а не на одной? Или на одной, но в разных местах... |
Цитата:
Цитата:
Переменная Windows %TEMP% стандартная, не изменял? Так же может быть чего не хватает системе или наоборот чего лишнего. Я проверял скрипты и на WXP и W7 и ничего подобного не встречал. |
Ответьте пожалуйста на вопрос.
|
SatHan,
сделал(ответ на твой вопрос - секция Files, не более) и позволил себе размахнуться(вся секция кода - расширение возможностей (опционально)) ещё дальше :) (надеюсь не зря!) пример 1: обрати внимание на это символ | пример 2(сделал как для себя бы хотел). Рекомендую: MogilShik2007, по ошибке трудно(для меня даже невозможно) определить косяк покажи лучше код с файлами может смогу исправить! |
Вложений: 1
2 SatHan, Johny777:
Системе все хватает, временная папка изменена на C:\Temp, но не думаю, что это должно сильно влиять, так как установка со скинами происходит без проблем. А скрипт конечно объединял со своим. |
Вложений: 1
2 Johny777, вот со всеми приблудами)))
|
Блин чертовщина какая-то((( А временная папка у тебя по умолчанию?
|
MogilShik2007, всё верно. После установки вываливаются несколько сотен окошек.
только ты не указал конкретно. Я же тебя русским языком спрашивал Цитата:
Цитата:
Цитата:
Там по ходу дело в совместимости скриптов. Что-то где-то не так наковырял в скрипте вот тебе и выдаёт сотни окошек. |
SatHan, посмотри скрипт если не трудно, пост 907, мож мысля какая появится)))
|
Цитата:
Смотри, если это За-комментировать то ошибок не выдаёт, скорее всего чего то не хватает только не знаю чего, мож гуру подскажут. |
Эм, в смысле закомментировать? А то я тож несилен в скриптах)))
|
MogilShik2007, Закомментировал я для теста.
Цитата:
Найти конфликт и решить его. |
MogilShik2007,
ошибки не вылавливаю но в коде у тебя ошибка нет выгрузки библиотеки отвечающей за анимацию огня будь внимательнее тк пример огня не настолько большой чтоб что-то забыть! пример: Цитата:
не менял и даже не знаю как :) ==================================================================================== Посоны! :grin: мой вопрос касательно загрузки всего ini файла в переменную с последующим считыванием из этой самой переменной всё ещё более чем в силе! http://forum.oszone.net/post-1984015-858.html прошу дать мне простой пример с которого смогу оттолкнуться |
Цитата:
P.S Лично меня и по умолчанию устраивает :tongue:. |
SatHan,
апдейт предыдущего кода: Цитата:
взял на заметку мало ли может пригодится |
Johny777, спасибо заработало, интересует:
Код:
enablefire(WizardForm.WelcomePage.Handle, 0, 0, bmp.Handle, 50); SatHan, там еще 2 переменных меняется С:\Windows\Temp )))) И еще, фон окон, можно немного сероватым сделать, скрипт есть какой нибудь простой? |
Цитата:
|
Я знаю, эт так к слову написал)))
SatHan, ты кстати с ReDrawText не сталкивался? А то не пойму как разноцветный текст на разных страницах делать))) |
Цитата:
|
El Sanchez,
Спасибо тебе большое за труды! :) Но неужели "загрузка всего ини в переменную..." не даст почувствовать особую разницу скорости обработки между считыванием строк из переменной и многократным обращением к файлу? и извиняюсь за тупой вопрос как теперь считывать значения? так не работает iFile := ParseIniFile('C:\setup\Selfish.ini'); ... No_Quit_Dialog := (GetIniString('Constructor', 'Quit_Dialog_Off', '', res) = '1'); неужели он перестал быть ини и теперь нужно искать строку Quit_Dialog_Off=1 целиком |
Цитата:
ИМХО |
Цитата:
|
SatHan, можно еще прописать все эти пути в переменную %PATH%
Но темпы желательно переносить в папки 8.3, без пробелов и русских букв. Как системные темпы, так и пользовательские. Во избежание. |
Цитата:
Цитата:
Цитата:
|
Всем привет. На днях нашел тут код как Закрепить значок на панели задач в Win7. Все получилось, кроме одного - при наличии на панели уже такого ярлыка - создается ярлык типа MPC-BE(2).lnk;
Вот сам код Код:
const Код:
if IsTaskSelected('pintotaskbar') then begin |
Цитата:
Системные переменные Переменная - Path, значение - %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem появилась необходимость к значению %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem добавить C:\Program Files\Progs В идеале при установке должно получится так %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Progs как это сделать через инно? в секции [setup] нашёл ChangesEnvironment=true только мне это мало о чём говорит. |
Цитата:
Код:
Root: HKLM; Subkey: SYSTEM\CurrentControlSet\Control\Session Manager\Environment; ValueType: expandsz; ValueName: Path; ValueData: {olddata};{app}; Flags: noerror Цитата:
|
Господа, может просветите)))
При работе с ReDrawText как в скрипте прописать, чтоб работало на разных страницах, а не на одной? Или на одной, но в разных местах... Или как по другому цвет нужных слов на разных страницах менять? |
El Sanchez,
блин чуть мозг себе не спалил нафиг :) но допер таки как использовать Код:
procedure InitializeWizard(); Цитата:
конечно смысла считывать из одной секции значение одного ключа - слишком, но для длинных ini этот код себя 120 раз оправдает ============================================================= Цитата:
на панели задач ярлыки - только иконки если ты имеешь в виду имя файла, то файл(вместе с путём к нему) к которому ты хочешь протянуть ярлык указывается в первом входном параметре функции PinToTaskbar |
El Sanchez, SatHan, я тоже поначалу так пробовал, полная фигня получается
Теперь делаю через стороннюю утилитку pathman Код:
[Run] |
Цитата:
Цитата:
|
Цитата:
пока не подумал, что не подходит тк у тебя свой тип - TIniFile и что нужна самописная функция поиска индекса Оказалось в правильном направлении подумал (радует :) ) Цитата:
ты же судя по коду уже сделал разноцветный текст на первой странице вот держи у меня есть другой пример отрисовки текста http://sendfile.su/668402 попробуй с ним используй функцию function WriteText(s: string; Left, Top, Right: integer; Parent: TWinControl): TLabelString; .............название(твой текст; слева, сверху, ширина; родитель(например WizardForm.WelcomePage): Цитата:
поиграйся с настройкой - узнаешь вот держи набор китайских библиотек с примерами http://sendfile.su/668398 |
Johny777,
Цитата:
|
Цитата:
смотри скрин у значков в панели задач (куда функция El Sanchez-а их закрепляет) нет имени |
Цитата:
|
|
SatHan,
только что прикрепил PinToTaskbarWin7('C:\hl2.exe') - просто положил экзешник в C всплыла подсказка "Half-Life 2" хех даже винда знает об этой игре! :) Цитата:
|
Цитата:
|
Цитата:
дата есть вот изучай |
Johny777, спасибо, а не подскажешь как прикрутить огонь на последнюю страницу?
|
Нашел косяк в скрипте Закрепления на панели задач - если в х64 битной системе и файл расположен по пути "C:\Program Files\..." - то значок программы закреплаяется, но если запустить программу - создается еще один значок, уже запущенной задачи на панели задач, если закрепить из пути "C:\Program Files (x86)\..." - то все ок. Разрядность программы при этом не имеет значения.
P.S. - как верно закрепить нашел, вот кусок Код:
if IsWin64 and (Pos (ExpandConstant ('{pf64}\'), Filename) = 1) then begin P.S. - все разобрался. |
Как наложить кнопки свернуть и закрыть через ботву...Подскажите кто знает...
|
изменил код из шапки "поиск по маске" под свои нужды
кому пригодится забирайте: Ivan_009, извиняй ботву не знаю :( |
Как наложить кнопки свернуть и закрыть через ботву...Подскажите кто знает...
http://rghost.ru/40324331 |
Ivan_009, vint56,
|
Всем привет, что-то не получается с компонентами.
Но при запуске инсталлятора, просто выбор: полная или выборочная, но нету где что отмечать галочками. Справку читал, вроде все как там делаю...Помогите.. |
HElmo, а так?
Код:
[Types] |
Gnom_aka_Lexander, Точно, совсем забыл!! Спасибо. А можно где-нибудь прописать, что бы не создавался деинсталлятор? Заранее спасибо.
|
HElmo,
Вот держи рабочий код сразу на два твоих вопроса, и даже больше чтобы несколько раз дверью не скрипеть Код:
//универсальная переменная названия дистрибутива Сообщение помогло? Жми "полезное сообщение" внизу поста |
R.i.m.s.k.y., спасибо, очень помог!!! Все получилось, рад, что есть такие люди.
|
Как можно решить проблему с текструированной кнопкой отмена через ботву... Дело в том, что когда я переключаю на ssPostInstall
невозможно отменить установку... Вернее можно но только один раз :o Вот код наложения кнопок... |
HElmo, да не за что, это я тут поднаторел, вот должок возвращаю ;)
|
Johny777, Ну да ошибочка вышла.
Вот он скрин если создать ярлык на рабочем столе и обозвать любым именем после закрепить на панели то при наведении такое же имя будет и на панели. насколько понял нужно что-то вроде {#выделил красным} Код:
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon Если код каким то образом находит имя и приписывает его к ярлыку - это конечно не понятно от куда берёт. А вот как его задать на своё (Например я хочу чтоб hl.exe назывался не Half-Life а Half-Life-Моя Игра). Как это сделать? В коде ничего знакомого не нашёл. |
Johny777 как через TextModule на последней странице текст возле чекбокса разрисовать, мол запустить игру такую-то, а название игры своим текстом?
|
Ещё одна небольшая проблема:
Нужно включить все вложенные папки, сделал вот так вот.. Код:
Source: "D:\GAMES\World of tanks\World_of_Tanks\res_mods\0.7.5\vehicles\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: Tankmodels |
Добрые люди!
вот намутил код при нажатии на айтем всплывающего контекстного меню его название копируется в соответствующий эдит но иногда нужно приписать соответствующее число (как с текстом +fps_max <число>) для этого выполняется функция Param_Num не знаю как не допускать ввод в этот самый эдит букв например через в OnKeyPress). Там могут быть только целые числа (иногда любое чисто кроме нуля а иногда именно что 0 или 1 или 2 или 3) в общем возможности функции пока что хромают :( вот код: ==================================================================================================== ======================================= HElmo, может так? (подчеркнул правку) Source: "D:\GAMES\World of tanks\World_of_Tanks\res_mods\0.7.5\vehicles\*"; DestDir: "{app}\vehicles"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: Tankmodels ==================================================================================================== ======================================= MogilShik2007, путём создания кастомнго чекбокса (тк с чеклистбоксами я ещё, образно говоря, не бухал :) ) ==================================================================================================== ====================================== SatHan, не думаю что функция рассчитана на протягивание ярлыка от ярлыка (как бы бредово это не звучало) те в экзешнике может и есть инфа благодаря которой мы имеем правильное назвния а в ярлыке нет |
Цитата:
Код:
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon Код:
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Half-Life - Моя Игра"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon |
Цитата:
Цитата:
Цитата:
|
Я её тебе тоже для примера написал...
#define NameQuickLaunch "Half-Life - Моя Игра" ...Microsoft\Internet Explorer\Quick Launch\{#NameQuickLaunch}... |
Цитата:
Цитата:
Цитата:
Цитата:
Код:
if Pos(Key, '0123456789'#8) = 0 then Key := #0; |
Цитата:
Поправьте меня, если я не прав. |
Как сделать так чтобы если папка не пустая в которую устанавливается игра то выводилось сообщение типа:
Папка установки не пустая пожалуйста выберите другую! |
Ivan_009,
Код:
[Setup] |
Вложений: 1
Помогите со скриптом, чет с чекбоксом не получается:
не отображается текст рядом с чекбоксом и не видит .ехе |
Вложений: 1
Как сделать такие края через ботву...Если можно пример...Заранее спасибо...
|
Цитата:
Цитата:
|
nik1967, мне нужно чтобы с прозрачностью... :yes:
|
Вложений: 1
Как текструировать кнопку при нажатии на которую появлялся логотип png... :search:
|
помогите дописать пожалуйста действие к нопкам Ok и Back
|
vint56, зачем усложнять? Проще сделать через дополнительную страницу.
P.S. Закос решил сделать под наш инсталл? |
Почему при запуске инсталятора он создает две папки Mods, как мне надо и Modsscrips, в которую распаковывает эту папку. Почему так?
Код:
Source: "D:\GAMES\World of tanks\World_of_Tanks\res_mods\0.7.5\system\*"; DestDir: "{app}\system"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: Skybox |
Johny777, твой предыдущий скрипт выдает ошибку вместе с моим(((
|
|
SatHan,
Цитата:
в таймере выполняется процедура Timer1 5 - частота обновления таймера (в миллисекундах (в 1 секунде 1000)). Иначе говоря выполнения указанной процедуры в самой процедуре стоит ....панель.сверху := панель.свеху + 3 пикселя SettingPanel.Top := SettingPanel.Top + ScaleY(3); те мы каждые пять миллисекунд двигаем панель на 3 пикселя MogilShik2007, Код:
procedure CurStepChanged(CurStep: TSetupStep); |
vint56,
|
Цитата:
Функция GetText1 вернёт пустую строку, при таком варианте GetText1('<tag>', '</tag><tag>Test</tag>', '</tag>'), я бы написал её так: |
Serega,
вот спасибо! правда Inno ругалась на отсутствие двоеточия поменял 0..9: на '0','1','2','3','4','5','6','7','8','9': Цитата:
дело в том что не совсем известно каким будет закрывающий тег это может быть - (для например -dev) или + (для +cl_chowfps) при использовании с предыдущим кодом возвращает 0 :( может можно по другому ? лучший вариант :) : заюзать Trim и искать после заданного слова всё что там находится вплоть до + или - тк все параметры с них и начинаются +fps_max60-console - возвращать 60 из между +fps_max и - -dev-console возвращать пустую строку (у параметра dev может не быть значения а может быть 1 или 2) весь этот поиск значений нужен мне тк у меня реализовано следующее если во время работающего инсталла вводить значения например +fps_max 60 то 60 пишется в переменную а вся строка в эдит если ввести +fps_max 50 то слово и значение удалится и заменится на новые но когда текст в эдите при запуске уже есть я не могу(в отличии от слов) удалять значения пока они не будут найдены а с поиском между параметром целиком и минусом или плюсом следующего параметра можно будет даже выловить название карты +map MyMapName -console вот ранняя версия целевого кода для наглядности |
Доброй ночи. У кого есть скрипт для растягивания картинки на первую и последнюю страницы. и если можно скрипт для вставки скина.
|
LinkOFF,
простое растягивание картинки версия с прозрачными лейблами в шапке под названием "Картинка на страницах инсталлятора" скин для инсталлятора и деинсталлятора был не так давно в моём сообщении в этой ветке листай назад и найдёшь! |
LinkOFF, здесь было.
Цитата:
|
|
Цитата:
P.S. При проведении тестов на скорость работы функции, обратил внимание на интересную вещь. В анси версии компилятора, работа со строками происходит приблизительно раз в 10 быстрей юникодовой версии... |
Цитата:
но извратившись(удалил все пробелы) сделал так: возвращает нужное число Цитата:
Цитата:
те обработка текста сложнее и выделение оперативки больше? |
Как сделать деинсталятор в стиле инсталлятора на ботве.. На примере скрипта L.A. Noire.
Подскажите пожалуйста, пробовал не получается. :( |
народ подскажите как убрать вот это
|
LinkOFF если я тебя правельно понял ты показываеш на Bevel1
WizardForm.Bevel1.Hide; |
vint56, о спасибо. а не знаешь как из верхнего левого угла иконку убрать?
|
Ребят вот собрал скрипт из нескольких примеров можете посмотреть может мусора полно
чегото длиный зараза вышел http://rghost.ru/40458802 |
wertulll, длинный из-за isdone. а так все норм
|
в этом скрипте почемуто не затекстурировалось окно ( состояние деинстоляции) можно его какнибуть отключить?
|
Цитата:
Код:
function GetValue(const szText, szParam: String): String; Цитата:
|
Цитата:
Цитата:
Код:
MsgBox(GetValue('+fps_max60-console', '+fps_max'), mbInformation, MB_OK); |
Цитата:
|
El Sanchez, спорить не буду, взял пример от сюда:
Цитата:
|
Цитата:
Цитата:
мой косяк пробелы быть должны между параметрами ком строки и значениями. Везде! в противном случае они будут являться тарабарщиной которую двиг игры не сможет прочитать при этом жутко ругаясь поэтому сделал вот такую вот функцию (вроде работает но как-то медленно) но почему-то в параметр - hideconsole записывается как -h ideconsole вот код: кажись проблема в том что есть параметр -h и есть параметр -hideconsole который в начале тоже имеет -h подскажите пожалуйста как это поправить и можно ли как-то ускорить работу функции InserSp? также порывшись на форумах по дельфи улучшил функцию проверки строки на целое число и кому надо функция получения разрешения монитора (верт., гор.) и частоты обновления (мне нужна для +fps_max и для -refresh и других параметров) Цитата:
Цитата:
предстоит много работы но теперь у меня есть всё для того чтоб завершить код |
Цитата:
Цитата:
1). CheckListBox со всеми параметрами. 2). Если у параметров предусмотрены значения, напротив соответствующий Edit. При создании чекбокса последним параметром AObject функции AddCheckBox укажи этот Edit. Позже, когда будешь считывать состояния чекбоксов (читай - параметров для результирующей комстроки), наличие объекта будет говорить о том, что у параметра есть значение, которое нужно тоже считать. Цитата:
Цитата:
|
Здравствуйте. Использую этот пример, чтобы докачать необходимые файлы из интернет. Всё работает нормально, но есть одно но. Если во время скачивания файла пропадает соединение с интернет, то выскакивает куча ошибок. Установщик начинает сильно ругаться на функцию DownloadProgress, так как связь оборвалась, а он продолжает пытаться считывать информацию. Подскажите как это исправить, а то после этого установщик возможно закрыть только принудительно.
|
Цитата:
Код:
finally Код:
finally |
подскажите пожалуйста как исправить этот баг на окнах
|
Цитата:
|
Цитата:
чтобы было так |
El Sanchez, Благодарю вас, на этом этапе ошибки больше нет.
Прикрутил к скрепту Cancel Button, а то получается как-то... хочешь не хочешь - качай! На кустомной кнопки отмены прописываю: FStream.Free; WizardForm.Close; Если во всей установки: Confirm:= False; то всё просто замечательно! Но если: Confirm:= True; ругается на эту строчку: FStream.WriteBuffer(fBuf, lpdwNumberOfBytesRead); Возможно ли как-то откатить установку без ошибок, но с живым Confirm? |
привет всем.
есть у меня ключ Код:
[Registry] Код:
[#Code] |
Доброго времени суток.
Недавно загорелся идеей создать репак игры, все шло хорошо до того момента когда понадобилось в ini файле игры прописать путь до нее самой, но при этом чтобы не была указана буква диска. Нужно чтобы значение ключа принимало примерно такой вид: Код:
IDPath=\Game\Нэнси Дрю. Секреты могут убивать Код:
[INI] |
AlexLAN, попробуйте:
Код:
[Setup] |
Цитата:
Код:
while (InternetQueryDataAvailable(hFile, lpdwNumberOfBytesAvailable, 0, 0) and (lpdwNumberOfBytesAvailable > 0)) do Код:
procedure CancelButtonOnClick(Sender: TObject); Цитата:
Код:
procedure NewButton1Click(Sender: TObject); Цитата:
Код:
function CutString(CutStr: String): String; |
El Sanchez
Спасибо, строка создалась верно. Mailchik Ваш способ не пробовал, но думаю что он тоже будет рабочим. Спасибо за уделенное время =) |
El Sanchez, Спасибо. то что нужно.
подскажите пожалуйста. как заставить Код:
[Run] |
Можно мне пожалуйста пример заполнение массива записей именами файлов найденными по маске с последующим поиском имён но уже из массива (не статичный массив, тк файлов неизвестно сколько)
если по маске ничего не найдено то не заполнять массив (вообще никаких действий) короче говоря записать в массив все файлы(их имена), которые удовлетворяют маске поиска Цитата:
должен заметить что криво работает с нулём :( откатился к этой: Код:
function IsInt(const sTestStr: string): Boolean; Цитата:
Цитата:
============================================================= SatHan, Чтоб мне не спороть чушь: вроде для этого используются хуки. Могут быть слышны маты антивиря поставь инно ультру и в \Inno Setup 5\Scripts\WindowsHook есть пример |
Вложений: 1
Как сделать чтобы при нажатии на кнопку появлялась форма png...Заранее спасибо...
|
|
Johny777, Спасибо... А как сделать чтобы эта картинка была строго по инсталлятору...
|
Johny777, маладца! Я тоже знаю, что совсем не это человеку нужно, ну да ладно, сам хотел приколоться :)Ivan_009, в обработчик кнопки вешаешь не сплешь а функцию ImgLoad из botva2.dll. в ней-же и укажешь нужные тебе размеры относительно инсталлятора.
|
Gnom_aka_Lexander, а как сделать чтобы картинка закрывалась при нажатии на кнопку...
|
Johny777, есть. он идет вместе с библиотекой.Ivan_009, ImgLoad делаешь сразу, а в обработчике используешь ImgGetVisible, для проверки и ImgSetVisible для управления примерно так:
Код:
if ImgGetVisible(img) then ImgSetVisible(img, false) else ImgSetVisible(img, true); Код:
case ImgGetVisible(img) of P.S. и да, пишу по памяти, возможны грамматические ошибки. |
Gnom_aka_Lexander, У меня почемуто ошибка....
|
Ivan_009,
ImgGetVisibility ImgSetVisibility А открыть botva2.iss и посмотреть процедуры - не вариант? |
|
nik1967, чет нехочет закрыватся картинка открыватся открывается а закрытся не хочет... :(
код procedure RepackButton(hBtn:HWND); begin case ImgGetVisibility(Logo) of true : ImgSetVisibility(Logo, false); false: ImgSetVisibility(Logo, true); end; ImgApplyChanges(WizardForm.Handle); end; Logo:= ImgLoad(WizardForm.handle, ExpandConstant('logo.png'), ScaleX(0), ScaleY(0), ScaleX(700), ScaleY(365), True, True); ImgSetVisibility(Logo, false); hRepackBtn:=BtnCreate(WizardForm.Handle, ScaleX(9), ScaleY(363), ScaleX(29), ScaleY(35), ExpandConstant('about.png'), 5, false); BtnSetEvent(hRepackBtn,BtnClickEventID,WrapBtnCallback(@RepackButton,1)); BtnSetCursor(hRepackBtn,GetSysCursorHandle(32649)); Gnom_aka_Lexander, Спасибо все заработало... :yes: |
Ivan_009, я это для кого писал?
Цитата:
Код:
Logo:= ImgLoad(WizardForm.handle, ExpandConstant('logo.png'), ScaleX(0), ScaleY(0), ScaleX(700), ScaleY(365), True, True); |
Подскажите, пожалуйста. Как привязать кустомные Check Box к одному из компонентов. То есть, если кустомный Check Box выбран, то становится выбранным и компонент?
|
в обработчике чекбокса пишешь:
Код:
cese твой Чекбокс.Checked of |
Цитата:
Цитата:
ещё примерчик слишком большой и многого не понятно. может есть рабочий по меньше примерчик? подскажите как сделать чтоб вместа галочки 'создать ярлык на рабочий стол' при переходе на страницу готовности всплыло сообщение 'создать ярлык на рабочем столе?' и кнопки 'Да' 'Нет'? |
|
Цитата:
Код:
TMSG = record нужно http://forum.oszone.net/post-1993713-1015.html Цитата:
Код:
[Tasks] |
SatHan,
Вариант номер один, мне не нравится, но соответствует поставленому тобой условию: Второй вариант - я считаю его более правильным. Запрос будет во время установки, непосредственно в момент создания ярлыков. естественно, задачу на создания ярлыка нужно удалить. |
Цитата:
_____________ Tco 03, вот так можно узнать номер компонента по его имени или наоборот - по номеру узнать название Код:
... |
А как сделать так, что бы на 32-битной системе установился один файл, а на 64-битной другой?
|
apozlevich, встроенная функция IsWin64 на файле, который под 64 стравишь Check : IsWin64 , который под 32 - Check : not IsWin64
|
Gnom_aka_Lexander, спасибо! Многого же нет в официальном FAQ о_О
А как сделать так, что бы если выбран компонент, менялась директива Setup (например Uninstallable) и запрещались иконки и записи в реестр? Еще вопрос: как сделать так, что в зависимости от разрядности процессора (32-bit или 64-бит) меняется путь к файлу для ярлыков? Можно ли поступить так же, как и с файлами? |
Цитата:
Цитата:
_______ У каждой секции, кроме кода, есть свойство Components Можно комбинировать, к примеру Components: not a; или Components: a and (not b); Ты бы код выложил так проще будет хелпать чем сферические примеры рисовать |
Цитата:
Цитата:
Цитата:
Цитата:
|
Здравствуйте. Нужно сделать чтобы перед появлением WizardForm появлялась, например Forma1, и только после ее закрытия появлялась WizardForm
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Возможно ли сделать так чтобы при запуске инсталлятора появлялось сообщение о выборе оформления одного или второго вида.... PS У меня инсталл в двух разных оформлениях нужно сделать так чтобы пользователь сам выбрал какое оформление ему использовать...Подскажите если кто знает как это реализовать...Заранее спасибо за любую помощь... :dont-know
|
Ivan_009, складывается ощущение будто инсталл важнее инсталлириуемой проги
Что есть глюпость. Цитата:
б) Скрипт ты пишешь для себя сам. |
Цитата:
|
Цитата:
Ivan_009, очень просто. создаешь булевую функцию, которая отрабатывает на запуске, и исходя из ее результата используешь то, или иное оформление. если вариантов больше двух, то можно не булевую, а целочисленную. по моему это логично, само в голову просится сразу. |
Gnom_aka_Lexander, Примерчик не даш пожалуйста... :)
|
Ivan_009,
Код:
[Setup] |
Цитата:
пример 2: в этом примере продолжению выполнения процедуры не даёт команда форме ShowModal; Ваня! для тебя родимого как вариант :) если б делал выбор стилей сделал бы так: |
подскажите плиз что куда прописать
http://img837.imageshack.us/img837/259/87614951.jpg нужно скрыть что куда распаковывается и оставить лишь надпись "Распаковка файлов..." и ещё http://img337.imageshack.us/img337/7807/86402742.jpg как надпись сделать другим цветом, уж больно блёклая |
Цитата:
Код:
procedure InitializeWizard(); |
Как текструировать прогрессбар на деинсталляторе через ботву если можно пример... :) Заранее спасибо за помощь...
|
привет. есть у меня дополнение Update_1.6.2 к программе. которое выполняется через секцию [run].
Код:
[Run] |
SatHan,
я б так сделал: Ivan_009, Посмотри. Я тебе на предыдущей странице код намутячил |
Johny777, А для этого примера как сделать?
|
Вложений: 1
Всем доброго времени!
Люди знающии как файл "TC.xxx" в папке "{app}\Other" ассоциировать с иконкой "Icon.ico" в папке "{app}\Icons" после завершения установки! |
Dima2009, что ты понимаешь под набором словей "файл ассоциировать с иконкой"?
|
Чтобы значки у файлов с расширением ".xxx" стали как у иконки в папке "{app}\Icons"
|
Dima2009,
Код:
[Setup] |
Вложений: 1
Ещё вопрос, встречал интсталлятор который без файла "ярлык интернета" в одной папке пишет.
Отсутствуют некоторые файлы инсталлятора! Установка отменена. Как самому так сделать? |
Dima2009,
Код:
[*Code] ______________ Что-то я подзабыл какие слова: а) прекращают итерацию цикла и переходят на следующую итерацию б) завершают цикл совсем досрочно в) завершают функцию/процедуру |
Ivan_009,
описание использования читай! вот упрости функцияю, а то у меня малость запутано с этим нулём чтоб вместо стиля по умолчанию - 0 или 1 было 1 или 2 впиши в функции заместо ItemIndex := DefStyle; это ItemIndex := DefStyle - 1; и в первом параметре отправляй стиль по умолчанию (выбранный по умолчанию айтем комбобокса) те для стиля 1 - AskForStyle(1, ... для стиля 2 - AskForStyle(2, ... я ввёл в ф-ю "стиль по умолчанию" тк у тебя 100% один из двух стилее более рекомендованный и чтоб он был заранее выбран при первом запуске |
Вложений: 1
Цитата:
|
Dima2009, скобка лишняя, две открываются и три закрываются
|
Цитата:
|
Цитата:
R.i.m.s.k.y., Dima2009, можно записать покороче (спасибо El Sanchez-у) :) тк FileExists возвращает булев значение которое можно напрямую передать в понимающий только эти значения в функции InitializeSetup зарезервированной переменной Result Код:
function InitializeSetup(): Boolean; |
Johny777, При нажатии на отмена вот такая ошибка...
|
Johny777, да можно и так, только вот бывает глюк что без явного Result := True инсталлер самозакрывается.
Поэтому во избежание я всегда явно указываю где False а где True Dima2009, пятницо, сам понимаешь ;) Код:
[*Code] |
Вложений: 1
R.i.m.s.k.y., Johny777 - Спасибо вам за помощь!
А реально написать код деинсталлятора как у NSIS |
Люди!!! Подскажите, пожайлуста как создать такой инсталятор
|
вот задача
Код:
[Files] Java(TM) Platform SE 6 Update 35 для x86 систем Java(TM) Platform SE 7 Update 7 для x86 систем и это правильно, но нужно при выборе одной версии, запретить установку другой т.е , чтобы невозможно было поставить чекбокс на обе сразу помогите плиз |
ispolin, читай в хелпе про флаг exclusive
Код:
[Components] |
Здорово!
задача посложнее Код:
[Files] http://forum.oszone.net/thread-46682.html |
ispolin
a) не надо ставить фреймворки 1-3,5, длостаточно поставить оригинальный .Net frameWork 3.5SP1, в нем уже содержатся все предудыщие пропатченные до SP2 б) пиши в RUN несколько строчек с нужными экзешниками с флагом waituntilterminated, инно выполняет скрипт сверху вниз. Этот флаг и так задан неявно пока не поставишь флаг shellexec |
Всем привет. Подскажите, могу ли в функции
Код:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); Код:
if IsTaskSelected('pintotaskbar') then Заранее спасибо. El Sanchez Вот окончательный мой код, работает и на х86 и на х64 системах, устанавливается и удаляется с таскбара корректно. Спасибо за помощь Код:
// thank for code to "El Sanchez" from forum.oszone.net |
Вложений: 1
Цитата:
такой вопрос. как сделать чтоб инсталятор обнаруживал запущенную программу и если она запущена то инсталятор выдал сообщение с предупреждением и закрылся? Цитата:
взято отсюда то что в первом посте. в вложении прикрутил. |
Цитата:
|
А можно ли отрезать от страницы, к примеру SelectDirPage, маленький кусок размером, к примеру 190*30? Просто мне на этом месте InnerPage нужна, SelectDirPage загораживает!!! Спасибо!
|
Цитата:
ну да ладно Цитата:
работает так ищем сначала файлы по расширению (в данном случае .exe) используя имена файлов добавляем эти самые имена в цикле в чеклистбокс состоящий из одних чекбоксов имя файла = имя чекбокса тут же это имя файла и путь пишется в статичный массив записей длиной в 201 элемент (извиняй. Здесь подошёл бы лучше динамичный, но я только начал знакомится с массивами) те у нас например снаружи 10 экзешников(апдейтов) = 10 чекбоксов = 10 записей в массиве(в массиве с полными путями) ну и на этапе утановки каком хочешь мы в зависимости от отмеченного чекбокса(-ов) запускаем тот или иной экзешник код: Цитата:
оба кода возвращают булев значение попробуй ка сам на основе этого сообщения с кодом и функций из шапки сделать себе пример http://forum.oszone.net/post-1996300-1067.html |
Цитата:
на большее мозгов не хватает.это по крайне мере лучший вариант не устраивает ISTask.dll. хотелось бы без него обойтись еси можна. |
Цитата:
Код:
const |
R.i.m.s.k.y., Johny777, Спасибо.
R.i.m.s.k.y., ничево себе сколько кода :o. хотелось как лучше а получилось как всегда :sorry:. ладно я тада сам попробую что нибудь скумекать. |
SatHan, CTRL+C CTRL+V
|
Цитата:
сделать тоже самое но без использования ISTask.dll. |
Цитата:
б) без использования ISTask.dll шонитаг? А ты думал одной строчкой все сделать хорошо? |
Цитата:
|
SatHan, поменьше, от El Sanchez'а вроде:
|
Mailchik SatHan, пример хороший только как пример работы с WMI
На затвиканных вендах и говносборках этот вариант не работает тк в них убит наглухо WMI. Ошибка SwbemLocator: not found. Плавали, знаем |
Mailchik, Спасибо.
много чего уж перепробовал, но оставил этот, так как код короче всех. потому шансов на ошибки мизерный. |
SatHan
Цитата:
C использованием IsTask можно нарваться на параноидальный антивирь который блокирует вызов сторонних неизвестных неподписанных библиотек и dll (IsTask в их числе, ога), как следствие получить в инсталлере "Ошибка вызова xxx.dll" и краш инсталлера. Самый рабочий вариант в моем посте. Не помню кто его мне накидал, или Serega или El Sanchez |
Цитата:
|
Цитата:
посоветовал собрать на этом коде говорит можно но помогать не будет. хочет чтоб я сам разобрал и посоветовал мне внимательно справку почитать. |
Johny777, Да не надо, сделал уже по-другому!
|
Цитата:
Цитата:
|
И последний (я надеюсь) вопрос! У меня есть много файлов которые извлекаются в папку {tmp}, естественно они имеют размер и когда на странице выбора компонентов сняты все галочки с компонетов (устанавливать нечего), то ComponentsDiskSpaceLabel выдаёт размер временных файлов, так как мне обнулить это, когда невыбран ни один компонент?
|
SARATOVSKY, не распаковывать эти файлы из секции [Files]. Тоесть, убрать с этих файлов Destdir : {tmp};, оставив Flags : dontcopy; Это нормальное явление, даже зубры программирования допускают эту ошибку. Единственное - нужно не забыть распковать эти файлы в коде, с помощью ExtractTemporaryFile, перед использованием. И неплохо удалять их после использования самостоятельно, с помощью DeleteFile поштучно, либо с помощью DelTree(ExpandConstant('{tmp}', True, True, True); всю временную папку инсталятора целиком на выходе, поскольку я начал замечать за инсталлом на инно косяк с неудалением временной папки время от времени.
|
SARATOVSKY, Gnom_aka_Lexander,
Есть антибаг: к строчке с Check вычисление места не применяется Код:
[Files] |
R.i.m.s.k.y., неправильное решение в данном случае. файлы которые нужны инсталлу - они нужны ему сразу. Destdir : {tmp}; - распаковывает их на этапе установки, однако, поскольку они уже распакованы, поскольку инсталл-то работает, ведь? то это действие уже в корне неверно, и писалось об этом неоднократно, и люди тупо продолжают совершать эту ошибку.
|
Gnom_aka_Lexander, Не понял последовательности твоих мыслей и в чем ошибка.
Речь шла о том чтобы место не подсчитывалось для определенного файла, если файл нужен раньше секции Files - тогда да флаг dontcopy + ExtractTemporaryFile. И в CurStep=ssDone дежурный DelTree(ExpandConstant('{tmp}', True, True, True); |
R.i.m.s.k.y., может, конечно, зря я включил свою телепатию, но почемуто кажется мне, что не зря. файлы, которые нужны ему в темпе - файлы оформления инсталла, просто исходя из предидущих вопросов заключаю (да-да, телепатия - не более, чем логика) и нужны они сразу, посему - никаких DestDir : {tmp};, строго flags : dontcopy плюс ExtractTemporaryFile.
P.S. и да, сочетание DestDir : {tmp}; flags : dontcopy я видел у людей очень авторитетных, из чего могу заключить, что это можно не считать постыдной ошибкой для новичка :teeth: P.P.S. Цитата:
|
Теперь всё, :) всем спасибо!
|
El Sanchez,
помню спрашивал как быстро определить размер папки (те для меня пример ...\Inno Setup 5\Scripts\Dobrov\DirSizeCal.iss работает слишком медленно) нашёл пример использующий объект FileSystemObject http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx на форуме http://forum.vingrad.ru/forum/topic-84976/unread-1.html результат - функция (здесь вывод в мегабайтах под мои нужды) : :) Код:
[Setup] более наглядный пример: но вот при попытке посчитать C:\Windows вылетает с ошибкой на Result := oFS.GetFolder(path).Size div (1024*1024); может папка слишком большого размера и он не может посчитать или я функцию криво записал с другой стороны папку с видео размером больше 250 гигов посчитала корректно и тоже быстро в общем хотелось бы узнать в чём причина ошибки ну и как следствие - улучшение/исправление в качестве производных: размер файла: версия файла: получение буквы жёсткого диска на которм лежит файл: генерирование уникального имени папки для использования её в %Temp% альтернатива функции DirExists: проверка наличия жёсткого диска по букве: |
привет. при установке извлекаются некоторые файлы. из них exe bmp итд. скажите. можно сделать чтоб они работали внутри инсталятора. или хотяб брались из файла x.tmp который извлекается в %temp% а не в чистом виде?
|
Цитата:
1. Проверяй в функции наличие папки. Исключение как раз из-за этого. 2. Размер Integer мал для "толстых" папок, нужно, например, Extended. Код:
function GetFolserSize(path: String): Extended; |
SatHan,
|
Цитата:
Код:
procedure MoveFiles(SourceFolder, Mask, DestFolder: String); |
Ктонить может показать пример кода, который бы делал так чтобы при наведении курсора на определённый компонент, возникал Hint (при том для каждого компонента свой)?
|
Raf-9600, как-то так, только мне не очень нравится, как это работает, может старшие товарище подскажут, как сделать лучше.
Скорей всего на стандартной версии не будет работать. |
Цитата:
|
Цитата:
|
Цитата:
Я бы ещё хотел узнать, можно ли сделать так, чтобы текст определённого Hint'а менялся в зависимости от выбранных компонентов? Т.е. чтобы допустим если выбран компонент "ext\u" то у "ext\a" подсказка менялась на другую? |
Raf-9600, тот же, от Шегората:
|
привет.
Цитата:
|
|
Можно ли как-то обойти окно выбора языка при старте установщика, задав "насильно" устанавливаемый язык?
|
R.i.m.s.k.y., только с опорой на язык системы, больше никак.
Код:
[Setup] |
Имеется
Код:
[Setup] |
R.i.m.s.k.y., поставьте английский первым в списке, то есть:
Код:
[Setup] |
Цитата:
|
Цитата:
Что будет если установщик запустят на бразильской или китайской системе? |
R.i.m.s.k.y., можете сами проверить. панель управления -- часы, язык и регион -- язык и региональные стандарты -- формат.
я думаю вы имеете в виду язык самой системы, но и в том случае должен сработать. из справки: Код:
3.Если ни один не найден, первый указанный язык в секции [Languages] принимается языком по умолчанию. |
Цитата:
Цитата:
Код:
[Setup] Код:
[Setup] |
Respin, так веселее, я думаю - зачем лишний раз обращаться к одному и томуже. если все надписи делать таким образом, то придется кучу времени потратить на оптимизацию, поэтому начинать нужно сразу.
|
Цитата:
"Программа установит [name/ver] на Ваш компьютер"... Вообщем кто как хочет, пусть так и делает. Главное суть вопроса. |
Respin, да при чем тут фантазия? Запусти свой вариант с прописью для каждой надписи и просмотри на скорость его выполнения. в любом случае, единственный правильный вариант - тут. Любой другой способ ведет к потерям производительности и к совершенно ненужным телодвижениям - зачем писать километр кода, который будет отнимать процессорное время для того, что и так делается самим инсталлом, при указании ему пары параметров?
|
SoftLine, не работает. что мне с этим делать?
подскажите что можно сделать чтобы подсказка плавала за курсором мыши в области компонента? |
del
|
Цитата:
Есть множество украинцев устанавливающих украиноязычную винду, и я уверен, что подавляющее большинство из них русский понимают гораздо лучше, чем английский. |
Raf-9600, здровую критику воспринимаю здраво. Так бы я и рассудил и оставил выбор языка руками.
Но пришлось делать одном скрипте два инсталлера (разный набор компонентов): один рус/англ с выбором, и один рус/англ-автомат без выбора языка. "Автомат"предназначался для non-exUUSR и вообще отправился в Южную Омеригу на бета-тест :) Релизов это не касается |
как сделать чтобы при выборе русского языка в реестр вписывался русский язык,а при английском английский?
|
insombia,
Код:
[Languages] |
Всем привет.
Дайте пожалуйста пример Сплэш картинки png для скрипта. Заранее благодарен. |
Цитата:
|
как называется флаг для компонентов что его можно снять и поставить(галочка)
|
insombia,
WizardForm.ComponentsList.Checked[N] := True - выбрать компонент номер N WizardForm.ComponentsList.ItemEnabled[N] := False - сделатьк компонент номер N неактивным (будет засвечен и недоступен для выбора) |
R.i.m.s.k.y. а по проще можно?типа как Flags: Exclusive
|
insombia,
Цитата:
|
нашел disablenouninstallwarning называется
|
|
ой checkablealone,перепутал
|
Gnom_aka_Lexander, El Sanchez, ваши выкатывающиеся панели очень классные, но есть один недостаток - после завершения таймера не выгружается оперативка
те после каждого выката прибавляется по 4кб при закате по 4 = 8кб на один закат/выкат поэтому я прикинул создать похожий код без использования таймеров (на основе циклов с задержкой) но проблема с закатом во время выката и наоборот вот ранняя версия (пока что ещё примитивная) просьба: кто-нибудь помогите пожалуйста исправить глючность прерывания движения |
Johny777, можно проще - не останавливать, а убивать таймер, тогда и не будет утечки памяти. а то получается на каждом выкате - закате создается новый таймер, отсюда и утечка.
|
Gnom_aka_Lexander,
он и убивается твой код: El Sanchez-а утечка тем не менее имеет место :( к тому же в коде который пилю можно двигать по 1-му пикселю c большой скоростью - явный плюс! |
Приветствую, этот вопрос вероятно обсуждался не один раз, но найти мне ответа не удалось... наверное.
Имеются компоненты: a Flags: fixed a\b a\c Как сделать так чтобы если не выбрать a\b то a\c становится недоступен a\c при выборе a\b можно снять или отметить |
JHeavy,
|
Mailchik, спасибо, то что нужно, только скажите как в этом примере сделать чтобы компонент a был всегда отмечен, и как добавлять компоненты (что куда дописывать если их много будет) т.е. если не трудно добавьте комментарии для "усвоения материала"
Просто хочу понять как это работает если будет разное количество компонентов |
Цитата:
Цитата:
Цитата:
|
Ну отметить a "навсегда" значит не получится, просто - a программа, a\b и a\c - желаемые дополнения, без которых программа также ставится, решения нет?
Да и скажите будет ли работать пример в сворачивающихся списках компонентов (который расширенной версией делается), вроде проверил - никак Вернее работает, но пропадают подсказки компонентов Спасибо... Оказывается все работает... если правильно написать |
привет.
как применить тему в Se7en? |
Johny777, вот так они в дельфе.
Код:
QS_KEY = $0001; |
Gnom_aka_Lexander, El Sanchez, поздравьте меня! :) Тк сделал свой вариант "выкатов и закатов". 2 дня убил на код: (зато никаких таймеров)
подробнее в коде: просьба оценить работу! (отписаться о впечатлениях) |
Johny777, вниз падает (по другому х.з. как сказать) а вверх плавно поднимается. И да, компилишь на Ansi? На Unicode ругнулось несколько раз - точку с запятой забыл поставить в нескольких местах.
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Приветствую, подскажите пожалуйста, существует ли возможность запуска программы из папки {app} (программы которая туда уже распаковалась), а после её завершения продолжалась распаковка других файлов в эту папку.
|
Цитата:
Попробуйте написать используя TTimer, такого не будет, хотя при вызове TTimer.Enabled := True, происходит вызов функции SetTimer, а при TTimer.Enabled := False, происходит вызов функции KillTimer и при этом такой утечки не происходит. Цитата:
|
JHeavy, посмотри в справке BeforeInstall и AflerInstall, с их помощью можно до или после распаковки нужного файла вызвать встроенную функцию Exec, и поскольку она подвешивает инсталл, то при использвоании флага ewNoWait есть большие шансы, что распаковка продолжится только после отработки Exec.
|
Добрый вечер всем. А не подскажите как убрать кнопку "О программе" и иконку в левом верхнем углу? Заранее благодарен.
|
Цитата:
Теперь это функция: function Roll(Ctrl: TControl; RollDelay: Byte; InputRollInfo: DWORD): DWORD; упростил вызов в выкатах справа и снизу иногда нужно учитывать ширину границы формы например $6: ... until (RollInfo <> $6) or (Ctrl.Top = Ctrl.Parent.Height-Ctrl.Height-ScaleY(28)); Цитата:
это не обязательно иконка экзешника инсталла http://forum.ru-board.com/topic.cgi?...07&limit=1&m=1 |
Цитата:
|
Mailchik, что-то я вставить не могу. у меня InitializeWizard разделен на 4 части, создаю 5, компилирую и кнопка не уберается. не могли бы вставить? http://rghost.ru/download/40879331/3...dishonored.iss
Mailchik, уже не нужно. я вставил. |
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Позволил себе немного доработать этот код, некаких .dll, а работает также как IsTask. |
Respin, Привет.
чего уж скрывать, поделюсь своей мыслью по этому поводу. главное расскажу зачем мне это нужно. эта фишка как раз расчитана на антивирусы и фаерволы. если инсталятор находит любой запущенный процесс. то в данном случае выдаёт сообщение что есть запущенная программа защиты и закрывается сам инсталятор не прибегая к попытке закрыть антивирусную программу. поскольку это не возможно так как у многой защиты есть самозащита. я мог бы применить хак на vbs который для меня пару лет назад писали но это будет не верным решением. так как эта штука убивает напрочь любую защиту (даже самозащита не помогает). что не один антивирус, фаервол и пр. пр. после этого не запустятся. что в итоге мой инсталятор будет являться как вредоносное ПО. по этому хотел поступить как можно проще. |
Знающие люди! Если вы когда-нибудь сталкивались или делали такую задачу, помогите, пожалуйста.
Как в кустомном Edit ограничить число символов? То есть чтобы минимум нужно ввести 4 и максимум 12 и после этого сконвертировать текст в UTF 8 (соответственно в файл INI). SatHan, Привет. Я думал тебе надо какую-то другую программу закрыть, без использования сторонних .dll-ок. А ты значит собираешься "антивири" вырубать :nunchaku: Твоими инсталляторами я пользоваться не буду :teeth: |
Цитата:
|
Цитата:
|
Здравствуйте! У меня инсталл с 3-мя компонентами и один из этих компонентов с флагом "фиксирован( fixed)", так как сделать так, что-бы если этот компонент уже установлен при первой инсталляции, то все последующие инсталляции он не устанавливался, а пропускался, так как это отнимает время! P.S. использую архивы фри арк и скрипт исДоне! Спасибо!
|
Mailchik, Благодарю.
Цитата:
Как вариант: К нему нужно прописать ключ реестра (и потом не удалять этот ключ)... |
Respin, Спасибо!
|
Доброй ночи. Подскажите: как сделать так, чтобы после установки заносились ключи в реестр и с последующим запуском инсталляции было сообщение "Программа уже установлена." и выскакивал запрос на деинсталляцию?
|
LinkOFF, фапай код: :)
поставь где-нибудь El Sanchez-у спасибо, тк дёрнул значения переменных из его кода авторана халфы! |
Johny777, а почему пишет "unknown identifier 'Result'
а все решил проблему |
Johny777, не не встает
|
Есть инсталлятор который устанавливает программу, к программе идет xml файл настроек. В файле настроек в конце установки нужно прописать пути к нескольким папкам. Проблема кроется в русских буквах, и заключается в следующем: программа работает с кодировкой символов CP1252 (ISO 8859-1) при этом проблем с русскими буквами она не имеет, но в файле настроек путь должен выглядеть вот так C:\Documents and Settings\Admin\Ìîè äîêóìåíòû\ а не так C:\Documents and Settings\Admin\Мои документы\. Вопрос в следующем как перекодировать CP1251 в CP1252? В общем нужна функция которая на входе получает строку в кодировке CP1251 и возвращает ее в кодировке CP1252.
|
как сделать чтобы исдон распаковывал файлы через секцию run? где-то видел такое
|
Всем добрый день! Имею проблему :( Для своих нужно хочется реализовать следующее:
2 типа инсталляции - обычная установка и установка в стим. С обычной установкой все понятно. А вот с установкой в стим затык :( Допустим, есть 2 установщика - setup.exe (обычная установка) и steamsetup.exe (установка в стим). Steamsetup.exe имеет свой путь установки непосредственно в стим. Хочется, чтобы на стадии инсталляции он запускал setup.exe, а тот распаковывал файлы по тому пути, который ему сообщит steamsetup.exe . Подскажите, пожалуйста, как можно реализовать такое? Ребят, я слаб в паскале, поэтому дико прошу помощи! Заранее благодарю! |
Цитата:
Цитата:
Не проще ли сделать один установщик и для... и для того? |
Цитата:
А насчет запихнуть все в один установщик... Быть может это и проще, но я незнаю как :unsure: :blush: :blush: |
Цитата:
Ну значит, примерно, как-то так: |
Цитата:
Спасибо! Как сделать так, чтобы при наличии установленного стима игра устанавливалась в папку стима понятно. Но мне хотелось, чтобы даже при наличии установленного стима был выбор между обычной установкой и установкой стим. Может можно сделать какие чекбоксы на отдельной странице перед DirPage, чтобы в соответствии с чекбоксом прописывался путь либо "path1", либо "path2"? Прошу прощения, что возможно много вопросов задаю. Просто я действительно не шарю в паскале :blush: :blush: |
LagunaFAN,
|
Добрый день. Помогите:
Код:
Root: HKLM; Subkey: "SOFTWARE\Classes\CLSID\{{645FF040-5081-101B-9F08-00AA002F954E}}\Shell\Open CCleaner..."; Tasks: open; Languages: en; Flags: uninsdeletekey |
apozlevich, в каком смысле не делает? если эти ключи не пишутся в реестр, то нужно проверить соблюдение всех условий.
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
1. GUID, дабы компилятор не посчитал его константой, экранируется только открывающей фигурной скобкой, нужно убрать лишнюю - {{645FF040-5081-101B-9F08-00AA002F954E}}. 2. Толку от этих записей на x64-системах будет никакого, т.к. запишутся в 32-разрядный куст реестра - в контекстном меню корзины ничего не увидите. Нужна проверка разрядности системы, в зависимости от результата писать в нужные кусты. P.S. Раз делаете мультиязычный установщик, в данном случае от флага Languages можно отказаться. В общем, я бы сделал так: Код:
[Languages] |
El Sanchez, спасибо, но я забыл отметить, что мне уже все объяснил Gnom_aka_Lexander, за что ему большое спасибо.
Цитата:
|
Подскажите пожалуйста, как скопировать папку целиком (со всеми вложенными в неё файлами) через секцию [code]?
|
Tco 03, лови :)
Код:
[Setup] |
Доброго времени суток.
Подскажите код что бы перед началом установки инсталятор удалил определённый файл и только потом начинал установку программы. и второе, если выбрать определённый компонент, скажем патч в инсталяторе, что бы установился в начале он и только потом все остальные файлы. |
Цитата:
Код:
[CODE] Цитата:
Установщик выполняет скрипт сверху вниз, так что как вариант в секции Files просто нужно поставить файлы "твоего компонента" первыми. |
R.i.m.s.k.y.,
Благодарствую, и как всегда спасибо. |
El Sanchez,
расскажи пожалуйста, поподробнее про ключи реестра в 64-х битных системах К примеру три ключа - HKLM\SOFTWARE\Wow6432Node - HKLM64\SOFTWARE\ - HKLM\SOFTWARE\ к каким разрядностям относятся? не являются первый и третий ключи синонимами и если нет - в каких случаях юзается первый и последний? |
R.i.m.s.k.y.,
простите благодушно, по поводу кода, у меня inno ругается на неизвестный идентификатор res Exec('cmd.exe', ' /c rd /S /Q ' + '"'+Dir+'"',ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res); подскажите пожалуйста |
ToBeLife,
Код:
[CODE] |
простите, это я невнимателен, ещё раз спасибо
|
ToBeLife, та ни, это я строчку var res : integer; забыл
|
R.i.m.s.k.y.,
а в каком формате писать, просто имя с расширением или в кавычки брать? Цитата:
|
R.i.m.s.k.y., ToBeLife,
можно ж проще :) просто удаление: если у файла есть атрибут "только чтение": |
ToBeLife, полный путь до файла, с расширением, кавычки не нужны, они добавляются в процедурах RD/RF
Johny777, не всегда работает встроенная функция удаления файлов и папок, поэтому я через комстроку сделал. И копирование тоже делаю через комстроку, и добавление кавык тоже своими функциями а не встроенными тк работают они по настроению, а разбираться чего установщик выкаблучивается вломм. Код:
function Add_Quotes(strng : String):String; |
R.i.m.s.k.y., путь до файла который необходимо удалить, может варьироваться.
или это не будет иметь значения? **и всё равно ругается на на неизвесный параметр (в данном случае диск C) |
ToBeLife, конечно будет и это надо учитывать
|
Цитата:
Код:
;64-разрядный режим работы инсталлятора ОТКЛЮЧЕН (по умолчанию) |
El Sanchez, спасибо
такой вопрос: 1.при импортировании толстого файла реестра через reg import в какой куст реестра (32/64) он попадает? как правильно в 64битной ос занести 32/64 битный куст из reg-файла? 2. при использовании утилиты regshot она показывает что одинаковые записи заносятся в HKLM\SOFTWARE\Classes\Wow6432Node\ и HKLM\SOFTWARE\Wow6432Node\Classes\ Это чьи синонимы? Чтол это за кусты и как с ними бороться? |
Цитата:
Цитата:
Цитата:
Код:
Windows Registry Editor Version 5.00 Код:
[Run] |
Народ кому не сложно помогите. Нужно создать наипростейший инсталлятор на is. и с помощью его внести реестр, а при деинсталляции удалить его. Я изучаю nsis и не хочу заморачиваться с is. Просто мне нужно проверить один парадокс.
Ключи реестра нужно внести при инсталляции: Код:
WriteRegDWORD HKCU "Software\Andrew Zhezherun\WinDjView\Settings" "language" "1049" Код:
DeleteRegKey HKCU "Software\Andrew Zhezherun" |
CrashTest,
Код:
[Setup] |
El Sanchez, спасибо.
|
Доброго времени суток.
Обращаюсь к Вам,уважаемый господин El Sanchez и надеюсь на помощь. Давно ищу скрипт для выбора имени пользователя и шары в установщике DC++(Речь идёт о файле DCPlusPlus.xml) Имя,строка <Nick type="string">имя</Nick> Шара,строка <Share> </Share> Несколько раз видел,как Вы помогали в похожей ситуации.Дело в том,что во всех таких случаях,кроме этих двух пунктов фигурировали ещё URL,временная папка для скачивания и тд(Пробовал убирать лишний функционал из тех примеров и потерпел неудачу. Облазил уже всё что только можно.Please help. |
Цитата:
Тогда скрипт будет выглядеть вот так: |
El Sanchez, спасибо, последний вопрос: в коде через exec как правильно вносить 32-х и 64-х битные ключи реестра в 64-й ОС?
|
Цитата:
Код:
var |
El Sanchez,
я окончательно запутался а) для какого режима установщика (32/64) два вышеприведенных примера? б) последний пример занесет файл реестра в 32-х или в 64-х разрядную секцию реестра? |
Цитата:
Цитата:
|
El Sanchez, я окончательно перестал понимать
Можно тебя об одолжении рассортировать все написанное по моим вопросам для ArchitecturesInstallIn64BitMode=x64 и ArchitecturesInstallIn64BitMode=(blank) |
R.i.m.s.k.y., ну тогда слушай теорию, повторять не буду. 64-битная система помимо нативных (родных, своих в доску, etc) 64-битных файлов имеет набор 32-битных файлов для поддержки запуска 32-битных программ через подсистему WOW64, не позволяющей обращаться 32-битному коду к 64-битным файлам и реестру. Грубо говоря, 64-битные программы работают с родными файлами из С:\Windows\system32 и родным реестром (напр. куст HKLM\SOFTWARE), а 32-битные со своим 32-битным набором из С:\Windows\SysWoW64 и своим 32-битным реестром в составе 64-битного (напр. куст HKLM\SOFTWARE\Wow6432Node). Программные группы тоже различаются: Program Files для 64-битных программ, Program Files (x86) для 32-битных. Inno, как и любое другое 32-битное приложение, при обращении к С:\Windows\system32 или к HKLM\SOFTWARE\MyProgram будет перенаправлено подсистемой WOW64 в соответстующие папку SysWoW64 и куст Wow6432Node, {sys} становится С:\Windows\SysWoW64, {pf} - C:\Program Files (x86), HKLM\SOFTWARE - HKLM\SOFTWARE\Wow6432Node и т.д. Если же установщик помимо 32-битных компонентов содержит 64-битные, то нужно позаботиться о том, чтобы неродные для 32-битной программы 64-битные файлы не попали куда не надо (флаг 64bit (для секций Files, Run и UninstallRun), функции IsWin64, EnableFsRedirection и т.д., префикс 64 для параметра Root секции Registry и т.д.).
Код:
[Run] Код:
[Run] |
El Sanchez, благодарю,
Твой пост будет очень полезен и другим, помести ссылку на него в шапку. |
добрые люди! :)
скажите пожалуйста можно ли импортировать функции 7z.dll (лежит в папке архиватора) в Inno для распаковки (по возможности и запаковки) внешних архивов с отображением прогрессбара если да то можно мне пожалуйста код? кажись там даже можно юзать ком строку параметров (пропускать, перезаписывать ...) просьба не предлагать мне IsDone |
Цитата:
Есть ещё модуль для распаковки 7-zip архивов (с отображением прогрессбара). Также где-то видел скрипт для запаковки в 7-zip архивы... Вот тут посмотри (первое и второе там точно есть). |
Respin, спасибо за ответ :)
первое Цитата:
FreeArc - не то что нужно Цитата:
переоформлю вопрос архиватор и есть библиотека, те все что делается через гуи делается через функции и импортированные из библиотеки. Мне хотелось бы импортировать основные возможности библиотеки и юзать их не прыгая с ветки на ветку (читай от левой библиотеки к левой) важны 1: Проресс 2: Параметры 3: Запаковка(не в большей мере) 4: возможность распаковки отдельного файла 5: вывод имени извлекаемого файла. короче то что мы делаем в архиваторе =================================================================== посоны помогите пожалуйста портировать код http://sendfile.su/695878 |
Цитата:
UPD: Реализовал callback. Мусор удален. UPD2: No problemo с кириллицей. UPD3: к черту неиспользуемые функции |
El Sanchez, Слов нет, Спасибо! :)
думаю коду прямая дорога в шапку к остальным кодам Цитата:
Но всёж есть ли шанс реализовать в будущем? И кстати. Маленькая инфа функция SevenZipExtractArchive возвращает: 32800 - нажали на "отмену" 0 - распаковка завершена |
можно ли сделать так,чтобы установщик запускался лишь на 7 и висте?
|
insombia,
Код:
[CODE] |
insombia,
Код:
[Setup] |
Цитата:
|
Цитата:
|
Доброго времени суток!
В первой процедуре создаю xml документ: Код:
oXMLDoc:= CreateOleObject('MSXML2.DOMDocument'); Код:
xmlParser := CreateOleObject('Microsoft.XMLDOM'); <?xml version="1.0" encoding="UTF-8"?> <CONFIG><Name>/<Name></CONFIG> Подскажите можно как нить указать парсеру, что надо расставить переносы? |
El Sanchez, ещё раз спасибо за код!
в общем добавил входной параметр OverwriteExistingFiles Извиняюсь за свой поспешный вывод о внесённых мной изменениях. всё работает! в функции SevenZipExtractArchive заменил TStringList на динамичный массив записей касательно куска кода if FileList = '' then FileList := '*.*'; как-то странно работало, те если мы указываем '' , то извлекаться должно все, но каталоги и файлы в них не извлекались, поэтому справил: Код:
if FileList[0] <> '' then с тех пор как добавил "Отмену" (еще до внесения мной изменений) часто вылетает ошибка без выделения строки в дебаггере "Out Of Range" Я не знаю как исправить :(. Прошу помочь (хочу весь свой инсталл перевести на внешние архивы 7зип), а невозможность отменить распаковку от 4 до 16 гигив (в зависимости от выбора "компонентов") - это жесть :) И ещё просьба! есть вывод ei.dwFileSize, ei.dwWriteSize их ведь можно использовать для вывода второго прогрессбара, на котором будет отображаться прогресс распаковки текущего файла было бы здорово реализовать. В общем прошу помочь мне и в этом. Всё это мне не к спеху :) вот модифицированный код: Код:
;El Sanchez, Реализовал callback. Мусор удален. Работает на ANSI/Unicode (Restools). |
как в isdone сделать разбивку на тома?
|
insombia, как человек вроде-бы уже опытный, мог-бы и знать, что библиотека isdone не предназначена ни для сжатия, ни для разбития на тома. Она используется исключительно для распаковки архивов, упакованных внешними архиваторами, не более. И там есть функция, которая выводит диалог запроса следующего диска, если ты об этом. Один из параметров этой функции - любой файл, который должен лежать на запрошеном диске, и если этот файл уже есть в наличии, то соответственно, запроса следующего диска не будет, ввиду отсутствия таковой необходимости.
Хотя, чего сильно распинаться? Вместе с этой библиотекой распространяется справка, в которой все ее функции удивительно подробно и понятно расписаны. |
Цитата:
Так нельзя: Код:
if FileList[0] = '' then FileList[0] := '*.*'; Код:
if GetArrayLength(FileList) = 0 then Цитата:
|
Gnom_aka_Lexander да я уже нашел,просто забыл удалить сообщение,но все равно спс
|
El Sanchez, спасибо за правку! я понял своё косячище
теперь ошибка не вылезает! :) вот только с этой строкой ( for i := 1 to GetArrayLength(FileList)-1 do ... ) попытаться извлечь 2 файла из архива ['half-life high definition.gcf', 'se15\counter-strike.gcf'], то извлечётся только второй фаил 'se15\counter-strike.gcf' с индексом 1, поэтому ( for i := 0 to GetArrayLength(FileList)-1 do ... ) приводит к нужному результату ====== с FileList[0] := '*.*' извлекаются только файлы лежащие в корне архива. Те, напимер, 'se15\counter-strike.gcf' не распакуется получается если массив пустой то делать вообще ничего не надо (в смысле никакие параметры архиватору не нужны) только если не пустой нужен код: Код:
if GetArrayLength(FileList) > 0 then извлекаем все файлы с подкаталогами. Те реально всё - SevenZipExtractArchive(szStatus.Handle, 'C:\hl1.VALVE', [], False, True, '', True, 'c:\setup', False, CallbackAddr('ArchiverCallbackProc')); извлекаем нужные файлы : SevenZipExtractArchive(szStatus.Handle, 'C:\hl1.VALVE', ['half-life high definition.gcf', 'se15\counter-strike.gcf'], False, True, '', True, 'c:\setup', False, CallbackAddr('ArchiverCallbackProc')); Проверено. Работает. :) хотя прошу желающих на всякий случай потестить вот тестовый архив: http://sendfile.su/700617 ======== функция целиком: PS: блин возможности у кода суперские любой параметр ком.строки можно загнать в функцию (при необходимости настраивать через входные параметры) и ещё куча функций (типа SevenZipGetArchiveType или SevenZipCheckArchive) hl1.VALVE есть 7зип архив(не sfx). я только поменял расширение "7z" на имя всем известной конторы (для понта) |
Цитата:
Цитата:
Код:
if GetArrayLength(FileList) > 0 then |
El Sanchez, если в пути есть русские символы, то 7зип архив не извлекается. Можно ли это исправить?
|
Johny777, комстрока? возможна проблема в кодировке, установщик работает с системной СР1251, а комстрока с ДОС кодировкой СР866
|
Johny777, вот уж не думал что тебя, камрад, придется отправлять в шапку темы
Твой случай function AnsiToDos |
Johny777, дык одмин одмину друг, товарисч и мануал! :)
кстати даже если прогу поставить корректно в путь с пробелами и русскими буквами то не факт что она будет работать - тот же самый косяк может оказаться внутри проги Формат 8.3 жив и здоров (8 символов на имя, 3 на расширение, толькр 10 цифр и 26 англ букв) |
Johny777, знаю - ругаиццо
|
все кто ставит мои репаки на win 7 64x игры не пашут,может со скриптом что-то? http://rghost.ru/41339323
|
insombia, а ошибка то какая что не пашут?
|
R.i.m.s.k.y. говорят ошибки при распаковки,или игра по просту не запускается
|
insombia,
Игра не запускается скорее всего потому что записи реестра и/или файлы в sys/appdata/localuser/etc не туда складываются. Несколько страниц назад El Sanchez отлично расписал как в х64/х86 нужно прописывать. Листани поищи Надеюсь ты всегда используешь относительные, а не абсолютные пути? Ошибки распаковки - это исдоне, я его не знаю и знать не желаю вот как раз поэтому. Пользуюсь стандартными функциями инно, хотя мои установщики очень разнообразны по встроенным функциям, и ошибкам там место есть, да, но я всегда при запиливании одной фичи делаю ключ комстроки для ее обхода. Чего и всем желаю. |
R.i.m.s.k.y. у игр которые я паковал вообще нету реестра
|
Цитата:
У меня под рукой ведьмак Код:
Windows Registry Editor Version 5.00 Реестра у игр нет, дадад Регшоть и аккуратно импортируй |
R.i.m.s.k.y. я для sleeping dogs что-то не могу найти ветки реестра
|
Доброго времени суток! Небольшой вопросик! как сделать так что-бы музыка при запуске инталла начинала проигрываться несразу, а через секунд 4-6 после запуска инсталека? ( Использую обычный скрипт с кнопками в формате .bmp)!
|
Nightwishh,
Цитата:
концепт реализации через таймер: |
Johny777, Вот этот скрипт:
|
Nightwishh, ну переносишь кусок кода:
Код:
ExtractTemporaryFile('BASS.dll'); Код:
procedure PlaySound; PS: без отступов код читать тяжело. Убирай в [code] твои код [/code] иначе они слетают, если были |
Ок. Спасибо!
|
Уважаемые, помогите пожалуйста осилить задачу.
При выборе определённого компонента: 1. запустить (до копирования файлов) сторонний (дополнительный) инсталлятор из {tmp} с заданными ключами установки. 2. удалить в {app} определённые папки ("мусорные", которые установит инсталлятор из пункта 1). 3. выполнить копирование (установку) файлов уже посредством основного inno-инсталлятора Заранее спасибо. |
Помогите подалуйста объединить 2 срипта:
Код:
const Код:
const Код:
function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord; Код:
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord; |
|
alert30, он не объединяет такие функции, я пробЫвал!
|
Nightwishh, интересно, а у меня получилось. Держите.
|
alert30,
За проделанную спасибо, на нет...неполучится через него. Ошибка вылетает: Duplicat identifier "SETTIMER", ну а потом и "KillTimer". :) |
Nightwishh, ответ у меня большой и подробный. Но тут там тоже самое (вот только скобки влияют?), как InitializeWizard.
|
Nightwishh, модифицировал показ слайдов (рандомный), много удалил и заменил InnoCallback.dll на CallbackAddr
библиотека не нужна. Только картинки Цитата:
теперь тебе будет легче объединить 2 кода в ручную :) |
Цитата:
Код:
[Files] UPD ой, опередили |
Johny777,
Спасибо, всё работает, но есть одна пакость! Дело в том что у меня архивы фриарк, которые распаковываются перед inno (ssInstall), а здесь слайды начинают работать после распаковки. Пробывал в скрипте исправлять в процедуре: procedure CurStepChanged(CurStep: TSetupStep); непомогает! :cry: |
Nightwishh, ну помести код распаковки архивов после извлечения картинок и запуска таймера. Убиение таймера оставь где стоит. Те до этапа(ssPostInstall) где таймер убивается не дойдёт пока не выполнится код распаковки. А значит до тех пор он, таймер, будет с частотой 2сек. выполнять процедуру ShowRandomPics; Расценивай таймер не иначе как параллельный поток(процесс)
короче: =========================== Цитата:
|
Не... для меня сложно, накуралесю что-нить, тем более там скрипт ISDone 0.6, придётся убирать таймер из музыки и всё по старому делать, зря только вопросами грузил!
|
Nightwishh, вот скажи мне. Нафига тебе этот исдан. Почти все реапки какие вижу с ним. может дело и не в нём, но они по большей части глючные. Кто тебе по ушам настучал его использовать. Забей и всё будет нормално. я б не променял коды ваше на возможность сильнее сжать(и эта возможность под вопросом)
|
Johny777, да всё пока нормально, взял для слайдов другой скрипт, насчёт глюков ISDone- вроде норм с ним, спасибо за таймер для музыки и за скрипт слайшоу! :yes:
|
Цитата:
Цитата:
|
Цитата:
|
Mailchik, использовать или не использовать исдан - личное решение каждого. Здесь на форуме видел людей, которые не зная возможностей инно, обходя их начинают пользоваться исданом. Оттого и мнение, что кто-то (форум, человек, репакер) прошелся по ушам и доверчивости новичка. Меня это печалит. Поэтому я не выдержав заявил Nightwishh-у чтоб он не зацикливался на методах этой библиотеки. Базара нет "Распаковка архивов созданных разными алгоритмами (precomp, srep, zip, xdelta + подключение конфиг файла, для распаковки внешними компрессорами), запуск сторонних exe, с плавным отображением прогрессбара." - несомненный плюс, но у медали две стороны
давай взвесим стороны: начнём с того что времена, когда выгодно и удобно купить/скачать однослойную болванку с пятью играми на ней давно прошли(не для всех, но меньшинством я позволю себе пренебречь). Ожидания от современного репака(перепаковки): - удобство проистекающее из ненадобности в ручную ставить патч, копировать правленные файлы, файлы локализации, настраивать ини файлы эмулятора для стим-игр и прочее - качество. Те правильный и грамотный код, в котором: 1. Описаны все необходимые действия для правильной установки и удаления продукта 2. Сам инсатлл должен быть удобен по отношению к пользователю. 3. Время установки должно быть приемлемым 4. И самое главное - нужно уметь ценить ресурсы чужого компа! Что мы получаем (говорю как бывший пользователь репаков): 1. Не все, но это ввиду того что "готовый" продукт можно получить обходя возможности инно через исдан сделало из будущего, без будущего, репакера обезьяну 2. Многое уделяется не удобству, а оформлению, хотя иногда оно из него и проистекает. Я сам фанат крутого оформления, но уважая чужое мнение не меньше своего, отдаю полуготовый продукт на тест и (внимание) на "общее впечатление" (там же и удобство) от продукта с будущим учётом пожеланий будущих пользователей. Не спрашивай примера. У меня пока один такой инсталл и он не доступен широкой общественности 3. Время установки не приемлемо, а без прекомпа возможности библиотеки аннулируются (+-500-300мб после фри арка можно пренебречь) кодом несколькими страницами назад и родным ужимателем инно 4. Дополнительное место на харде для распаковки и уйма оперативки - наглое отношение к пользователю, тк он не ценит ресурсы сколько бы их не было Теперь о возможностях исдана- разнообразная распаковка. Вот и всё. О фагах секции файлов можно забыть. Ровно как и о функциях AfterInstall, BeforeInstall запуск сторонних exe - может и инно. Короче. Кто хочет пусть юзает исдан. Мне с этого момента пофиг. Я лишь буду указывать на альтернативные возможности или возможноти(которых в исдане нен) в инно :) PS: Цитата:
а целесообразность исдана без прекомпа и сильного сжатия из которого проистекают некоторые из вышеописанных проблем(3, 4) я ставлю под большой вопрос PSS: ничего личного по отношению к автору библиотеки. Если он её придумал, значит было зачем |
Цитата:
И вообще отвечать на пост ниже постом выше - моветон |
Johny777, Вы всё красиво расписали. Споры бессмысленны, так как я указал:
Цитата:
Цитата:
Цитата:
|
к слову об установке приложений с помощью IsDone;
R.i.m.s.k.y., Johny777, а сколько кода (приплюсуем сюда тормоза, которые внесет виртуальная машина Inno) займет у Вас установка десятка приложений, с отображением установки каждого на отдельном прогрессбаре, и всех выбранных на общем? |
Можно ли запустить готовый инсталлятор, в тихом режиме без параметра /VERYSILENT ?
|
Limonica, нельзя. но можно скрыть окно инсталла насовсем, без вариантов, в шапке видел пример.
|
Gnom_aka_Lexander, какая виртуальная машина Inno? первый раз про такую слышу
У меня есть подобие твоего примера, называется InstallAll, ставит в систему все от граблей до кораблей без участия человека (системные компоненты vcredistы, дирексы, фреймворки, тоталы/ворды и т.д), всего 20 компонентов для джентльменского набора. Я вообще на заморачиваюсь на прогрессбар, все запускается оригинальными установщиками через AfterInstall или Run, в зависимости от порядка установки. Ибо заморачиваться на прогрессбар в ущерб стабильности установщика считаю нецелесообразным. |
Цитата:
А насчет инно - уж тебе-ли не знать, в чем разница между средами(или как это правильно обозвать?) компилируемым и интерпретируемыми? |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
оффтоп завершил. |
А можно что-бы при извлечении временных файлов в папку Temp показывался прогрессбар, т.е запускается инсталл, извлекаются файлы и в это время была полоска прогрессбара?
P.S. Файлы извлекаются через InitializeWizard, а у временных файлов убрано в секции [Files] кат. назначения: DestDir: {tmp}. |
Цитата:
прогрессбар - создаешь прогрессбар, на котором покажешь распаковку, задаешь свойству max - количество файлов, которые будешь распаковывать, и после распаковки каждого пишешь - твой прогрессбар.Position := твой прогрессбар.Position + 1 ; Вуаля. |
Здравствуйте. Подскажите, пожалуйста, как в файл (например .ini) записать только значение (без секции "[]" и равно "=").
|
никак, секция неизбежно указывается. можно записать текстом, с помощью стринглиста:
Код:
procedure InitializeWizard(); |
Доброго времени суток, подскажите, где найти скрипт, который проверяет при удалении не запущена ли программа, и если да, то убивает этот процесс.
|
woland0789, Inno Setup начиная с версии 5.5.0 уже делает это сама.
|
Gnom_aka_Lexander, какой командой? просто у меня древний инно 5,3 какой-то
|
Цитата:
если правильно понял, то при обнаружении процессов, работающих из папки установки/удаления, она выводит список процессов, которые мешают и предлагает их закрыть в необязательном порядке. В необязательном - можно выбрать не закрывать процессы и продолжить установку-удаление |
ради интереса портировал отсюда http://delphiguru.xm6.ru/lessons/18-...na-delphi.html создание круглой формы. Кому надо забирайте! :)
|
Johny777, на юникоде выдаёт ошибку ран тайм.
На анси компилится. |
nik1967, с GDI всегда так, то на анси не хочет работать, то на юникоде...
|
|
nik1967, компилится, но при запуске ошибка.
решение: закоментируйте WizardForm.Brush.Style := bsSolid;. работает, не знаю правильно или нет, так как на юникоде сижу. |
Цитата:
|
Устал читать... Просто спрошу.
Инсталлятор распаковывает некоторые файлы и после этого надо установить две софтинки (инсталятора) с ожиданием установки. Как ? Пробовал ExecAndWait.iss ни чего не выходит. И можно ли установить с помощью Inno Setup шрифты? |
Цитата:
|
Цитата:
|
|
Цитата:
|
Как прописать путь к папке System32 в Win 7 х64?
Любой способ записи через секцию [Files] приводит к тому, что файлы попадают в папку SysWOW64, а надо именно System32. |
раньше под свои нужды использовал код ...\Inno Setup 5\Scripts\Dobrov\DisksInfoBox.iss
а именно: но вот намутил свою версию (пол дня убил на код). В отличии от кода выше мой код работает на юникодной инно, но почему-то на ней криво определяет размер и свободное пространство хардов. На ANSI всё в порядке Добрые люди, у меня 3 просьбы: 1: Поздравить меня :) 2: Проверить код (да да как в школе училка проверяла) и по возможности исправить/улучшить 3: хоть оно мне и не нужно, но если получится исправить косяк с юникодной инно, то скрипт может пригодиться ещё кое-кому (хотя там при желании можно заюзать родной GetSpaceOnDisk) вот ранняя версия (только заполнение листбокса): PS: и меня смущает как я поступил с указателем Код:
|
ChVL, так не пойдёт?
Код:
ExpandConstant('{win}\system32') |
Johny777, CD-ром-то зачем? С сд-ромом, инно и сама довольно красиво с помощью драйвтривива в одну строчку делает. дополнительные ухищрения как раз были нужны, чтоб исключить его, поскольку попытка установить туда что-либо приводит как минимум к ошибке и является маразмом.
ByteOrTB - несколько месяцев назад уважаемый Serega давал гораздо более корректный код. примерно в тех-же краях есть решение проблемы с определением размеров. Правда там с файлами, но по сути своей любой элемент системы является файлом, так что решение наверняка неподалеку. И не нужно копи ровать манеру форматирования кода Виктора Доброва, читать невозможно, чесслово. |
Mailchik,
А какую использовать функцию или процедуру? |
ChVL, если секция файлов, то именно так и указывать : {win}\system32, Mailchik, дал пример для секции кода.
но есть у меня сомнения, что прокатит, правда мизерные - теоретически должно. |
Gnom_aka_Lexander,
Понял. Это я пробовал, и даже начиная с С:\ не проходит. Похоже, дохлый номер... На ru-board'e молчат. Задал вопрос на сайте inno в Newsgroups, вдруг кто-то знает - это уже последняя инстанция. А жаль... Очень надо. |
Я подозревал такое дело. от имени админа с путем {win}\system32 тоже никак?
Стандартные папки из шапки с флагом CSIDL_SYSTEM не пробовал? |
Цитата:
Код:
[Files] |
El Sanchez,
Yes-s!! Работает. Спасибо! Дык, об этом флаге надо знать. Задача, видимо, достаточно редкая, раз о её решении мало кто знает. Я уж пытался решить левым путём: скопировать из папки SysWOW64 в папку System32, так тоже перенаправляет. |
ChVL,
Есть такая функция Wow64EnableWow64FsRedirection, отрубает всё перенапровленние в винде x64, но в неопытных руках она опасна, так что лучше юзай как предложил Эль Санчез :cool |
Ребята, простой вопрос:
в inno setup делаю инсталлятор с сохранением setup на жесткий диск. как сделать установочный диск DVD\CD с автозапуском? |
RodionSabitov, autorun.inf
|
Gnom_aka_Lexander, а в inno setup нет такой встроенной функции? в install shield'e была...
|
RodionSabitov, файл autorun.inf совершенно несложно заполнить вручную, для написания пары слов в текстовом файле нет нужды встраивать целый механизм его создания. К тому-же install shield - инструмент платный, и разработчикам необходимо оправдывать его платность. В том числе и ненужными опциями.
|
Цитата:
DRIVE_REMOVABLE = $2; DRIVE_FIXED = $3; Цитата:
1. http://forum.oszone.net/post-1882481-1175.html (юзаю в основном инсталле, тк он у меня двухязычный) 2. http://forum.oszone.net/post-1882594-1184.html (юзаю в остальных случаях. В том числе и для кода ниже) и у меня нет размер файлов. Он не нужен. А размер дисков и инфа о них короче вот допилил код скрин: в отличии от передыдущего кода это процедура которая пишет инфу в входную переменнную свой тип Код:
type длина массива - кол-во хардов каждый элемент массива содржит7 свойств всё это выводится в TListView код: пацаны помогите пожалуйста не знаю как сортировать элементы например по размеру свободному или полному работает это метод метод CustomSort( @имя_каллбэк_функции, 0); как здесь http://www.az-design.ru/index.shtml?.../SB58OnCompare но прототип в инно TLVCompare = function(lParam1, lParam2, lParamSort: Integer): Integer; и как им пользоваться фиг знает и вторая просьба (не такая важная) как правильно портировать функцию function GetDiskFreeSpaceEx(lpDirectoryName: PWideChar; var lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes; lpTotalNumberOfFreeBytes: PLargeInteger): BOOL; stdcall; function GetDiskFreeSpaceExA(lpDirectoryName: PAnsiChar; var lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes; lpTotalNumberOfFreeBytes: PLargeInteger): BOOL; stdcall; function GetDiskFreeSpaceExW(lpDirectoryName: PWideChar; var lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes; lpTotalNumberOfFreeBytes: PLargeInteger): BOOL; stdcall; я без понятия что такое PLargeInteger буквы в ListView кликабельны вот текстура для кода выше |
Цитата:
|
Gnom_aka_Lexander,
спасибо добрый человек :) ! понял обновлённый код инфы о хардах: проверьте пожалуйста у кого юникодная инно под рукой. Всё ли правильно работает. Чисто для статистики :) теперь осталось только соритровать элементы. Не знаю как :( |
Цитата:
|
поэтому я и отказался делать на инно, что очень сложно сделать так, чтоб и в анси и в юникоде работало и сделал в длл-ке.
|
Цитата:
|
Gnom_aka_Lexander, как системные иконки прикрутить?
можешь пожалуйста подправить код? меня например замки не устраивают. Но картинки такие маленькие, что ничего лучше не нашёл :( на юникоде тестил? У тебя работает? |
Цитата:
|
Доброго времени суток.
Не хотел отрывать вас от более продвинутых ситуаций, но буду признателен за помощь. задача такова: необходимо запустить батник и дождаться его полного выполнения, и только потом начиналась бы основная установка приложения. или как это реализовать через [Run], что бы первоначально запускался именно батник. Спасибо |
ToBeLife, нихао
В справке читай installation order, RUN выполняется самой последней секцией. Так что через код Код:
[Files] Но вообще если батник мелкий лучше его в код инно перенести, а то может быть нестыковка, инно работает в кодировке СР1251, а батник - СР866. Привет ДОСу |
R.i.m.s.k.y.,
Спасибо за помощь. Воспользуюсь вашим советом. |
Может кто пожалуйста подсказать как сделать такой же раздел в инсталляторе.
|
pritoreanic,
|
Приветствую, может быть вопрос задавался, но все же может кто нибудь ответит как в описании компонентов (как в примере выше), перенести строку описания на новую (ниже), 'описание' + 'описание' не помогает, хотя может не так что то делаю.
Спасибо. |
Цитата:
|
pritoreanic, скачай и поставь расширенную версию инно из шапки (ANSI)
JHeavy, так что-ли? описание начинается со слова "описание" |
Johny777, спасибо за ответ, а как сделать чтобы все что после "описание:" начиналось с новой строки типа-
Описание: 1. бла 2. блабла 3. блаблабла Спасибо. |
Johny777
А как сделать выбор из двух одно, например выбор языка как на картинке |
pritoreanic, дык ответ в примере выше
Код:
[Components] |
Цитата:
|
pritoreanic, или может ты флаг exclusive имел ввиду?
Код:
[Components] |
JHeavy,
Код:
procedure ComponentsListOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea); ' ' - отступ. Неплохо ведь начать описание с абзаца :) |
Друзья, может кто сталкивался?
Нужно на самой последней странице инсталлятора, когда пользователю предлогают например: [x] запустить приложение [x] прочитать какой-либо файл [x] посетить сайт Можно ли в коде скрипта, когда во время установки что-то произойдет не так менять адрес урла который нужно пользователю посетить? |
Цитата:
Цитата:
Например у вас идёт что-то вроде: Код:
[Components] Цитата:
|
Цитата:
|
Здравствуйте, подскажите как сделать чтобы в списке компонентов (чекбоксы) можно было выбрать только один из компонентов?
|
JHeavy, проще пристрелить
на прошлой странице два раза ответили ________________ Цитата:
Именно тот случай когда Лучше день потерять, потом за пять минут долететь! ________________ al70 SoftLine Посетить сайт можно проще Код:
[RUN] Код:
[RUN] |
Цитата:
Вы не поняли. Поставить на последнюю страницу URL или файл я могу и в этом сложного ничего нет. Мне надо после того как прошла установка в зависимости от результата показать чекбокс "порейти на сайт", а вот урл должен иметь возможность измениться в зависимости от результатов установки. |
al70, использовать Check не вариант?
Код:
[CODE] Если подчековая функция возвращает ТРУ - строчка скрипта выполняется, если фолсе - строчка пропускается и следов от нее нет. Или опять не то? |
Цитата:
В точку, спасибо! |
El Sanchez, я заметил, что в TFolderTreeView иконки другие (покрасивее). Судя по исходному коду инно там используется функция ShellAPI:
function SHGetFileInfo(pszPath: PAnsiChar; dwFileAttributes: DWORD; var psfi: _SHFILEINFO; cbFileInfo, uFlags: UINT): DWORD; external 'SHGetFileInfo{#A}@shell32.dll stdcall'; твой код вывода данных о хардах у меня в 2-х видах: 1: малость упрощённый для инсталла халфы (без процентов и инфы о файловой системе) 2: оригинал как есть я портировал вот этот код http://delphiworld.narod.ru/base/get_filetype_ico.html в свою модифицированную версию работает, но код стал медленнее решил улучшить и заметил что в структуре Код:
type а это как я понимаю тоже самое что в твоей функции загрузки иконки function ExtractIcon(hInst: THandle; lpszExeFileName: String; nIconIndex: UINT): HICON; external 'ExtractIcon{#A}@shell32.dll stdcall'; получился такой код, но иконки не отобржаются (не пойму что не так сделал) в общем прошу по возможности помочь, тк иконки хороши (есть диск, сис, диск, флэшка) PS: можно б было их и напрямую грузить, но не знаю где они лижат :( |
Помогите пожалуйста убрать "выбор установки", затемнить правую половинку окна где описание к компонентам и еще почему то не работает строка "russian.ComponentsDescription0=Наведите курсов мыши на компонент, что бы прочитать его описание." когда курсор не наведен с право в окне пусто.
|
Добрый день! Имеется следующая конструкция
3 компонента которые можно устанавливать по выбору. 1 главный компонент с exe файлом, с возможностью создания ярлыка на рабочем столе запуске приложения после установки. 2 компонент это просто папка с файлами там нет exe 3 компонент фрейворк (один экзешник). Подскажите как сделать чтобы, например, когда мы хотим установить только компонент два, не было пункта (чекбоксов) хотите ли вы поместить ярлык на рабочих стол или запуск после установки(так как будет высыпаться ошибка, оно и понятно там нет исполняемых файлов). Эти пункты должны быть только для первого приложения. Как сделать чтобы при выборе компонента 1 с компонентом 3(фрейворк) они ставились по очереди(те поставилось приложение, а далее идет установка фрейворка). Сейчас, у меня происходит просто распаковка файла фрейворка в директорию, но он не запускается. Спасибо. |
InnoQuest, а ответ один - добавлять к строчкам параметр Components: 1 2 3
1. Код:
[Files] Код:
[Tasks] Код:
[Run] |
pritoreanic, пардон за недоработку. Исправил!
и убирай пожалуйста крупные коды и скрины под спойлер! |
R.i.m.s.k.y. Спасибо.
Еще 3 проблемы возникло, если не трудно дайте наводку куда копать 1) При обычной установки (те когда выбран 1и/или второй компонент), вылазит ошибка, что мол не могу запустить 3компонент(хотя он и не был выбран для установки), установка проходит нормально, но не пойму почему он пытается выполнить 3 компонент? 2) Если устанавливать только второй компонент(это простая папка с файлами без экзешника, по сути нужно е просто распаковать), в конце тоже появляется окно предлагающее запустить KMBD, ну и естественно ошибка из вопроса номер 1 вылазит. 3) Если устанавливаем только 3 компонент(фрейворк- простой экзешник), все проходит нормально(тут кстати нет ошибки что не удается запустить 1 компонент), но в конце опять тоже окошко о запуске KMBD(хоть мы его и не выбирали) . Я так понимаю нужно какую-то проверку написать в тегах[code] на то какие компоненты выбраны и какой из [Run] запускать в завимости от выбранного В принципе если закомментить все Source вы можете посмотреть логику работы установщика Буду благодарен за помощь, а то завтра нужно проект показывать уже, а установщик сырой Сейчас выглядит так |
Цитата:
а) не понял что я писал в прошлом посте для тебя и б) недокопировал что я писал в прошлом посте для тебя Цитата:
|
Цитата:
Цитата:
|
R.i.m.s.k.y.
Спасибо понял где ошибся |
Цитата:
Есть еще проблема с появлением сообщения на скриншоте. Еще когда наводишь на все компоненты кроме SMP-s сообщение "russian.ComponentsDescription0=Наведите курсов мыши на компонент, что бы прочитать его описание." не показывает. |
Цитата:
По второму вопросу, не знаю поможет или нет, я бы в конце процедуры ComponentsListOnItemMouseMove добавил WizardForm.ComponentsList.Repaint. |
R.i.m.s.k.y.,
Цитата:
|
Цитата:
|
Да я просто не правильно объясняю похоже, если есть группа чекбоксов, как правило можно выбрать несколько, а мне нужно чтобы при выборе одного снималась галка с другого
|
R.i.m.s.k.y. спасибо с первой проблемой помог.
У меня тут проблема, сообщение "russian.ComponentsDescription0=Наведите курсов мыши на компонент, что бы прочитать его описание." не появляется если выводить мышку в стороны красных стрелок и появляется где зеленая стрелка, как сделать что бы это сообщение появлялось в любом случае ? |
pritoreanic, хз
|
|
Пацаны! Скажите пожалуйста чем можно заменить указатель в той или иной функции. Те например нужно воспользоваться вин апи функцией, а у неё один из входных параметров указатель
например function CopyFileEx(lpExistingFileName, lpNewFileName: PWideChar; lpProgressRoutine: TFNProgressRoutine; lpData: Pointer; pbCancel: PBool; dwCopyFlags: DWORD): BOOL; stdcall; очень привлекательная функция которая может отображать прогресс копирования файла (суть не конкретно в ней, тк есть многo других с указателями) но каким образом использовать её в инно. Как вообще поступать с Pointer-ом. В Windows.pas (Embarcadero RAD Studio/ Delphi 2010) они на каждом углу. Просветите меня пожалуйста на этот счёт! |
как сделать растяжение wizard small image на деинсталляторе с сокрытием лейбелов и как сделать,чтобы кликабельное лого отображалось в деинсталляторе
вот скрипт на отображение лого в инсталляторе |
Цитата:
Цитата:
|
|
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Чем заменить:
Johny777, без остановок, пауз, с отменой операции, тупо копирование: |
El Sanchez, спасибо, кажись догоняю:
Если значение/значения из переменной, на которую указывает указатель не нужно можно заменять в функциях/процедурах указатели на целочисленные Integer, Longint, Cardinal, DWORD... чтоб компилятор не ругался на неизвестный тип. Это делается когда из переменной или из переменной ссылающейся на структурный тип, на которую указывает указатель брать ничего не нужно Если значение/значения нужно, то: - если указатель на какую-то простую переменную (например type PInteger = ^Integer - указатель на целое число), то в заголовке функции можно заменить PInteger на Integer. Например: function GetVolumeInformation(lpRootPathName, lpVolumeNameBuffer: String; nVolumeNameSize, lpVolumeSerialNumber: PDWORD(меняем на DWORD); var lpMaximumComponentLength, lpFileSystemFlags: DWORD; lpFileSystemNameBuffer: String; nFileSystemNameSize: DWORD): BOOL; external 'GetVolumeInformation{#A}@kernel32.dll stdcall'; - если указатель на переменную структуры (var MyVariable :SECURITY_ATTRIBUTES), то нужно описать SECURITY_ATTRIBUTES в разделе type и присвоить этот тип соответствующим переменным (в заголовке ф-ции и в разделе var) короче суть в том что указатель можно заменить на переменную, если указатель на буфер то методом проб и ошибок подставляем array [0..число] of Char или array [0..число] of Byte Цитата:
|
|
R.i.m.s.k.y., по умолчанию ты инсталл без прав админа не запустишь, а чтобы отключить нужно настраивать директиву секции [Setup] PrivilegesRequired=не админ
если запускаешь не как админ, то получаешь вот такое окно от винды Цитата:
function ExecAsOriginalUser(const Filename, Params, WorkingDir: String; const ShowCmd: Integer; const Wait: TExecWait; var ResultCode: Integer): Boolean; хотя уверен достаточно и обычных function Exec(const Filename, Params, WorkingDir: String; const ShowCmd: Integer; const Wait: TExecWait; var ResultCode: Integer): Boolean; function ShellExec(const Verb, Filename, Params, WorkingDir: String; const ShowCmd: Integer; const Wait: TExecWait; var ErrorCode: Integer): Boolean; или секции [RUN] ведь если инсталл запущен и работает, то мы уже зашли под админом и по дефолту запускается все с его правами |
Johny777
ненене я не зря привел скриншот, PrivilegesRequired проверка на входимость пользователя в системную локальную/доменную группу Администраторы А на моем скрине выше - запуск от root-администратора (в лине это root, в винде не знаю как называется, причем пользователь Администратор и вот этот root-администратор - разные вещи, у последнего ВСЕ права на ВСЁ, в тч на реестр) Вот такой запуск мне и нужен, от root'a |
Цитата:
Теперь опять про CreateFile с параметром lpSecurityAttributes. Можно объявить как lpSecurityAttributes: SECURITY_ATTRIBUTES, заполнить самому структуру и в функцию передать объявленную переменную типа SECURITY_ATTRIBUTES, а можно объявить как lpSecurityAttributes: Longint, вычислить адрес объявленной переменной самому (сам понимаешь, что в Inno адрес такой переменной не получить. Исключение: для переменной строкового типа можно получить ее адрес при помощи ф-ии CastStringToInteger) и передать в функцию. Но 0 передать можно (This parameter can be NULL). В общем, для просветления кармы почитай http://www.transl-gunsmoker.ru/2009/09/blog-post.html Цитата:
|
Цитата:
|
Цитата:
При запуске от рут-админа (как на скрине выше) доступны локальные ресурсы пользователя, но с админскими правами, а если запустить от имени другого пользователя и ввести "Администратор" - пасс, ресурсы совсем другие Энивей по вашей логике должен работать скрипт Код:
[Setup] Код:
--------------------------- |
del.
|
люди.помогите мне объединить эти два скрипта
Код:
procedure InitializeUninstallProgressForm(); Код:
procedure InitializeUninstallProgressForm(); |
Цитата:
|
Цитата:
На всё про всё пара примеров. Как вы правильно заметили Цитата:
Цитата:
Как не пытайтесь. вот это: Код:
[Registry] Про добавление привилегий папке или файлу, вообще молчу. Добавлю: Ни разу не пробовал, но уверен что например NSIS способен дать повышенные привилегии, Inno нет. |
Цитата:
Если можно расширить вопрос не только записью в реестр но запуском приложений от рут-админа |
Цитата:
Однако есть приложения, уровень доступа которого определить система или не может, или нет необходимости. Это либо какое-нибудь старое, не подготовленное к работе в системе с UAC, приложение (без манифеста, без подписи, от неизвестного издателя), либо, например, та же консоль - cmd.exe. Запуск ее не требует админских прав, запустится она с правами обычного пользователя, но с помощью нее можно пытаться выполнять команды, доступные администраторам, например, копирование в системную директорию system32 или в корень системного диска. Естественно ничего не выйдет, ведь консоль работает с правами обычного пользователя. Вот для таких программ, для которых уровень доступа определить нельзя или нет необходимости, но запустить их с повышенными правами очень хочется и сделана опция в контекстном меню "Запуск от имени администратора". Это не запуск с правами от какого-то мифического супер-пупер администратора, а повышение своих же прав согласно наличию выданного системой администраторского маркера доступа. Microsoft-у следовало бы назвать эту опцию, например, "Запуск с повышенными правами", однако решили, что оттягивающее на себя слово "...администратора" убедит пользователя спать спокойно и не волноваться, что его урезали в правах (IMHO, конечно :)). Вот как-то так. Цитата:
Цитата:
Цитата:
|
Пацаны, помогите пожалуйста создать настоящий генератор случайных чисел!
дело в том, что функция random основана на математике, а потому числа которые она возвращает не хаотичны, много повторов подряд перевернул форумы и понял, что единственный способ получить настоящее случайное число описан здесь http://habrahabr.ru/post/62237/ за исключением получения их из квантового вакуума http://www.lenta.ru/news/2012/04/16/randomiser/ :) а именно "запись помех электропитания" звуковой карты в буфер, считывание оттуда значения грубо говоря мне нужен "более рандомный рандом" в общем импортировал из MMSystem.pas функции и структуры данных, и перевернул форумы по записи с микофона и вообще записи, но сложновато прошу помочь по возможности! код: PS: извините, что выношу вам мозг своими злостными потребностями :blush: |
Доброго времени суток! Как сделать такой серийный номер, который будет зависеть от каких-либо параметров компьютера?
Идея в том, чтобы клиент скидывал мне серийный номер, а я ему отправлял правильный пароль. есть функция (взята из справки, как просто вводить определенный серийный номер), например по маске: function CheckSerial(Serial: String): Boolean; var mask:string; i:Integer; begin Result:=True; mask:='####-####-##****'; If Length(Serial)<>Length(mask) then begin Result:=False; exit; end; For i:=1 to Length(mask) do begin If StrGet(mask, i)='#' then If not ((Ord(StrGet(Serial, i))>=48) and (Ord(StrGet(Serial, i))<=57)) then begin Result:=False; exit; end; If StrGet(mask, i)='*' then If not ((StrGet(Serial, i)>='A') and (StrGet(Serial, i)<='Z')) then begin Result:=False; exit; end; end; end; |
RodionSabitov, думаю твой случай WinApi функция http://ru.wikipedia.org/wiki/CryptGenRandom которая выдаёт число собранное из
только портировать сей код http://www.sql.ru/forum/actualthread.aspx?tid=467265 для меня не намного легче чем из моего предыдущего поста :( ===================================================================== помню спрашивал http://forum.oszone.net/post-1945197-379.html и El Sanchez дал классный код http://forum.oszone.net/post-1945281-380.html на определение рабочей папки процесса, после чего я убивал процесс через ком строку Exec('taskkill', '/f /im hl2.exe', '', SW_Hide, ewWaitUntilTerminated, ErrorCode); но вот 2 проблемы 1: как узнать, что процесс убит? Можно после команды консоли проверть есть ли этот процесс, но как-то это не очень удобно! 2: Запущено 5 одинаковых процессов из разных директорий, а нужно убить только 1 нли 2 из них, но не все (не мой случай), но всё-таки :)... намутил код на основе http://forum.oszone.net/post-1945281-380.html под свои нужды ключевая функция function TerminateProcess(hProcess: THandle; uExitCode: UINT): BOOL; external 'TerminateProcess@kernel32.dll stdcall'; Убиение процесса function KillTaskEx(ExeFileName: String): Boolean; функция возвращает булев значение (убила, не убила процесс) входным параметром может быть: 1. Имя процесса - будут завершаться все процессы с этим именем ...if KillTaskEx('calc.exe') then MsgBox('OK', mbInformation, MB_OK); 2. Путь к файлу от которого исходит процесс (рабочая директория) ...if KillTaskEx('C:\calc.exe') then MsgBox('OK', mbInformation, MB_OK); во втором случае завершится процесс/процессы только из этой директории! забирайте кому нужно код: |
Johny777, TerminateProcess стоит применять в крайнем случае, когда другие способы завершения процесса не помогают. Нужно послать окну программы сообщение WM_CLOSE, подождать 5 сек (где-то читал, что приложение считается зависшим, если не отвечает на действия системы в течение 5 сек.) и только потом TerminateProcess, если нужно.
|
Цитата:
HKCU\Control Panel\Desktop "HungAppTimeout"="5000" так что ждать нужно не 5сек, а значение параметра HungAppTimeout |
Цитата:
========================================================== El Sanchez, Ты можешь пожалуйста научить свою функцию так чтоб она ещё и путь к файлу сравнивала как у меня, ну короче чтоб при необходимости только определённые процессы завершать. (а то получается грохнули одного Васю, другого, а фамилию не спросили) Я боюсь это делать, тк когда свою функцию ваял мне показали 2 раза синий экран, и сейчс ещё раз когда твою функцию дополнял :) Цитата:
Цитата:
http://www.delphisources.ru/forum/sh...ad.php?t=21276 хотя там тоже TerminateProcess, но уже для системных процессов, путём поднятия привилегий текущему процессу, как я понимаю пртировал, не тестил (боюсь) PS: Халфе 2 в полноэкранном режиме на сообщение PostMessage(hwnd, WM_CLOSE, 0, 0); пофиг, (поставлю dwTimeout в 2 раза меньше) но в оконном режиме, закрытие окна работает на ура |
Цитата:
|
Люди.помогите мне объеденить эти два кода и чтобы они работали одновременно.Здесь один код на работу wizardsmallimage во время удаления и код на работу кликабельного лого во время удаления.Но если их поменять местами допустим код на лого сверху,а на wizardsmallimage внизу.
Код:
procedure InitializeUninstallProgressForm(); вот коды Код:
procedure InitializeUninstallProgressForm(); Код:
procedure InitializeUninstallProgressForm(); |
Код:
procedure InitializeUninstallProgressForm(); |
вот полный скрипт на лого
Код:
[Setup] Код:
[Setup] Цитата:
и как сделать растяжение wizardsmallimage на деинсталляторе с сокрытием лейбелов? |
Цитата:
Код:
TUninstallProgressForm = class(TSetupForm) Цитата:
|
как сделать инсталлятор без версии т.е убрать версию?
Код:
#define MyAppVersion "1.0.03" |
habib2302, какой лаконичный скрипт
наверное нужно удалить строчки где встречается MyAppVersion В общем в секции [Setup] за номер версии отвечают VersionInfoVersion, VersionInfoCompany, VersionInfoDescription, VersionInfoTextVersion Цитата:
Зер гут. |
Цитата:
Код:
#define MyAppName "Моя программа" |
SoftLine
огромное спасибо!!! |
Доброго времени суток.
Нужен пример скрипта.... У меня несколько архивов 7z, мне нужно для каждого архива отдельный прогресс бар в Inno ( Прогресс бар Внутри программы а не снаружи) Или если можно подскажите как сделать такое в редакторе форм. Заранее благодарен. Надеюсь объяснил внятно =) |
RedBishep, читай страницы 123-125 включительно
|
Johny777
Спасибки вроде в поиске писал он нечего такого не нашел =)) |
Johny777, Поправочка: По умолчанию да, страницы 123-125 есть,но например на 30-ти постном отображении, ну никак нет страниц 123 и 125, т.к их всего 48. Так что начинать нужно не со страниц а с постов, ведь у каждого по разному. Получается начинать читать нужно с #1221 по #1250 пост включительно, если считать начало 123 и конец 125 страниц.
P.S |
Озадачился определением версии системы.
В справке нашел пару примеров: 1. Pos('XP Service Pack 2', SystemVersionPanel.Text); 2. Version.NTPlatform and (Version.Major = 5) and (Version.Minor = 1) and (Version.ServicePackMajor = 2). И появились вопросы.. SystemVersionPanel - это что, объект? Где-то описано вообще? Во втором случае Version, как я понял, это переменная типа "запись" TWindowsVersion. И не относящийся к задаче вопрос, касаемый функции MsgBox. Где она и другие подобные описываются? В справке как-то ну очень сжато, лишь на примерах кода. Даже без указания возможных вариантов кнопок или значков в выдаваемых окнах. |
Цитата:
1. Если указан полный путь, будет завершаться процесс по указанному пути. Если имя файла, то все с таким же именем. 2. При получении дескриптора завершаемого процесса при необходимости права вызывающего процесса (инсталлятора) повышаются до уровня отладчика. 3. Последовательность завершения: 1) Посылаем окну программы сообщение WM_CLOSE; 2) Если окна нет и посылать некому (службы), то в виртуальном адресном пространстве процесса вызываем функцию ExitProcess; 3) Если сопротивляется, то TerminateProcess. |
Подскажите я сделал репак программки сохранил все пути и данные но программа после запуска начинает проверять свой ключ на оф сайте тобиш подлинность если заблокировать доступ в инет срабатывает кряк и программа дальше запускается и работает ...
возможно есть функция или скрипт inno setup что сама по себе блокирует все соединения из вне ..в инет .. или подскажите где посмотреть или как сделать если есть ... :Beer: мне нужно не вручную а автоматом и не через антивирус ...как делает это skidrow в своих крЯках.... зарание спасибо... |
DEZMONDS, На этом форуме обсуждение взлома не приветствуется.
А так, если какая программа лезет в интернет, то смотрите в сторону C:\WINDOWS\system32\drivers\etc\ на файл hosts. |
SoftLine, да но мне взлом не нужен мне надо что бы в скрипте inno setup прописать как ты говоришь в файле hosts запрет програмы или копирнуть этот хост и как на различные системы винды указать путь? антивирус наверно сразу орать будет что типа репак лезет в запрещенные файлы... и воозможно это сделать автоматом? или подскажите в правельном направлении думаю? через inno setup это делать или кряк дописивать?
|
DEZMONDS, вам нужно знать веб адреса на которые лезет программулина и соответственно сделать их локальными.
Прописать в хост примерно такие строки Код:
127.0.0.1 forum.oszone.net |
YURSHAT, да я понял ... но все же только вручную? или можно как то через скрипт инно?
|
тут то, что тебе нужно. грузим файл в стринг-лист, дописываем туда-же нужные строчки, снова сохраняем в файл. для хоста потребуется запросить права админа - парой страниц назад найдешь, полный пример именно для хост-файла - тоже есть на форуме, хотя в примере по ссылке все что нужно - указать нужный файл для полноценного примера. в который раз убеждаюсь - все форумы по сабжу можно закрывать - решены уже совершенно все вопросы, многие не по одному разу, единственное, что поддерживает жизнь форумов в этой тематике - лентяи, которым нужно, чтоб все сделали за них. Даже нажали кнопку в поиске.
|
|
к #532 дополню - более корректно перевод строки будет +chr(13)+chr(10)+
chr(13) - возврат каретки в начало chr(10) - собственно, новая строка |
inno умеет только bmp в формы вставлять? как быть с прозрачностью фона, ведь у каждого своя тема оформления венды и установщика?
|
для прозрачных изображений была написана библиотека botva2.dll, есть еще формат bmp 32 бита, но инно его не умеет
|
Gnom_aka_Lexander,
ReplaceColor := clWhite; ReplaceWithColor := clBtnFace; не помогут? |
R.i.m.s.k.y., иногда помогают. но иногда такое г.. получается, что просто диву даешься :) в принципе, я сам предпочитаю именно с битмапами работать, просто рисуешь все элементы каждой страницы целиком и все.
|
Цитата:
может упростить задачу? фиксировать цвет фона? какие элементы тогда нужно гвоздями прибивать? |
Элементы - в том смысле, что всякие рамочки, панельки и тому подобное.
При отрезании цвета косяк будет на переходах цвета - там будет грязь состоящая из фонового цвета и пикселей полутонов вырезанного. |
нету стандартных ивентов для WizardForm, типа OnMove, может и добавят, потом. поэтому только каллбек и никак иначе. почему-бы в каллбек распаковки не добавить ловлю сообщений и окна и обработку WM_MOVE?
|
Gnom_aka_Lexander, ещё есть Application.OnMessage
http://forum.oszone.net/post-1894849-1439.html http://forum.oszone.net/post-1660375-1363.html я там тоже отслеживал событие WM_MOVE но как обычно облом. :( |
Цитата:
|
Не могу понять, по какой причине не срабатывает ISSkin. Помогите разобраться пожалуйста!
Делаю вот так: |
Версия длл-ки - анси-юникод должна совпадать с версией инно, именно поэтому в комплекте их две - одна для анси, другая для юникод.
|
Цитата:
А для чего нужна ISSkinEx.dll? |
popt2t, ISSkinEx.dll - вроде тоже самое, как ISSkin.dll; загрузка скина.
|
Системные месседжбоксы:
1. выглядят жутко со скином 2. Их трудно программно сдвинуть в сторону или отобразить не по центру 3. Нельзя изменить размер кнопки и пр. Поэтому запилил под свои нужды самопальный месседжбокс, который умеет: старый месседжбокс: ===================================================================== UPD: Новый месседжбокс :grin: способен: 1. в точности подстраиваться под размер текста 2. возвращать результат 3. самозакрываться 4. отображать те же системные иконки(берёт у системы), что и системный + ещё одну с вопросом 5. воспроизводить системные звуки под все четыре типа иконки свой вызов: function ShowMessageEx(sMessage, sCaption: String; uBtnType: UINT; tMessageType: _MSG_TYPE; dwMessageTimeOut: DWORD): Integer; где sMessage - сообщение sCaption - заголовок окна uBtnType - комбинации кнопок (на данный момент 3: MB_YESNO, MB_OK, MB_OKCANCEL). tMessageType - тип сообщения (4 своих типа со звуком на каждый: mError, mInformation, mQuestion, mCriticalError) dwMessageTimeOut - время до закрытия в миллисекундах возвращает в зависимости от кнопок: IDOK, IDNO, IDYES, IDCANCEL если МБ самозакрылся то возврат по умолчанию: IDNO, IDCANCEL реализация: грузим сообщение в TStringList в цикле длиной в TStringList.Count создаём динамичный массив TNewStaticText(один под другим) получаем высоту формы ClientHeight := StaticArray[0].Height*ArrayLength + ScaleY(70); (+70 пикселей на кнопки) ширина - самый длинный TNewStaticText + 90 если ширина МБ равна ширине монитора (аналогично с высотой) то рекурсивно выводим сообщение что он не помещается, выходим из процедуры делал под потребности "полу-распада":), но кому нужно забирайте КОД: ================================================================ |
можно ли менять значение Uninstallable=false секции Setup во время установки? а именно после выбора компонентов
|
R.i.m.s.k.y., это один из тех параметров, который можно менять. В качестве значения можно использовать булевую функцию, считывается значение в начале установки, когда начинается запись в лог удаления.
Код:
[Setup] |
Цитата:
И помоему должно быть Uninstallable={code:isUninstallable} |
Цитата:
Цитата:
Код:
[Setup] |
Цитата:
Цитата:
|
Подскажите кто-нибудь функции для следующих действий:
1. Найти в каталоге установщика zip-архив по маске; 2. Открыть из архива текстовый файл; 3. В файле найти заданную строку. |
Всем привет!
Y меня проблема... Не могy перенести текст на новy строкy см. скриншот: http://i53.fastpic.ru/big/2012/1219/...3a3d65d6e3.png Код:
Caption:='!ВНИМАНИЕ!\n %n \% Клиент распакуется:'; И как можно перемещать этот инсталл при нажатии в любyю его точкy? Заранее благодарен! |
Dark_Delphin, про перенос строи в коде, буквально на прошлой странице было. по второму вопросу тоже было, и видимо нужно в шапку, раз вы пользоваться поиском не умеете...
там где WizardForm - укажешь свою поверхность, которая у тебя снаружи. |
Gambetto,
1. Не понятен вопрос. Просто найти по маске ? Вот скрипт, находит файлы по маске и выводит список найденных файлов в ListBox. 2. |
2. Наверное невозможно сделать такое.
возможно. Я давал пример замены файла в зип-архиве. распаковка строго заданного файла и упаковка другого файла в этот архив. Ну да, для этого нужно целую тему полопатить. Но мне лениво вспоминать, как я это делал. и за кого-то лопатить тему - тоже неохота. Ответ есть, значит все, что нужно - просто его найти. |
Gnom_aka_Lexander, я имел в виду, что именно так как описал Gambetto невозможно. а так как ты описал, это да. сначала распаковать определенный файл, в темп например, а потом его прочитать.
|
Gnom_aka_Lexander, да. Спасибо большое, всё получилось.
В чемь может быть проблема, я вставил в скрипт себе код для скина, но после компилирование и запуска инсталла скин стандартный. Я скачал даже пример и его же компилирую и запускается инсталл с стандартным скином... |
Dark_Delphin, потому, что IsSkin.dll не соответствует версии компилятора. это тоже буквально пару страниц назад было. это единственная возможна причина.
|
Gnom_aka_Lexander, блин=) Точно, спасибо.
|
|
Цитата:
В зависимости от значения type устанавливать ту или иную программу. Спасибо за примеры. |
Всем привет.
Помогите сделать, чтобы при распаковке файлов прогрес бар работал (Распаковка файлов, которые собраны компилятором) ставил ssInstall и та же проблема. Скачать |
El Sanchez, К сожалению имеется серьёзная проблема с кодом распаковки архивов 7зип, вылетают ошибки
раньше думал, что конфликт с таймерами (Вин Апи) и с подменённой оконной процедурой (пару страниц назад показывал), но вот убрал их все для теста и ситуация не улучшилась :( вот примеры ошибок: последняя с ошибкой указателя иногда выделяет строку RtlMoveMemory(ei, _lpEis, SizeOf(ei)); также бывает "stack overflow" если раскомментировать PercentsLabel.Caption := FormatFloat('0.#0 %', (dwCurrentSize*100)/ei.dwFileSize); на 4-м скрине всё крутится вокруг каллбэк функции Поймать ошибки трудно. Запускал в цикле - 1 устанока = 1, 2 ошибки ингда в начале цикла иногда к 10 - 20 распаковке (цикл длиной от 1 до 30), пару раз из около 10 тестовых установок бывало без ошибки Признаю: код очень классный и урезать(или даже отказаться от использования) очень трудно Просьба: Если есть шанс исправить положение, то прошу помочь! |
Johny777,
1. Зачем тебе wide string? Передаешь в 7z юникод (кириллицу)? Не выйдет, нужно по-другому: в функциях SevenZipCreateArchive и SevenZipExtractArchive после формирования комстроки s7cmd допиши CharToOemBuff(s7cmd). 2. SevenZipKillOwnerWindowEx(hWnd). К дескриптору какого окна callback привязан? Можешь просто 0 передавать. 3. RtlMoveMemory. Тут по указателю получаем структуру. В момент ошибки _lpEis указывает на невесть что. 4. Встроенный прогресс работает при тех же архивах? |
Цитата:
также без wide string не идёт распаковка в темп, а она тоже желательна если сохранять архив, Цитата:
2. нули и стояли 3. Я читал, что функция малость глючная http://www.delphimaster.net/view/4-1086735785 4. работает, на нём и отображаю |
Помогите, пожалуйста. Пост #1455
|
Dark_Delphin, проблема была в том, что ты скрыл OuterNotebook на котором лежал InnerNotebook, на котором в свою очередь лежал родной прогрессбар
поправил: PS: за каракули в коде меня не пинать :), так и было =============================================================================== El Sanchez, добавил CharToOemBuff(s7cmd) убрал для теста AnsiToDos() из s7cmd := 'a "' + AnsiToDos(ArchiveFilename) + '" "' + RemoveQuotes(FileList[0]) + '"'; получил s7cmd := 'a "' + ArchiveFilename + '" "' + RemoveQuotes(FileList[0]) + '"'; всё равно ошибка stack overflow на строке RtlMoveMemory(ei, _lpEis, SizeOf(ei)); :( также вчера пробовал заменить функцию RtlMoveMemory на дельфийскую тк инно ассемблер не может убрал в библиотеку код: загрузил из библиотеки процедуру, при распаковке архива опять что-то с указателями но как я понял функции аналогичны, хотя может дело и не в RtlMoveMemory прикладываю на всякий случай библиотеку, скрипт с импортом функций, исходник библиотеки процедуры: procedure MoveMemory(Destination: Pointer; Source: Pointer; Length: DWORD); external 'CopyMemory@files:Memory.dll stdcall'; procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: DWORD); external 'CopyMemory@files:Memory.dll stdcall'; procedure FillMemory(Destination: Pointer; Length: DWORD; Fill: Byte); external 'CopyMemory@files:Memory.dll stdcall'; procedure ZeroMemory(Destination: Pointer; Length: DWORD); external 'CopyMemory@files:Memory.dll stdcall'; |
Johny777, Спасибо.
Ничё страшного, это не проблема) |
Доброе время суток назрел очень интересный вопрос.
Сделал репак программы в коде прописал что бы в хост блокировался оф сайт ... но вот в чем проблема программа все ровно проверяет файлы каким образом не знаю. Но что интересное нашел когда при выключенном инете в ручной активации на win 7 в директории C:\ProgramData создается папка моей проги и в ней кидается файл с лицензией и далее все работает ..даже с включеным инетом. нужный процесс опишу: win 7 Пункты: 1.Запускаем установку выбираем директорию установки по умолчанию (диск "C:\Program Files (x86)") все программа устанавливается копируются ключи реестра и т.д. создается ярлык. 2.Помимо этого хотелось что бы в пути "C:\ProgramData" в которой создалась предварительно папка по пункту "1" еще установился нужный мне файл для активации программы. (файл присутствует в "скрипте" и в программе ) Нужно так что бы этот файл из установленной программы копировался или переместился в указанную мной директорию. "C:\ProgramData" Я понимаю что это константа для win7 но так же хотелось и узнать код для ХР/Win 8/Vista читал форум наткнулся на код константы для хр {pf} но так и не понял .... надеюсь мысль правильно изложил потому как не знаю как это действие называется красиво. Помогите пожалуйста подскажите код для константы программных файлов для win7/win8/xp/vista |
C:\ProgramData - {localappdata} Для любой системы. просто в ХР и в системах выше ХР она ведет в разные места. но этот путь всегда будет правильным.
|
Цитата:
Цитата:
|
El Sanchez, извиняюсь, попутал, имел в виду {commonappdata}...
|
Вложений: 1
DEZMONDS, Вот некоторая инфа.
|
Цитата:
Код:
#define MyAppName "Unity 3D" |
Цитата:
Код:
Source: E:\Unity_4.0.7f\Unity_v4.x.ulf; {%ALLUSERSPROFILE} Код:
Source: E:\Unity_4.0.7f\Unity_v4.x.ulf; DestDir: {%ALLUSERSPROFILE}; Для убедительности пути назначения, можете опробовать скрипт по умолчанию, т.е |
Господа, товарищи, и неопределившиеся :)
Кто работал с либой mediainfo.dll? как в ней вытаскивать параметры файла из инно??? |
|
Gnom_aka_Lexander, а где путь до файла? можно более подробный пример для файла C:\Avi.avi и вывод в MSGbox параметров файла
|
MediaInfo_New - создает скажем так, сессию чтения медиапараметров.
MediaInfo_Delete - параметр - дескриптор полученый при вызове MediaInfo_New. удаляет сессию получения параметров. MediaInfo_Open - первый параметр - дескриптор сессии, второй - путь к файлу. открывает подсессию для текущей сессии. MediaInfo_Close закрывает текущую подсессию. MediaInfo_Inform - первый параметр - дескриптор либо общей сессии, либо подсессии, получаемой из MediaInfo_Open, второй параметр - nil. возвращает строку информации. в общем, все это по наитию, аналогично ковырять дальше, будет время - займусь сам. |
Подскажите пожалуйста.
Как удалить окошко создания ярлыков (SelectProgramGroupPage), чтоб я мог сразу после нажатия кнопки Далее с окна выбора компонентов приступить к установке? И как заставить секцию [INI] обходить атрибут "только для чтения" редактируемого файла (win7, файлы в {userdocs}) |
Цитата:
а как сделать что бы файл создавался не прямо в эту директорию "C:\ProgramData" а еще создавал папку и туда копировался вот такой путь надо сделать : "C:\ProgramData\Unity\Unity_v4.x.ulf" я так понял нужно сделать Код:
Source: E:\Unity_4.0.7f\Unity\Unity_v4.x.ulf; DestDir: {%ALLUSERSPROFILE}; |
Подскажите пожалуйста.
Как удалить окошко создания ярлыков (SelectProgramGroupPage), чтоб я мог сразу после нажатия кнопки Далее с окна выбора компонентов приступить к установке? И как заставить секцию [INI] обходить атрибут "только для чтения" редактируемого файла (win7, файлы в {userdocs}) |
Цитата:
Код:
[Setup] |
boss911 Спасибо большое) а ведь знал что все просто.
Может подскажешь еще насчет INI/. Вот пример строки При установке ругается что не может изменить file.ini (в том случае когда ему выставлен атрибут "только для чтения") Можно ли это как нибудь обойти? (win7) |
DEZMONDS,
1. нет, копирует файл в папку DestDir, папки нет - создает 2. дописать путь Source: E:\Unity_4.0.7f\Unity\Unity_v4.x.ulf; DestDir: {%ALLUSERSPROFILE}\Unity\; 3. Если тебе нужно переименовать файл то пользуйся параметром DestName 4. Вместо виндовой {%ALLUSERSPROFILE} можно пользоваться инношной константой {commonappdata} |
Цитата:
DestDir: {%ALLUSERSPROFILE}\Unity\; или так DestDir: {commonappdata}\Unity\; |
DEZMONDS, Смотрите, идёт например
Код:
Source: E:\Unity_4.0.7f\Unity\Unity_v4.x.ulf; DestDir: {%ALLUSERSPROFILE}; Для Source нужно указать путь Source: Путь_к_файлу. Что касается DestDir - это путь назначения, т.е то, куда при установке будут помещены файлы. Для DestDir так же нужно указать путь DestDir: Путь_для_файла. Не большой пример: Код:
Source: Путь_к_файлу; DestDir: Путь_для_файла; Если вам нужно чтоб при установке ещё и переименовывало файл на заданный вами, т.е например в инсталлятор попал файл App.exe и вам нужно чтоб у него было другое название и/или расширение, то нужно добавить DestName:. DestName: очень удобно использовать в случаях когда у вас одинаковые файлы с теми же именем и расширением. К примеру у вас имеются App.exe и App.exe, то можно сделать так: Код:
[Files] |
Цитата:
У меня есть на диске "Д" программа я ее запаковываю, в ней имеется файл лицензии, сохраняю ключи реестра. мне надо сделать так что бы программа работала на другом компе то есть она устанавливалась в любое место диска по запросу пользователя а файл лицензии копировался в профиль пользователя винды на который устанавливается ... в директорию с новой папкой. что бы ключ заработал с программой, так как одного ключа реестра недостаточно."C:\ProgramData\Unity но принцип я понял и уже компилирую ...спасибо всем за объяснения ... Цитата:
больше всего пригляделся вот такой вариант: Цитата:
Код:
DestDir: {%ALLUSERSPROFILE}\Unity\; |
Цитата:
Цитата:
Пути можно по разному указать, либо так: Код:
Source: D:\Application\app.exe; DestDir: {app}; либо так: Код:
Source: Application\app.exe; DestDir: {app}; Цитата:
|
smile7
Знаю только так: Код:
[Files] Иначе через секцию [code] надо, тут я не силен. |
|
boss911 Получилось! Спасибо
|
smile7,
Цитата:
Цитата:
Цитата:
короче вот всё выше описанное в виде кода-примера: |
Цитата:
это конечно хорошо, что Вы стараетесь всё сделать через код, знаете язык и прочее, но в данном случае вы предлагаете человеку создавать велосипед.. Инно - это очень мощный инструмент именно для создания инсталляторов, поэтому и автор этого прекрасного инструмента облегчил жизнь людям, которые не сильны в языке objectpascal, создав секции, константы и тд и тп... И если вопрос решается стандартными средствами Инно, так лучше в код не лезть. Лично моё мнение. Цитата:
|
Добрый вечер. Какое значение нужно поставить в секции Flags, чтобы на компоненте уже стоял флажок?
|
LinkOFF,
Код:
[Types] |
Возможно ли сделать так, чтобы выбранные в инсталляторе компоненты по умолчанию подгружались из .ini файла который находиться в папке с инсталлятором?
|
Raf-9600, конечно, сам так делаю :)
вот пример создай рядом с экзешником инсталла ини файл следующего содержания код-пример: если ини большой, то его лучше парсить классной функцией El Sanchez-а |
Johny777, а в чем принципиальное отличие между твоим кодом и махиной от El Sanchez-а?
|
Raf-9600, в скорости
смотри функция GetIniString('Components', 'a', '', ExpandConstant('{src}\PreSelector.ini')) = 'yes'; при каждом вызове обращается к файлу PreSelector.ini на жёстком диске если вызовов 2, то ты и глазом моргнуть не успеешь как они пройдут, но если в ини файле 4 секции и 20-30 ключей, то скорость падает - не заметно для глаза, но когда оптимизация везде по мелочам хромает, то это уже серьёзно поэтому функция El Sanchez-а загружает весь ини файл, в динамичный массив записей, после чего оттуда с учётом особенностей ини файла как такового заполняется структура TIniFile, те 1 вызов с жёсткого диска, а все дальнейшие - чтение из оперативки, что несоизмеримо быстрее короче вот отсюда пару странниц прочитай http://forum.oszone.net/thread-235078-92.html с 919 поста |
Johny777, Благодарю за пояснение, у меня как рас более сотни компонентов %)
Остался только мелкий вопрос, как можно снять галочку из компонента в зависимости от параметров в .ini? Т.е. чтобы допустим если в ini Код:
[Game] |
Raf-9600, в Voice=false нет необходимости
Checked[Items.IndexOf('a')] принмает булев значение (True, False), но мы проверяем условие (сравниваем значения) те GetIniString(...) = 'yes' значит True а если там нет 'yes' или стоит что-то другое или пусто то будет False, те айтем не будет отмечен, то бишь галки не будет Цитата:
|
Цитата:
Прототип: function GetIniBool(const Section, Key: String; const Default: Boolean; const Filename: String): Boolean; |
Цитата:
Цитата:
Возникла проблема. Почему-то часть параметров работают отлично, но остальные вызывают ошибку "List index out of bounds" при запуске инсталлятора. Собсно вот кусок кода, почему-то строчка c "cm:Game" проходит отлично, а "cm:backup" вызывает ошибку: Код:
procedure InitializeWizard(); |
Цитата:
Raf-9600, функция function IsKey(const Section, Key: String; iFile: TIniFile): BOOL; где первый входной параметр - String - имя секции второй входной параметр - String - имя ключа третий входной - возвращаемое по умолчанию булев значение (а то что если секции или ключа нет, а компонент по умолчанию должен быть отмечен или не отмечен) четвёртый входной параметр - TIniFile если в таком-то ключе такой-то секции значение 'True', то функция вернёт True, в противном случае False пример: ============================ лучше юзай для своих сообщений вместо функции ExpandConstant('{cm:backup}')) другую - CustomMessage('backup') она в примерно 2 раза быстрее вернёт строку сообщения для текущего языка тест: Цитата:
=================================== UPD: обновил функцию |
Цитата:
Если у тебя есть время, посмотри, пожалуйста, более полный исходник: |
Цитата:
|
Цитата:
|
Доброго времени суток, господа. Не подскажите как в ISDone 6.0 в LabelCurrFileName: TLabel; (надпись "Извлекается файл") показывалось только название извлекаемого файла в данный момент и никакого пути перед ним?
|
Nightwishh, Ответ - использовать ExtractFileName :
Цитата:
|
Gnom_aka_Lexander, тогда уж MinimizePathName не нужно.
LabelCurrFileName.Caption:=ExpandConstant('{cm:ExtractedFile} ')+ExtractFileName(CurrentFile); |
Цитата:
|
Цитата:
Код:
procedure InitializeWizard(); |
Цитата:
WizardForm.ComponentsList.CheckItem(i, coCheck); для выбора компонента WizardForm.ComponentsList.CheckItem(i, coUncheck); для снятия галки с компонента. Почему именно так? потому, что при этом выполняется OnClickCheck для ComponentsList, чего не происходит при вашем варианте. и при обновлении, как не расставляй галки, с помощью Checked, при установке это не будет учтено. плюч даля зависимых компонентов при данном способе, достаточно указать только то, что должно быть выбрано, отпадает нужда проверять ошибки в выборе зависимых компонентов, что уже громадный плюс к производительности. ну и фугкцию лучше все-таки булевую использовать, тем более что джонни дал пример. |
Цитата:
Цитата:
Цитата:
Цитата:
Код:
WizardForm.ComponentsList.CheckItem(i, coCheck) := GetIniValue('Game', 'Backup', '', iFile) = 'true'; Цитата:
|
Цитата:
Код:
if GetIniValue('Game', 'Backup', '', iFile) = 'true' then WizardForm.ComponentsList.CheckItem(i, coCheck) |
Цитата:
|
Raf-9600, я просто говорю, как будет более правильно чекать компоненты. как делать на самом деле - дело исключительно ваше. может и я не прав, но есть ощущение у меня, что все-таки именно предложенный мной вариант более правилен.
|
Raf-9600, 100 компонетов - много,
Мой тебе добрый совет - разбей компнеты по тематической составляющей получившиеся группы компонетов помести на страницы настройки TInputOptionWizardPage или простые страницы с чеклистбоксами на них короче делай что-то вроде инсталла K-Lite Codec Pack который хоть и перегружен настройками, но не под каким углом не напрягает свалившейся сразу информацией |
Цитата:
Цитата:
У меня ещё один нубский вопрос: как сделать чтобы и на SelectTasksPage галочки тоже расставлялись в зависимости от того что указано в .ini? И есть ли возможность сделать чтобы компоненты узнавались не по названию, а по номеру? Ибо внезапно оказалось что у меня просто туча разных компонентов с одинаковыми названиями =\ |
Цитата:
ComponentsList: TNewCheckListBox; TasksList: TNewCheckListBox; RunList: TNewCheckListBox; Цитата:
только чтоб у тебя не было, что один компонент добавляется в зависимости от чего-то, а то компонента в середине нет, номера сдвинутся и получится ерунда WizardForm.ComponentsList.Checked[индекс] Цитата:
типа того, например у диаблы знаю 3 озвучки и разные варианты видео - на одну страницу, кастомную короче я б сделал так (комментарии внутри) ещё советую изучить \Inno Setup 5\Examples\Example_NewCheckListBox.iss |
Цитата:
Соль в том, что по умолчанию я уже выбрал лучший набор компонентов, и предполагается что юзер там вообще ничего не должен менять. Как показала практика, юзер действительно не хочет ничего выбирать, ему бы лиш бы быстрее на кнопку "далее" покликать, что в твоём варианте более затруднительно чем в моём :) Кстати, если поклонник этой игры, можешь скачать, оценить - (удалено) (мне сказали что варез тут запрещён, так что кому нужна ссылка - в ЛС пишите.) |
Цитата:
кстати говоря, пока админы празднуют, смотри что у меня есть (давно скачал и очень доволен) узнаёшь? полная озвучка... ОК почитаю. Цитата:
Цитата:
к тому же у меня пример нацелен на лучшее восприятие. Приме: тебе дают список из 100 вопросв или по одному листку по 5-10 вопросов через промежуток времени - психологическая фигня, - естественно по 10 вопросов легче отвечать, а 100 сразу отбивают желание Цитата:
|
Цитата:
Цитата:
Код:
for i := 0 to WizardForm.ComponentsList.ItemCount - 1 do Цитата:
Цитата:
А в новой версии никаких существенных изменений не предвидится. Так что можно уже сейчас скачивать. Цитата:
|
Цитата:
Код:
[CustomMessages] ItemCaption[индекс] возвращает строку а не число |
Цитата:
|
Цитата:
и все остальные компоненты по аналогии |
Johny777, с наступающим Вас!
|
С Новым Годом всех! И в особенности Johny777, а так же других участников форума, помогающих абсолютно посторонним людям создавать действительно классные инсталляторы!
|
Всех с Новым 2013 годом, всем самого главного, здоровья. :4u:
|
Господа, а не поскажите, можно ли из ISDone 6.0 убрать время и процент распаковки не в самом окне инсталла, а в рамочке на панеле задач (не знаю как это называется, а скрина нет под рукой)?
|
Цитата:
|
Пацаны скажите пожалуйста
1. правильно ли портировал отсюда http://www.swissdelphicenter.ch/torr...code.php?id=55 нижний Delay (задержку) 2. действительно ли он хорош (работает уж точно, но вот реализация... В общем хотелось бы чтоб кто-нибудь знающий глянул) наперёд скажу, что обычный Sleep() не подходит, тк мне нужно задержать исчезновение формы на пару секунд, а с ним на ней всё замирает. Решение - код выше =============================================================================== alert30, Цитата:
|
Не, речь идёт об ISDone
Код:
function ISDoneInit(RecordFileName:string; TimeType, Comp1,Comp2,Comp3:Cardinal; WinHandle, NeededMem:longint; callback:TCallback):boolean; |
Nightwishh, замените MainForm.Handle на WizardForm.Handle.
|
Здравствуйте. Как в инсталляторе сделать проверку целостности игровых архивов перед началом установки?
|
Как делают Механики? Они же запаковывают фриарком, файлы извлекаются в {app}, а потом эти архивы удаляются, а остаются извлечённые файлы. Как мне так сделать?
|
Nikish X, по поводу распакования FreeArc-ом делается ISDone, почитай несколько страниц, там есть.
А Вот по поводу удаления архива ARC-а, после распакования FreeArc-ом в инсталляторе, читаем, начиная с 478 поста. |
Цитата:
Цитата:
|
Цитата:
|
Я понял, что тупо паковать архивы в архивы, за это спасибо alert30 и nik1967. Теперь меня интересует как precomp'om всю папку сжать?
|
Nikish X, например, почитать здесь Пережатиe/Pекомпрессия/Oптимизация файлов для лучшего сжатия.
|
nik1967, можешь залить ISMD5 на rghost.ru?
Цитата:
nik1967, и еще хотел спросить как у вас получается сжимать с ОЗУ упаковки: 4тыс. мб с чем-то? У меня максимально получается 1811мб... |
nik1967, можешь помочь вставить на странице прогресса проверки кнопку "пропустить"?
|
Привет. Всех с 2013г. Как создать бин файл с размером допустим.. 3гиг? А то макс размер можно байт 2100000000.
И как поставить максимальный метод сжатия? Подправьте мой скрипт. В некоторых играх репаках встречал бин весит 4.3гиг. |
Tima182, фриарком пользуйся и можешь архив хоть 30гб сделать...Только придется пользоваться скриптом распаковки FreeArc или просто ISDone. В шапке смотри.
|
А как ехе установка сразу 4гиг весит?
|
|
За сжатие спасибо, а без ультра можно?
|
Цитата:
|
Цитата:
|
Полезное сообщение
|
Все понял, спасибо.
|
Цитата:
|
Понятно, а как создать иконку установки , а то я приклеплял иконку для установки, но и в удаление иконка был как у установки...
Как только для установки сделать? Не для удаления. |
Tima182,
[Setup] SetupIconFile=MyProgSetup.ico |
Цитата:
|
Цитата:
|
Цитата:
[Setup] Compression=zip/1 |
С ISTool сжатие отключил, вроде бы компилляция работает без сжатия.
Да реально без сжатия создал установку. Спасибо большое за помощь! Цитата:
У меня "SolidCompression=true" Это правильно? Или надо yes? |
|
Может быть у всех установок игр один AppId={{8F8E29B7-7389-4B1C-8128-EC14ED994C1C} ?
|
Tima182, AppId - это Application ID, который закладывает производитель. его абсолютно нельзя делать одинаковым у любых приложений. Читаем форум, тыщу раз разъяснялось.
|
Я разобрался, это папка удаления. В реестре.
|
Цитата:
|
Цитата:
Это именно Application ID В реестре может быть прописано как AppId так и AppName энивей это не папки а элементы "Установка и удаление программ" записал в черный блокнотик "раздачи от Tima182 с рутора не качать" :) |
Ну, если генерировать новый ID в ISTool , и изменять скрипт, можно не создавая новая скрипт создавать установку программ/игр?
Я делал генерировать, писало что используется системой что ли... |
Tima182, забудь про ISTool, если не пользуешься версией инно ниже 5-й, есть более новые инструменты, которые более корректно работают. В шапке есть ссылка на тему, где их можно взять. ID приложения или игры изначально нужно стараться брать тот, который заложил разработчик. а генерировать инно и сама его умеет, никакие ISTool-ы ей для этого не нужны.
|
Gnom_aka_Lexander, кто кроме истула умеет импортировать в скрипт инишники и рег-файлы?
|
Мужики, подскажите что нужно написать, чтобы заполнились пустые поля
и если можно озвучте плиз все пункты, которые можно заполнить в "свойствах" файла "коментарии", что там ещё пишут? ps очень раздражает, что inno вставляет свой комент в свойства файла, хочется это присечь ps2 что написать, чтобы удалялись и папки после распаковки, файлы в них удаляются, а пустые папки остаются |
ispolin,
Цитата:
код: есть ещё больше - например в списке удаления программ, внизу окна, когда выделяешь элемент для удаления. Читай русскую справку. В ней нужные тебе директивы секции [Setup] подробно расписаны ссылка на справку: http://sendfile.su/736752 Цитата:
[UninstallDelete] Type: dirifempty; Name: "{app}\CrapFolder" |
Подскажите, пожалуйста, как через код инно:
1. добавить в разрешения папки текущего пользователя для полного доступа? 2. Изменить права уже существующего? |
такой вопросик
пошла распаковка файлов, затем у меня в скрипте прописан запуск строннего приложения оно запускается и работа уже продолжается с этим приложением т.е установщик уже не нужен, а на заднем плане висит окно установщика inno, как его скрыть? я прописал в скрипте DisableFinishedPage=true но это скрывает лишь окно завершения установки, нужно же скрыть и предыдущее окно |
ispolin, можно использовать батник с тасккиллом, просто пропиши в секции "Выполнить после установки", или оба закроются?
|
Здравствуйте !! хотел поменять цвет прогресс бара (без ботвы и "*.bmp") = всё получилось, но стоило приделать исдон и все пропало . вот сам пример брал с
этого сайта. подскажите что подправить кто не сильно занят |
audiofeel,
Можно ли как-нибудь передвинуть компаненты на стандартном компанентлисте (или на созданном)? |
Цитата:
ispolin, если через секцию RUN, то используем флаг Flags: nowait. если сделано в секции Code, функцией Exec, то в качестве TExecWait указать ewNoWait. |
поделитесь, пожалуйста, скриптом для процентов зеленой колбасы распаковки внешнего зип/рар архива
не фриарк |
Использую код на растянутый WizardSmallBitmapImage но столкнулся с проблемой: если в операционке выбрать увеличенные шрифты (в Панель управления\Оформление и персонализация\Экран) то картинка оказывается маленькой:
Вот код который я использую: Код:
procedure InitializeWizard(); |
Цитата:
вот корректный способ: ====================================================================================== R.i.m.s.k.y., ну блин даёшь! :) При тебе El Sanchez портировал в этой части темы модуль дельфи распаковки/запаковки архивов 7-zip, который использует родную библиотеку архиватора, а он, архиватор, способен распаковать http://www.7-zip.org/ всё что тебе нужно и более того. с отображением прогресса, процентов и прочей инфы! |
Вложений: 2
Я всё никак немогу понять что за ошибка в ботве?http://forum.oszone.net/attachment.p...1&d=1357855281
она меня уже очень сильно бесит! прошу помогите плиз вот сам скрипт скачать чё токо непробовал, сёравно ошибка. |
Цитата:
|
Johny777, искал уже, не нашел
помню что был в этой теме, а листать 156 страниц - идиотом сделаешься И отвечая на свой прошлый вопрос - как дать права папке всем: Код:
procedure GrantFolder(Folder : string); |
Поиск по теме оказывается сломан
Вбиваю 7-zip которое вот точно есть выше - результат ничего не найдено Однако по слову проблема результаты есть так что вопрос двойной: - сслыка на портированный скрипт - пример его использования для двух внешних архивов {src}\zip.zip {src}\zip2.zip c процентами зеленой колбасы |
Цитата:
|
Mailchik, из справки:
Takes an X coordinate or width and returns it scaled to fit the size of the current dialog font. If the dialog font is 8-point MS Sans Serif and the user is running Windows in Small Fonts (96 dpi), then X is returned unchanged. Берет X координат или ширину и возвращает масштабируемый, чтобы соответствовать размеру текущего диалогового шрифта. Если диалоговый шрифт - Sans Serif MS с 8 точками, и пользователь запускает Windows в Маленьких Шрифтах (96 точек на дюйм), то X возвращен неизменный. Походу это только для лейблов. Я сам всегда всё через ScaleX ScaleY делал, но недавно прокололся на картинках при изменении размера текста в винде. Гуру поправте меня, если я не прав. |
nik1967, это в справке так написано, а на практике ScaleX и ScaleY мне помогали со всеми визуальными компонентами, которые я использовал. маленький пример которым можно проверить:
Код:
[Setup] |
Подскажите, пожалуйста, как в inno вызвать функцию inet_addr (для проверки правильности введенного ip-адреса) из библиотеки winsock? В паскале достаточно было ее прописать в разделе uses, а здесь как?
|
Vstanka, только это понарыл, проверьте и отпишитесь:
|
R.i.m.s.k.y.,
Цитата:
вбей для интереса в гугл: forum oszone function SevenZip(const _hwnd и получишь по первой ссылке http://forum.oszone.net/post-2012963.html читай с поста 1211 до 1225 конвертация ком строки не нужна, читай под конец http://forum.oszone.net/post-2050399-1435.html Цитата:
==================================================================================================== === nik1967, Цитата:
вот смотри: тест в цикле длиной в 1 000 000: функция скеил замедляет выполнение на примерно 30% при таком раскладе не использование этих функций в пользу указания координат напрямую для установки свойств ширины/высоты ничего не даст кроме сокращения времени на писанину. Такой задержкой можно пренебречь единственное что ловил себя на записи SetBounds(UninstallButton.Left - UninstallButton.Width - ScaleX(16), ... - не правильно нужно: SetBounds(ScaleX(UninstallButton.Left - UninstallButton.Width - 16), ... ==================================================================================================== = alert30, полезный код, сохранил, спасибо! |
Цитата:
а что два архива ему на распаковку не подсунешь? нужно мудровать с прогрессбаром? Еще и кнопку cancel распаковке/упаковке никак не приклеить? я ж в этом не силен El Sanchez в скрипте ошибка в SevenZipExtractArchive 7зип не понимает маску *.*, ему нужно * Цитата:
SevenZipExtractArchive(szStatus.Handle, 'y:\Games\RedAlert2.7z', 'movies01.mix,movies02.mix', False, '', True, 'r:\', False, CallbackAddr('ArchiverCallbackProc')); то пишет No files to proceed комстрока 7зипа совсем неправильная x "y:\Games\RedAlert2.7z" -o"r:\" "movies01.mix" -i!"movies02.mix" -hide -y Никак нельзя добавить несколько архивов на распаковку с общим прогрессбаром? типа SevenZipExtractArchive(szStatus.Handle, 'y:\Games\RedAlert2.7z,y:\Games\Omikron.7z', '*', False, '', True, 'r:\', False, CallbackAddr('ArchiverCallbackProc')); |
Доброе утро всем. почему у меня не получается приделать вот этот пример = " когда после установки игры, если ещё раз хочешь запустить установку автоматом, то запускается деинсталлятор?" этот пример я не могу приделать (использовать) именно в этом скрипте, или запускается и установка и удаление или ошибка "runtime error couldn't...." подскажите что и где делаю не так
|
Цитата:
|
R.i.m.s.k.y., = "Runtime Error (at 183:50) Внутренняя ошибка: An attempt was made to access Wizard Form before it has been created = это сообщение появляется вместе с окном удаления
|
audiofeel, ошибка исдана, я с ним хз
|
R.i.m.s.k.y., может есть другой пример (с чистым исданом та этот пример работает только с этим скриптом нет) З.Ы. ПРОБОВАЛ ОБЬЕДИНЯТ при помощи "джойнер" = вылазит и установка и удаление
|
audiofeel, я с исданом хз
|
audiofeel, качай свежий ISDone с руборда, затем склей правильно как-полагается. По ошибке сказано, что с функцией WizradForm перемудрил.
|
Цитата:
|
Ну посмотрите хоть мельком скрипт - может ошибка "на виду" и не такая уж из за которой "ВСЁ" "склеивать" по новой
|
audiofeel, пользователь Mailchik изъяснял эту ошибку:
Цитата:
|
Цитата:
Во-вторых, я проверил данный вами скрипт, и почему то никакой ошибки я не увидел. |
по отдельности если компилировать оба скрипта что я "выложил" выше = ошибки нет - проблема в объединение этих скриптов в один . с "#include" тоже не выходит
|
audiofeel, рабочий вариант: в процедуре деинициализации инсталла, вы освобождали WizardForm в любом случае. А если строка в реестре найдена, то инициализации не происходит, поэтому WizardForm не создаётся, и сразу же идёт освобождение не созданного объекта.. Поэтому в деинициализацию нужно было добавить условие.
|
Подскажите, пожалуйста: установщик сам определяет нужно ли перезагружаться по окончании установки (файлы были заняты, или еще что)
И если нужно перегрузиться то последняя страница wpFinished заменяется его "перегрузить сейчас/позже" Можно эту страницу как-то показывать после wpFinished или еще каким образом сделать так чтобы wpFinished отображалась всегда, а страница перезагрузки - при необходимости? |
R.i.m.s.k.y., это та-же страница, на которой находится RunList и два радиобаттона NeedRestart. есть встроенная функция, с помощью которой ты можешь сам регламентировать необходимость перезагрузки
Цитата:
Код:
function NeedRestart(): Boolean; |
Gnom_aka_Lexander, я в курсе про needrestart
пусть эта страница отображается, можно wpwelcome отобразить раньше страницы необходимости перезагрузки? или как-то дополнить ее своими чекбоксами? |
Цитата:
|
Цитата:
смотрю на редактор форм и вижу что два радиобатона перезагрузки под runlist находятся если я их сдвигаю - мои чекбоксы в [run] postinstall не отображаются, но работают |
R.i.m.s.k.y., именно. и показываются они в зависимости от необходимости перезагрузки, каковую необходимость ты можешь задавать сам.
function NeedRestart(): Boolean; как раз показывает-скрывает эти радиобаттноны, каковые лежат на финишной странице, ID каковой таки да, именно wpFinished. |
Gnom_aka_Lexander, вот этого я и не понимаю, если в редакторе форм радиобатоны сдвигаю - перестают отображаться чекбоксы которые я делаю в секции run флагами postinstall
Пусть все вместе отображаются, мне не жалко Просто у инно продвинутая система определения необходимости перезагрузки и нет нужды ее подменять Мне нужно на последней финишедпаге вывести пару чекбоксов независимо от результатов needrestart |
Ладно переформулируем вопрос: как создать свою страницу c чекбоксами перед wpFinished и на nextButtonClick своей страницы повесить свое действие?
|
R.i.m.s.k.y., пример:
Цитата:
|
Mailchik, хорошо только кнопка "назад" после установки не к месту
|
alert30, попробовала еще такой вариант:
Код:
[Setup] |
Ктонить подскажет код, чтобы инсталлятор через 10 секунд после своего запуска, распаковал в temp и запустил определённый exe?
exe-шник из папки temp ведь сможет скачать из интернета пару килобайт инфы в оперативу? |
Raf-9600,
|
Не подскажете, как сделать, чтобы в секции Run была задержка выполнения команды? Т.е. у меня предлагается пользователю выбрать запуск сервера БД и запуск приложения, чтобы запуск приложения осуществлялся чуть позже или после запуска сервера. Флаг waituntilterminated не подходит, т.к. сервер должен оставаться запущенным.. И от пользователя тоже не нужно ждать никаких действий.
|
Vstanka, я бы вставил вызов пинга там где нужно подождать
Filename: "ping.EXE"; Parameters: " 127.0.0.1 -n 20" |
R.i.m.s.k.y., а как тогда скрыть флажок, предлагающий запуск приложения, т.к. если вставить так:
Код:
Filename: "ping.EXE"; Parameters: "127.0.0.1 -n 8"; Description: "Запустить приложение после запуска сервера"; Flags: waituntilterminated runhidden postinstall; |
Vstanka,
вариант а) батник для вызова приложения, в котором первой строчкой ожидание, второй - запуск приложения вариант б) Код:
[Code] |
можно как-то определить что установщик собрался перегружать комп в конце установки не переопределяя Needrestart?
|
R.i.m.s.k.y., на этапе ssDone WizardForm.RunList уже не существует и соответственно будут ошибки, придётся работать только с переменными
Vstanka, предлагаю такой способ: к тому же заметил аномалию: если вручную добавить айтемы в RunList и установить в них галки, то при разрушении WizardForm ошибки, что их нет, поэтому их нужно удалить до деинициализации |
Цитата:
спецом проверил еще раз - работает ____________ Вопросик - чего при использовании bass.dll установщик падает с ошибкой в dsound.dll? Код:
Имя сбойного модуля: dsound.dll, версия: 6.1.7600.16385, отметка времени 0x4a5bd9fd |
Цитата:
Пользуюсь инноультра какой-то лохматой версии, инно компилер 5.4.2.ее2(а), билд 110319 |
еще вопросил по bass.dll - какие форматы он умеет?
в описании чказано xm/mod, запускаю - тишина, хотя мр3 работает |
подскажите как правильно распаковывать файлы precomp'a,а то я запаковал а они не распаковываются через скрипт isdone,пишет не найдены файлы precomp
|
Цитата:
Цитата:
вот пример накидал для xm: ссылка Цитата:
|
Mailchik а srep как распаковать?
|
Цитата:
Поставил на установщик скин через ISSkinEx.dll, но вот заковыка - самое начальное окно выбора языка установщика не "скинится". Не сутба или есть способ? |
А как в модуле FreeArc сделать запрос второго диска?
|
Как извлечь правельно скрипт из секциєю CODE(або только секцию CODE), с из исталяцийки ?
|
Nikish X, neorom, никак.
R.i.m.s.k.y., Ставь через простой ISSkin.dll. Пример как полностью заскинить окно выбора языка: |
Цитата:
|
Цитата:
Ошибка компиляции --------------------------- Invalid prototype for 'InitializeLanguageDialog' Цитата:
Секция кода только в виде bin файла |
Цитата:
Mailchik, по-моему проще было написать в mySelectLanguageForm.OnClose. чем изголятся и на крестик что-то ставить. ну хотя оно и так работать будет как надо. |
Возможно где-то єсть архив скриптов инсталашок для разних програм ?
|
А имя инсталлятора можно как-то вычислить? Мне его нужно передать как параметр для запуска одного файла...
|
Raf-9600,
Код:
ExpandConstant('{srcexe}') - полный путь до инсталлятора |
neorom, шапка для чего или идите к богу по имени "Гугл", он все знает.
З.Ы. В соседней теме там тоже много плюшевых скриптов. |
блин не могу понять как среп распаковать,фриакр архивы распаковывает,а среп нет
|
Доброго времени суток.Перерыл гору информации,но т.к. с программой только начал учиться работать - не все происходит быстро.
Суть проблеммы такова: в инсталяторе для одного из компонентов необходима проверка в реестре на наличие в системе Microsoft .NET Framewok 3.5 (именно 3.5, а не 4+) и библиотеки Dokan .При отсутствии их в системе должна быть установка пост-инсталлом оригинальными экзэшниками,тк Redistributable Package весят слишком много.А вот если в системе есть и то и другое,просто заканчивается сетап .Пробовал через секцию run с условием выбора компонента,но тогда в любом случае запускается instal.exe Fraimwork и Dokan.Буду премного благодарен,если кто поможет сварганить такой кусочек... |
elmariacci,
Цитата:
можешь забить на "именно 3.5, а не 4+", те тебе нужно от 3.5 и выше реализовал для фреиворка нужную тебе проверку, но я без понятия что такое Dokan.dll и где она должна лежать. Короче смотри пример. Думаю дальше сам разберёшься ==================================================================================================== = insombia, извиняй, срепов не знаю, помочь не могу |
insombia, в ISDone ведь наглядный пример даётся, что не понятного?
Код:
if not ISSRepExtract ( 0, 0, ExpandConstant('{src}\data.srep') {расположение архива который нужно распаковать}, ExpandConstant('{app}\data1024.arc') {Путь распаковки}, true) then break; |
Здравствуйте, можно ли сделать маленькое окошко "DirEdit" прозрачным и чтобы пользователь смог сменить папку установки только нажав на кнопку "изменить" - то есть строчку о конечной папки не редактируемой
|
audiofeel,
|
Mailchik, все получилось, но я так понял что на "прозрачность" мне надеется не стоит = белый фон остался. Млин и "transparent" выдает ошибку = оставить что ли как есть, как вы думаете или есть другой способ
|
|
Johny777, Всё ОК. когда компилируешь - но стоит объединить с "моим скриптом" = результат DirEdit отображается на первой странице по верх моих каракуль, а мой не прозрачный как был так и есть на своем месте. P.S. по моему хватит, заброшу я его или сделаю на "адвансед инсталлер 9.8"
|
audiofeel, дай исходник с файлами, посмотрю что не так
Цитата:
инно - это тот же объект-паскаль/делфи - то бишь язык программирования, хотя и нехило урезанный. Думаю о проистекающих отсюда возможностях нетрудно догадаться (сейчас те кто знают СИ и ассемблер посмеются). Переломайся, изучи и не пожалеешь! вот тебе демо возможностей (далеко не всех): 1. http://sendfile.su/748778 2: http://sendfile.su/748248 скачай, положи обе программы рядом, поиграйся и садись снова за инно. Будут проблемы спрашивай - чем смогу помогу |
Johny777, второй не качаиццо
|
R.i.m.s.k.y.,
1. у меня всё качается (только-что скачал для проверки) - у тебя что-то с нетом 2. Там нет ничего, что ты не видел :grin: (те инсталл халфы - относительно старая версия) |
Johny777, что именно и куда заливать удобнее (цель та ведь моя смешная, может даже глупая - повторить максимально установщик "installshield"
|
audiofeel, лей на http://sendfile.su/ или на http://narod.yandex.ru/
Цитата:
|
Цитата:
|
а можно как-то сделать чтобы файлу у которого нету иконки через скрипт его добавить когда игра будет устаноновлена?
|
insombia, вопрос отлично сформулирован.
насколько понятно, вот что вы хотите: Код:
[Icons] |
Доброго времени суток. Требуются два скрипта к Inno Setup:
|
Кто-нибудь знает скрипт для этого инстала?
|
Nikish X, вот этот "скрипт" (на картинках) и спроси к RG UniGamers.
|
Здравствуйте, помогите пожалуйста, писал свой вопрос здесь
|
The answer is found
|
alert30, они мне не скажут. :)
LordSP, установи Unicode, ANSI не подерживает большинство функций. |
Да и на Unicode не работает большинство скриптов, не так давно было такое: У меня все нормально запускалось на Win 7 x64 а у знакомого при старте установки на его Win 7 x86 выдавала app crash, перекомпилировал ANSI, все заработало.
|
Всем привет.
Подскажите, пожалуйста, скрипт, чтобы вывести кнопку Дополнительно и при нажатии на неё выводятся дполнительные комопненты. Заранее благодарен. |
Dark_Delphin, Держи раннюю версию моего кода установки Халфы 1 и её офф. аддонов и офф. модов для изучения:
скрин: код: |
в предыдущее сообщение не поместилось :), поэтому вот второе:
kodzoyev, Цитата:
принцип такой: имеем тип-запись: Код:
BROWSER_ERROR_STRUCT = record где входные параметры - два динамичных массива записей: первый содержит запись А = имя браузера второй содержит запись А = имя процесса или путь к папке экзешника (спасибо ещё раз El Sanchez-у) выше упомянутого браузера вот такие "пары" мы и отправляем в функции CreateBrowserError() в цикле пробегаем по входным массивам и проверяем наличие процесса(ов) попутно, если какой-то процесс запущен заполняя два локальных массива если массивы не пусты то в BROWSER_ERROR_STRUCT.ErrorForm создаём форму с именами работающих бразеров и кнопками BROWSER_ERROR_STRUCT.ProcsToTerminate присваиваем массив с именами процессов оных! полученную формы показываем модально и если в переменную ShowModal запишется mrYes из кнопки "да", то отправляем наш массив процессов BROWSER_ERROR_STRUCT.ProcsToTerminate в function TerminateManyApps(const AppProcArray: array of String): BOOL; которая в цикле завершает процессы/закрывает окна. Внимание: Функция TerminateManyApps возвращает булев значение короое формируется из булев значений локального массива, в каждый элемент которого пишется - завершился или не завершился тот или иной процесс. Те если из 3-х папущенных процессов не завершится 1 (очень мало вероятно ;)) то функция вернёт False! Пользуйтесь кому надо! Буду рад! код: скрин: |
Пацаны! Помогите пожалуйста скрыть (в лучшем случае заменить) системные тултипы (маленькие всплывающие подсказки "Закрыть", "Свернуть", "Развернуть").
Дело в том что я использую скин и мне удалось скрыть неактивную кнопку развернуть в правом верхнем углу формы таким образом: 1. Удаляем текстуру у кнопки свернуть и заменяем ею же кнопку развернуть- получаем 2 кнопки. Родную кнопку "Свернуть" делаем неактивной 2. При нажатии на кнопку свернуть(на самом деле развернуть) обнуляем сообщение wParam := 0 и посылаем форме сообщение свернуть. 3. Отлавливаем дополнительно двойной клик по заголовку окна и обнуляем, чтоб окно не развернулось на весь экран. Всё это прекрасно работает, но но при наведении на новую кнопку свернуть всплывает подсказка от развернуть :( вот здесь (Делфи) http://forum.vingrad.ru/forum/topic-...-system/0.html нашёл решение, портировал, но не работает. Получилось только отловить наведение мыши на кнопки всё выше описанное реализовано на default window proc ( http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx ) вот страница на МСДН о тултипах http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx вот здесь есть простенький код на C++ http://www.codeproject.com/Articles/...-More-Tooltips вот всё что удалось сделать: Буду очень признателен за помощь! :) |
Johny777, хм интересная идея. чето не получается. только если библу писануть. а как третий пункт сделал?
|
sergey3695, вот тебе полный пример. Изучай! :grin:
Цитата:
|
Всем привет, можно ли сделать инсталлятор который качает файлы из интернета в указаную папку? А сам истал весит не более 1мб, знаю что такие инсталы есть, но вот как их сделать я не знаю.
|
by_gangster, Скачать
|
LordSP, я уже давал ему эту ссылку. этот товарищ даже в примерах показывающих ровно то, что ему нужно не захотел разбираться
|
Gnom_aka_Lexander, Ооо, тогда это конечно, уже другой вопрос.
|
По окончании установки Your Uninstaller с ключом
Код:
start /wait yusetup7p.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- инсталлятор - http://rghost.ru/43511242 |
зашпилил новый способ (почти новый :)) перетаскивания формы за любую область!
раньше на форму нужно было накладывать прозрачный лейбл и присваивать ему в OnMouseDown эту процедуру: [more] Код:
function ReleaseCapture: Longint; external 'ReleaseCapture@user32.dll stdcall'; вот код. никаких OnMouseDown и лейблов. Он самодостаточный для всей клиентской области вне зависимости от того что на ней лежит Пользуйтесь кому надо! :grin: вот ещё забавный пример! попробуйте =================================================================================== Gnom_aka_Lexander, касательно моего вопроса с пред. страницы можешь помочь? |
Цитата:
Навскидку, то что анпакером вытащил: Код:
[Run] к примеру - Check : not WizardSilent на каждую строчку - вполне то, что нужно. |
Цитата:
Цитата:
Элементарный пример: простейший код, который связыет две формы между собой - при реализации из инно все мигает, пропадает и вообще всякие артефакты. Если сунуть его в длл-ку, то все работает настолько четко, что можно подумать, что это не две формы а вообще одна, по хитрому отрисованая. |
Gnom_aka_Lexander, я сидел на этими скриптами часа 2, но так и не смог разобраться, ты бы ещё хоть сам скачал и посмотрел на примерах, я вообщще не понял в какую папку он скачал файлы
|
мне нужно чтобы файл распаковался по такому пути через isdone но можно и через секцию files http://i54.fastpic.ru/big/2013/0203/...9a93c14d49.jpg
|
Нужна программа для распаковки последней версии Your Uninstaller! Pro 7.4.2012.05 DC 03.02.2013
innounp_plus_0.36, innounp038 не справляются http://savepic.org/2731889.jpg |
by_gangster, Берем прямо первый пример из тех, что идут с библиотекой. открываем. и что мы там видим?
Код:
itd_addfile('http://www.sherlocksoftware.org/petz/files/dogz5.zip',expandconstant('{tmp}\dogz5.zip')); первый параметр - адрес, второй - полный путь до сохраняемого файла. если ты не знаешь, куда ведет константа {tmp}, то посмотри в справке. insombia, ExpandConstant('{userappdata}\Theta') вопрос поднимается периодически, хотел предложить вынести константы с описаниями в шапку, но смысл - если лень посмотреть в справку, то в шапку заглянуть не менее лениво будет, мне кажется. sov44, запусти инстал и нажми меню о программе. там видно, что скомпилено на расширенной версии инно, а для расширенной версии так никто никогда и не сделал еще анпакера. |
Johny777, спасибо! ;) "Тихую" установку реализовали в NSIS пока-что, но за код благодарю отдельно.
|
Добрый день. Мне нужно установить приложение, которое меняет настройки IE. Сейчас параметры прописываются в реестре для HKCU, но мне нужно, чтобы они применялись и для остальных пользователей. Пробовал добавлять в HKLM и HKU/.DEFAULT, но параметры не подхватываются. Кто-нибудь сталкивался?
|
Пацаны помогите пожалуйста вместо скрытия подсказок ( http://forum.oszone.net/post-2080773-1638.html ) добавить кнопку "свернуть" в
заголовок формы ( BorderStyle := bsDialog ) а именно через функцию DrawFrameControl(..., DFCS_CAPTIONMIN, ...) вот мой потр (не рабочий): очень хочу 2 нормальные кнопки в заголовке! Буду очень признателен! :) вот исходник на дельфи |
Цитата:
Вообщем досех пор думаю над твоим вопросом, вот функция скрытия системных хинтов на делфи Опыта в делфи у меня мало (в написании библиотек), можно сказать что ноль, полный ноль. Начил изучать пока с основ. Но вопрос хотелось бы уже решить. Может кто-нибудь по-умнее может написать библеотеку для инно. Johny777, , без библы тут необойтись все-равно. (по крайней мере я так думаю) |
Цитата:
Код:
const |
Цитата:
P.S. Интересная идея, но я не видел еще таких приложений, только с кнопкой минимизации и закрытия. Если имеются таковые, можно ссылочку. P.S.S. Чтобы именно Windows'овские системные кнопки были. |
Цитата:
нужно скрыть неактивную сис. кнопку "развернуть" на форме и оставит только "свернуть" и "закрыть", причём чтоб они лежали рядом друг с другом без пробела тк юзаю скин придумал извартский, но на удивление рабочий способ ( описание-( http://forum.oszone.net/post-2080773-1638.html ), реализация-( http://forum.oszone.net/post-2081356-1640.html ) ), но обломился (описание почему по первой ссылке). Откровено говоря не знаю что пихать в библиотеку, чтоб скрыть тултипы, тк кода на 10 строк, но кажись мой порт не работает из-за замены функций GetMem(...), FreeMem(...) И вот недавно нарвался на функцию DrawFrameControl которая может многое, включая добавление своих кнопок в заголовок формы и (внимание) стандартных - системных. Тут же нашёлся пример по добавлении своей кнопки (исходник прикреплен в пред. сообщении), но с флагом-константой DFCS_CAPTIONMIN = 1; можно добавить по координатам прямоугольника (TRect) стандртную кнопку "свернуть" аккурат слева от единственной кнопки "закрыть" (она одна при BorderStyle := bsDialog), но как известно из 10 раз я облaмываюсь на таких попытках 9,5 раз и это как раз тот случай. sergey3695, то же самое лежит здесь http://forum.vingrad.ru/forum/topic-...-system/0.html видел уже! проблема в другом. Даже если скрыть или заменить тултип, то остаётся ст. сис. меню, вызываемое кликом правой кнопкой мыши по заголовку и левым кликом по иконке (по той, что в левом верхнем углу). А там айтем развернуть который сворчивает окно (те ещё хуже тултипа). Да его можно удалить, но тогда окну не будут посылаться сообщения "развернуть", которые мы меняем на "свернуть". Кажись фиг бы с ним, ведь у нас есть WM_NCLBUTTONDOWN с wParam = HTMAXBUTTON - нажатие на кнопку развернуть, но нажатие <> клик! Можно отловить правый клик по заголовку и обнулить сообщение WM_NCRBUTTONDOWN, но остаётся левый клик по иконке и появится снова сис. контекстное меню. Тут думаю нужно определять положение мыши (TPoint) и сравнивать с TRect-ом формы (х, у) и выполнять что-то вроде ( http://forum.oszone.net/post-2081583-1646.html ) В общем пока-что самый привлекательный способ - добавить свою кнопку :) |
Johny777, я думаю, ты понимаешь, что используя DrawFrameControl, форма будет иметь до XP'шный стиль.
|
Johny777, вот решение твой проблемы
Спасибо большое Mailchik, за помощь. Я так и думал что где-то чето накасячил но не мог понять что. Вообщем то Johny777, он тоже тем самым что помог мне, помог и тебе. Хотя этот вопрос меня тоже заинтересовал так что мне тоже захотелось две кнопочки ) к сожалению библеотеку меньше весом не сделать. (ну я на килобайт поменьше сделал (127 кб) но это пустяк) |
sergey3695, спасибо, но только-что смог таки скрыть тултипы (ведь знал же что библиотека в этом случае - перебор)
пихать в библиотеку это явно нет смысла: :) Код:
function HideSystemTooltip(Wnd: HWND; lPrm: LPARAM): BOOL; касательно сокрытия кнопки развернуть: Mailchik, Спасибо большое за код. Знаю что стиль "Аэро" слетает, но не важно тк хотел использовать только со скином, но кнопка не текстурируется :( , поэтому Mailchik, sergey3695, предлагаю доработанный метод подмены сообщений: сис меню больше не вызывается при клике по иконке и за неё теперь можно таскать, + в том что сворачивание происходит при клике а не нажатии на кнопку: в сообщении sergey3695 есть перерисованный скин. Пробуйте. :) Есть рекомендации по улучшению - говорите! По возможности исправлю/добавлю Мне осталось только доработать подменённое сис меню и добавить свои хинты (можно и через ISHint.dll) ============================================= UPDATE ========================================================= изучаю потихоньку вин апи, вот вам подарок: :) |
|
Ну все! Добил код:
1. Хинтов нет. Через ISHint.dll работает как-то стрёмно (вырезал), Сам хинт создаётся через функцию CreateWindowEx(...) как здесь ( http://forum.vingrad.ru/forum/topic-...-system/0.html ), но в какой-то момент нужно отправить через SendMessage(... , LPARAM(PTOOLINFO(@g_toolItem))); адрес переменной, а вот это в инно не реализовать: LPARAM(PTOOLINFO(@g_toolItem)), а функции типа CallbackAddr(), только для переменных я не нашел. Короче забил. Думаю хинтами можно пренебречь. Лично мне они нафиг не нужны (и так понятно что крестик закрывает окно...) 2. Зато классно получилось подменённое сис. меню (var SysPopupMenu: TPopupMenu;). Принцип такой: создаём TPopupMenu функцией NewPopupMenu(), во входном параметре которой массив из TMenuItem. Их мы создаём функцией NewItem(), во входном параметре которой строка-текст айтема, а тут (внимание) работает ещё одна функция (изменённая и упрощённая мной под собственные нужды) от South (оригинал тут http://forum.ru-board.com/topic.cgi?...83&limit=1&m=1 ) function GetMenuItemText(const hMenu: HMENU; const uIDItem: UINT; const Default: String): String; hMenu - хэндл меню uIDItem - индекс айтема Default - если функция не отработает, то вернёт это имя для айтема короче говоря мы перекидываем имена айтемов ('Закрыть', в английской винде 'Close', в китайской иероглифы) в своё меню из системного, чтоб не писать константы сообщений! далее: Добавил сис. картинки (закрыть, свернуть) в меню функцией SetMenuItemBitmaps() кто хочет свои картинки, то делается это так: финальный код подмены сообщений: Дальнейшие улучшения кода с моей стороны не планируются. Пользуйтесь кто хочет, буду рад, только скин не забудьте перерисовать! :grin: ==================================================================================================== ============== sergey3695, Цитата:
if (pt.x > rt.Left) and (pt.x < rt.Right-WizardForm.Width+27) and (pt.y > rt.Top) and (pt.y < rt.Bottom-WizardForm.Height+27) then в ней должны быть точные координаты прямоугольника, в котором лежит иконка (они могут сбиться например из-за большего размера формы чем у меня ну или типа того) |
Цитата:
один совет: в коде, используя такие строки: Код:
#ifdef UNICODE Код:
#ifdef UNICODE |
Подскажите плз, как и в какой секции нужно прописать условие чтобы при отсутствии ключа в реестре (HKEY_CURRENT_USER\Software\Test, "AppData", "REG_SZ", "7890" ) установщик (ехе) вообще не стартовал или если присутствует папка С:\{E99DDD46-1221-4DB4-81F0-F24D210EB41C} тогда разрешена установка?
Нашёл командную строку как компилировать скрипт Compil32.exe /cc "С:\Proekt\тест.iss", но мне нужно каждый раз создавать новый GUID-возможно сделать автоматическую генерацию нового GUID? Лучше вопрос, для чего нужен этот GUID-я думал для регистрации в реестре, но оказалось не так. Если мне нужно скомпилировать и получить 10 разных файлов ехе, для этого нужно генерировать GUID? |
Gnom_aka_Lexander у тебя есть ещё IsPictures?
|
insombia, есть.
|
Gnom_aka_Lexander я бы скачал от тудого но ты меня там забанил за мультиакк
|
Цитата:
Код:
function InitializeSetup(): Boolean; Цитата:
Цитата:
Цитата:
Код:
[Setup] Код:
iscc "/dAppID=тут уникальный Application ID" "С:\Proekt\тест.iss" |
как добавить создание новой папки сюда ?
|
insombia,
|
как убрать кнопку отмены isdone чтобы осталась дефольтная?
|
Подскажите, как в скрипте от Johny777 (рандомный показ слайдов), сделать последовательный показ слайдов, чтобы Image_2.bmp был строго после Image_1.bmp и т.д.
Код:
[Setup] |
Nightwishh, както так:
Код:
procedure ShowRandomPics; |
Всем привет! Подскажите, пожалуйста, кто знает или кто сталкивался, на примере этого кода:
Возможно ли как-то размер файлов считать с файла INI, а то файлы (по замыслу) должны загружаются через интернет всегда одним установщиком и размер файлов прописывать в установщике (по понятным причинам) бесмысленно. |
функция GetIniInt, возвращает целочисленное значение. записать можно с помощью функции SetIniInt. Как ими воспользоваться - нужно посмотреть в справке, мне сейчас лень чего-то, день тяжелый был.
|
Разобрался...
Вот, может кому пригодится: IniFile:= 'C:\Program Files\Project\Bin\Version.ini'; if FileExists(IniFile) then begin GetIniInt('sz', '587452145', 0, 0, 0, IniFile); |
Здравствуйте, можно ли изменить цвет стандартных чекбоксов в ComponentsList-е и TasksList-е через скин (почему-то NoIconsCheck меняется, а эти нет), на стиль NoIconsCheck?
|
Вложений: 1
Доброго времени суток.
Хотел спросить, возможно ли в инно реализовать такую фишку - |
EvilAlex, аналогично где-то спрашивал в 4-ой части.
|
Dima-WAR ну в принципе можно,думаю умельцы тебе подскажут
|
alert30, EvilAlex,
код: ==================================================================================================== =========== Nightwishh, Цитата:
Геморно но можно создать скроллбокс и массив радиобаттонов и чекбоксов и всё это добавлять на него, через самописную функцию, если так нужен именно чеклистбокс. Короче кастомный чеклистбокс |
Johny777, Ясно, вообщем трогать я это не буду :-) спасибо.
И последний вопрос. Можно ли запустить инсталл только один раз, т.е. при запущеном setup.exe нельзя было запустить его ещё раз и выдовалось сообщение, типо "Программа запущена". Спасибо!!! |
Nightwishh, в секции сетап есть параметры мьютекса, которые для этого и служат. почитай про них в справке. еще в коде есть функции для работы с мьютексами.
|
Как к стандартному файлу unins000.exe прикрутить свою иконку? Именно свою, а не ту, что имеет исполняемый файл.
Знаю, как это делается через секцию [Icons], но мне это не надо. Точнее, не нужен unins000.exe в меню Пуск. Где-то было, но потерял... |
ChVL
Код:
[Setup] |
dracosha,
Спасибо, уже вспомнил. Сделал проще: Код:
[Setup] |
Вложений: 1
Цитата:
Чтобы при распаковке арка или срепа, он отображал куда и что извлекает? |
люди.помогите мне исправить эту ошибку
Error: Custom message name may only include alphanumeric characters and/or underscores, and cannot begin with a number. вот часть скрипта на которую он ругается Код:
[Tasks] |
habib2302
Надо так: Код:
[Tasks] |
saurn, оно как было на русском так и осталось.а мне нужно чтобы стало на английском
|
habib2302,
Можно просто вот так: Код:
[Tasks] |
saurn, так любой дурак может
|
habib2302, тебе просто нужно сделать описание задачи через кастомные сообщения, или что? Если просто описание, то я это написал в первом примере, только русские названия заменить на английские. Или нужно менять описания в зависимости от выбранного языка?
Вообщем либо, так: Либо так: |
Вложений: 2
И последний вопрос, надеюсь поможете)))
Возможно ли сделать так как на рисунке, не вертикальным столбцом который приходиться прокручивать, а в горизонтальный ряд ? И добавить еще 1 пункт Никнейм, чтобы было поле куда вписывать, для регистрации в реестре, если конечно есть возможность)) |
Как и где можно указать иемя файла не unins000.exe, а Uninstall.exe ?
|
Всем привет.
Johny777 Вы, как я понимаю, пользуетесь (или пользовались) этим кодом. Да, действительно код хорош! :good: Не могли бы Вы, пожалуйста, подсказать, как в этом коде отделить функцию распаковки и запаковки. То есть, мне нужна только функция распаковки. Это надо, так сказать бо большому счёту для истетики :boast: чтобы в коде не было ничего лишнего. И возможно ли добавить к нему кнопку "Отмена"? EvilAlex Возможно так сделать, но это нужно делать отдельно, то есть нужно создавать радиобаттоны в ручную! TERMINAL Как вариант, могу предложить так: |
Цитата:
|
Цитата:
|
Цитата:
вот только сжатие. Константы все наместе, тк если будет ошибка, то поймёшь что означает по имени константы Цитата:
TERMINAL, нужно так: UPD Shegorat, пардон, не увидел :) |
Johny777
Цитата:
EvilAlex Цитата:
Вот пример проверки чекбоксов: Вот также пример из Help-а, чекбоксы работают как радиобаттоны: |
Вложений: 1
Tco 03, мне не для файла, а для ключа реестра... =)
|
Цитата:
В данном случаи при выборе NewCheckBox1 данные в реестре будут такие: [Registry] Root: HKLM; SubKey: "Software\My Programm\"; ValueType: string; ValueName: "ProductName"; ValueData: "My Programm"; Flags: uninsdeletekeyifempty; Check: NewCheckBox1Result; При выборе NewCheckBox2 соответственно такие: [Registry] Root: HKLM; SubKey: "Software\No My Programm\"; ValueType: string; ValueName: "ProductName"; ValueData: "No My Programm"; Flags: uninsdeletekeyifempty; Check: NewCheckBox2Result; |
Tco 03, он ркгаеться почемуто...
|
EvilAlex
Мда... Вообщем вот, смотрите. Чтобы сделать проверку на что-то, нужно сначала создать такую функцию. Пишем: [Registry] Root: HKCU; SubKey: Software\Webzen\Mu\Config; ValueType: dword; ValueName: Resolution; ValueData: 0; Check: NewRadioButton1Result; [code] var NewRadioButton1: TNewRadioButton; Вот эта функция на проверку чего-либо! //////////////////////////////////////////////// function NewRadioButton1Result: Boolean; begin if NewRadioButton1.Checked then Result:= True; end; //////////////////////////////////////////////// Создаём радиобаттон для этой функции: procedure InitializeWizard(); begin NewRadioButton1 := TNewRadioButton.Create(WizardForm); with NewRadioButton1 do begin Parent := WizardForm.WelcomePage; Left := ScaleX(10); Top := ScaleY(30); Width := ScaleX(113); Height := ScaleY(17); Caption := '640x480'; end; end; |
Цитата:
Попробовал сделать, он мне выделяет только 1 из 11 радиобаттонв... как сделать чтобы в каждой категории был активен 1 из 2-4 радиобаттон ? |
Он и так будет работать! Для каждой радиобаттон или для каждого чекбокса НЕОБХОДИМА такая функция (если Вы хотите привязать какую-то функцию к определённому радиобатон или чекбоксу)!
Так же, к примеру: Если нужно привязать другой ключ к другой радиобаттон, то это уже будет совсем другая функция: Check: NewRadioButton2Result Пример: Root: HKCU; SubKey: Software\Webzen\Mu\Config; ValueType: dword; ValueName: WindowMode; ValueData: 1; Check: NewRadioButton2Result; И так далее... И да, к стати, секции [Components] и [Types] тут уже НЕ НУЖНЫ! |
Все проблема решена....
Всем кто помог спасибище ! |
http://i53.fastpic.ru/big/2013/0218/...d026fb76c5.jpg
как сделать новую папку чтобы при нажатии на неё создавалась сразу папка с названием игры p.s.предыдущий ответ не подходит |
Нет ничего дурнее в паскале нумеровать строки вручную!
Код:
var |
Johny777, надо проверить, спасибо!
|
semiono, Если я правильно понял, то вот накатал тебе булев функцию замены всех искомых строк/слов на нужную строку/слово в текстовом файле:
==================================================================================================== ======================== Tco 03, Вот только распаковка 7-Zip архивов http://sendfile.su/764485 Цитата:
изучай, пригодится :) Цитата:
Цитата:
Цитата:
==================================================================================================== ============== insombia, Цитата:
======================================================= UPD ============================================================ вот кому интересно - функция для максимального снижения количества оперативки используемой текущим процессом путём выгрузки страниц на жёсткий диск например с 1900 кб до 400 кб, но это влияет на производительность, так что без необходимости не использовать можно и настроить используемый размер памяти (увеличить/уменшить) своими цифрами |
del
|
Народ подскажите плиз, в общем у меня 3 архива
1 arc без сжатия data.arc 2 srep data.srp 3 arc сжатая папка игры data1.arc код if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data1.arc'), ExpandConstant('{app}'), '', false , '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break; if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data.srp'),ExpandConstant('{app}\data.arc'), false) then break; if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data.arc'), ExpandConstant('{app}'), '', false , '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break; на распаковке на распаковке файлов игры(последний архив) выдает что не найдено ни одного файла указанного в ISArcExtract 2)проблема у меня при установке вместо 100% указано 300% ,как исправить? |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
tsskz используй http://krinkels.org/showthread.php?t=49 и можно будет указывать только if not ISArcExtract
|
подскажите пожалуйста, как установить шрифты во время установки (.ttf и .otf)?
|
Lex_from_Belarus в инсталл или как именно во время установки?
|
Цитата:
Upd: Разобрался сам |
Johny777
Цитата:
Господа, помогите, пожалйста, решить проблему, кто знает в чём дело и возможно ли избавиться от ошибки? Суть в следующем: На странице выбора папки установки создаю кнопку, кустомную форму и чекбокс. При нажатии на кнопку проверяется свободное место на диске. Необходимое место считывается с файла .inf Если свободного места достаточно, то выдаётся сообщение "YES!!!" и выберается чекбокс - если свободного места не достаточно, то выдаётся сообщение "NO!!!" и появляется кустомная форма. Проблема в том, что это работает только со второй попытки, то есть свободного места достаточно, но при этом появляется сообщение "NO!!!" и появляется кустомная форма. Сразу же при повторном нажатии на кнопку этого больше не происходит - выдаётся сообщение "YES!!!" и выбирается чекбокс. При нехватке свободного места на диске функция работает без проблем! Почему так происходит при первом нажатии на кнопку? Вот этот самый код: |
Tco 03, ну ты блин даёшь!"_": Сравниваешь значение из ини с нулём! Вылетает шибка и вызывается процедура создания формы, где ты впервые пишешь кол-во свободного места в переменную FreeMB. После этого она не пустая и соответственно идёт уже нужная проверка и выводится нужный результат!
Пойми ошибку в своём коде. Когда поймёшь вот переписал тебе твой код на свой лад, в полностью рабочем виде Используется вин апи функция GetDiskFreeSpaceEx, которая пишет во входные переменные свободный и полный размер харда в байтах, что точнее чем округлённые значения в мегабайтах и как понимать ExpandConstant('NO!!!') ? :) |
Johny777
Ну то что я сравниваю значения с ещё несоздавшийся формы - это я догнал :shot: Как сравнить мои FreeMB с TotalMB, тут догнать не могу :shout: Тупо воспользуюсь Вашим кодом, чего голову ломать... :gamer: Цитата:
|
Цитата:
Код:
type |
El Sanchez, Спасибо за правку. Исправил в коде инсталла халфы! :)
вот только разве не наоборот? Код:
typedef union _LARGE_INTEGER { те HighPart - Longint a LowPart - DWORD ========================================================================= Tco 03, свой предыдущий пост тоже исправил! |
Хочу воспользоваться скриптом в Inno Setup для "выделения/снятия выделения" всех компонентов
Цитата:
|
И ещё вопрос:
Имеется структура компонентов. -Компонент 1 --Компонент 1.1 --Компонент 1.2 -Компонент 2 --Компонент 2.1 --Компонент 2.2 --Компонент 2.3 --Компонент 2.4 Как сделать чтобы если выбран 1.1 то доступны для выбора были 2.1 и 2.2, а если выбрано 1.2, то доступны стали 2.3 и 2.4. И соответственно при нажатии на 1.1 или 1.2 происходил выбор 2.1 или 2.3 соответственно? |
Цитата:
|
Lex_from_Belarus, либо я не догоняю либо код для выбора всех компонентов не дружит со свёрнутым деревом компонентов :(
в любом случае оптимизировал процедуру выбора и очиски выбора всех компонентов и ответил на вопрос в твоём последнем сообщении: |
Цитата:
по зависимостям групп косяк какой-то, думал адаптировать на разные варианты, но что-то не получается, например: Компонент1 Компонент2 -Компонент21 (радиобутон) -Компонент22 (радиобутон) -Компонент23 Так вот 21 и 22 работает когда выбран 1, а 23, когда 1 не выбран. Подскажите как подредактировать ваш код, пожалуйста. |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Johny777, ключевое словсочетание:
Цитата:
Как именно реализована булевая проверка скрытых компонентов - мне без разницы, но готов спорить, что в этой проверке сам TCheckListBox вообще никак не участвует. |
у кого-то есть пример чтобы если инсталл уже запущен то 2 раз его нельзя запустить пока не закроется 1?
|
Цитата:
==================================================================================================== ===== Цитата:
2. через создание семафора - CreateSemaphore(...) : 3. добавление строки в глобальный массив записей винды - GlobalAddAtom(...): 4. через поиск заголовка окна своей программы: 5. путём сохранения скрытого файла на харде, проверке его наличия и удаления по завершении работы инсталла 6. как и по номеру 5. только сохранять ключ реестра. Извиняй, примера нет, тк с реестром у меня туго :( 7. Уверен есть ещё способы! ==================================================================================================== ================= Пацаны, подскажите пожалуйста. Хочу сохранять настройки установленной программы в реестре, на данный момент сохраняю в ини, в директории установки. при повторном запуске гружу настройки из ини. Хочу перейти на реестр, но у меня с ним туго. Вот содержание ини: Он заполняется единицами при необходимости мне нужно создать ключ или ключи? просветите пожалуйста неуча :) |
Johny777, по вопросу - ты-же сохранил реестр самой игры? Вот по аналогии создавай свой куст в Software и пиши там чего хочешь, главное не забывать убирать за собой. По ответу - 5 и 6 не пойдут, поскольку процедура Deinitializesetup отработает, даже если инсталл не дошел до процедуры InitializeWizard, соответственно повторно запущеный инсталл не запустится, но он уберет ограничитель и будучи запущеным еще раз, будет уже запущен как повторный свободно. Можно конечно, добавить несколько флагов и с их помощью проверять, что именно не дало запустится инсталлятору, но это все костыли. В инно, как я уже писал, специально для этого в секции Setup есть параметры для работы с мьютексом, плюс встроенные функции создания мьютекса из секции кода. Господину insombia просто лень заглянуть в справку, там все это есть. Если никто не обратил внимания, Инсталлятор самого Inno Setup так-же использует мьютекс, пример скрипта лежит в папке установки, если устанавливаете IsPack версию, можно поизучать, если лень головой поработать.
|
Цитата:
Цитата:
Мне можно создать создать там запись? Ведь это удобно, тк при полном удалении она, инно, и мои ключи потрёт Если да то мне создавать там куст или ключ? Можно ли сохранить весь ини с его структурой в реестре в одной записи? Это удобно, тк я заргузил бы его немного изменённой функцией El Sanchez-а и прочитал бы как ини и не нужно код переписывать? Цитата:
|
Цитата:
По реестру: |
Цитата:
|
Вложений: 1
вот такая проблемка - как в этом скрипте убрать страницу выбора компонентов ?
на нем я по тихоньку на досуге учусь,если что |
tsskz скрипт нужно весь заливать чтобы можно было проверить на работоспособность
|
Цитата:
|
tsskz удали
|
Ктонить подскажет нубу, как в секции [Cоde] можно прописать условие, чтобы определённый код срабатывал только на Win7 и выше?
|
прикрутите кто-то мне в скрипт текстурированные кнопки,а то не получается,и при распаковке кнопка отмены стает исдоновкая а я хочу чтобы была дефольтная
http://rghost.ru/44053363 |
Raf-9600,
Код:
function InitializeSetup(): Boolean; // Win7 = 6.1, Win8 = 6.2 Gnom_aka_Lexander, Зачем мне прототипы, я их уже видел .( Как раз на них и смотрел во вкладке компилятора когда ты мне их запостил :) ) Я спрашивал: Цитата:
Цитата:
Цитата:
El Sanchez, Спасибо, буду разбираться! :) Эти три функции всё, что мне нужно? |
Цитата:
|
tsskz какое инно используешь?
|
Цитата:
|
Подскажите пожалуйста у меня в Tasks есть галочка, которую если поставить, то отключиться копирование uninstaller'a, а дальше есть 2 галочки которые добавляют ярлыки на него на рабочий стол и в Пуск, так вот как сделать так чтобы когда галочку ставишь и Uninstaller не устанавливается во время установки, то и 2 галочки на ярлыки не показывались. Когда прописываешь ярлыки на компоненты там понятно связь задаётся с компонентами через Components, а как связать Tasks не знаю.
|
Цитата:
думаю не точно объяснил - выдает ошибку не при сборке, а при установки - при попытки перейти на страницу компонентов |
Цитата:
|
Tco 03,
Цитата:
на основе примера \Inno Setup 5\Examples\Example_ExtractTemporaryFileToBuffer.iss сделал простенькую функцию: входной параметр - имя временного файла, содержащего текст на выходе - строка ну и соответственно немного изменил функцию El Sanchez-а парсинга ини-файла оригинальный прототип - function ParseIniFile(const Filename: String): TIniFile; ( полный код тут: http://forum.oszone.net/thread-235078-93.html ) на function ConvertStringToIniFile(const uString: String): TIniFile; код ниже использует в качестве примера ини следующего содержания: код: ========================================================================================= El Sanchez, Цитата:
результат (работает с кодом чуть выше): |
|
habib2302, не ужели так трудно распаковать оригинальный инсталлятор через Universal Extractor; и скрипты будут...
|
кто-то может прогресс бар на iswin7 наложить?
http://rghost.ru/44102099 |
alert30, тоже самое что и при извлечении через ISUnpacker
скрипт получается один и тот же вот сами скрипты это через ISUnpacker Код:
;InnoSetupVersion=5.2.3 Код:
;InnoSetupVersion=5.2.3 |
Johny777
Цитата:
Тут ещё одна делема есть... Возможно ли как-то загрузить этот самый INI-файл с хоста (из интернета) сразу в оперативную память? Используя тотже отличный код господина El Sanchez-а. Либо на примере скрипта: \Inno Setup 5\Examples\CodeAutomation.iss - правда там пример про XML-файл... А то: Цитата:
|
как убрать кнопку отмены isdone чтобы стандартная отвечала за отмену?
|
insombia, извиняй iswin7 и Isdone не знаю. :(
==================================================================================================== ================== habib2302, Цитата:
Делай, будут непонятки - спрашивай! и убирай пожалуйста длинные коды (как здесь http://forum.oszone.net/post-2098750-1760.html) под спойлер ==================================================================================================== ================== Tco 03, Цитата:
Цитата:
Поэтому предлагаю такой вариант используя WinApi функцию URLDownloadToFile( http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx ) вот пример простого скачивания файла (любого) куда хочешь: но мы будем качать в темп, потом загружать из текстового файла текст в переменную типа String и удалять файл вот таким вот чудо-макаром: полный пример: для чтения ини используй сразу вложенность функций Ini := ConvertStringToIniFile(TextFileFromInternetToString('http://tululu.org/txt.php?id=38061')); PS: в данном случае качается не ини. Это просто пример |
habib2302, насколько я помню типа: "<такая-то программа> рекомендует..." все засовано в BIN-е, если в скрипте такого нету.
Ай, какие хитроумельцы в завершающем установки такую добру делают в инсталляторе, CheMax Team! |
здравствуйте помогите с ассоциациями, как только не писал в скрипте, но после установки приложения ассоциации не срабатывают. как ассоциировать аудио файлы с плеером AIMP3? хотя бы .mp3..
|
то что никто не знает как убрать кнопку отмены исдона чтобы отменяла стандартная?
|
fackessfook, Шапка. Сборник скриптов в формате .chm от Krinkels; Там пример ассоциации файлов есть. Помимо огромной кучи разных других полезных примеров, изучение которых снимет 99% вопросов.
|
Здравствуйте.
Я автор популярного (как все утверждают) репака Half life Cinematic Mod Cinematic mod Ultimate Прошу мне помочь кое в чём. Я в установщике использую опцию выбор компонентов. [Components] Name: g0; Description: Half - Life 2 Cinematic Mod Models Setup; Types: full custom; Flags: disablenouninstallwarning checkablealone fixed Name: g0\c8; Description: Установить доп контент и так далее; Types: full custom; Flags: dontinheritcheck [Files] Source: "E:\Setup Final ex\addons\MM\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension; Components: g0\c8 И при компиляции всё благополучно создаётся. Но эти самые компоненты ужимаются стандартными средствами inno setup. Мне же нужно чтобы при выборе компонента он подхватывался из файла bin(arc) , допустим компонент1.bin и ужимал я его сам. Дайте мне какой пример. Или обьясните как сделать. |
Подскажите пожалуйста как поменять местами порядок вывода страниц, чтобы после страницы выбора папки установки появлялась страница выбора папки в меню Пуск, а не страница выбора компонентов установки?
|
GoshaPolo, из своего опыта скажу - менять местами геморно. Нужно учитывать что находясь на странице
выбора директории мы находимся на странице выбора папки меню пуск и наоборот. Короче путаница. Поэтому проще скрыть родную страницу, создать новую (где надо) и перекинуть на неё всё с родной страницы вот так: но если настаиваешь на том чтоб именно поменять то вот тебе пример как поменять страницы выбора директории установки и страницу выбора компонентов местами автор этого кода Добров: ===================================================================== cliff99, фриарками не увлекаюсь. Помочь не могу :( Цитата:
|
Johny777,
Я в свою очередь как фанат халвы скажу. Всё в моде опционально. От выбора моделей аликс. до выбора остальных моделей и карт. А играть в стандартную Hl2 c чахлыми текстурами как то не охота. Прошу простить за оффтоп. А мой вопрос остаётся открытым. |
Подскажите, стоит метод сжатия Compression=lzma2/max, но почему то сжатия нет.
|
TERMINAL, ну, во первых есть более высокие уровни - ultra, ultra64, есть еще непрерывное сжатие - SolidComression=yes - вроде так. Ну и во вторых бывают просто несжимаемые данные.
|
Gnom_aka_Lexander, Есть архив 90мб, я его распаковал и скомпилировал=на выходе получается размер 240мб, если сжимаю на максимуме зипом, тоже получается 90мб. А режим ультра может ошибки выдавать при распаковке на старых компах?
|
TERMINAL, секции Setup и Files покажи тогда.
P.S. Можешь в личку, если опасаешься чего-то. не глядя на эти секции невозможно определить почему у тебя не жмутся файлы. Цитата:
|
Gnom_aka_Lexander, спасибо-разобрался.
|
Цитата:
|
Johny777
Цитата:
insombia Цитата:
Могу предложить альтернативное решение, но при распаковке, при нажатии на кнопку отмена, архивы будут продолжать распаковываться и если пользователь будет долго думать, то архивы уже распакуются :teeth: Проще сделать её точно такую же, как и оригинальная кнопка "Отмена" ибо без неё - будет уже косяк! Если всё ещё настаиваешь, то можно сделать как-то так (на примере версии ISDone 0.6d): cliff99 Цитата:
Как мне однажды ответили на соседнем форуме: -"Тебе скажи - ты потом сделаешь RePack и будешь всем хвастаться". :tongue: Мне кажется - сейчас как раз тот случай. :off: |
В версии ISFreeArcExtract v.4.1 от Shegorat всё досконально ясно:
|
Чёрт побери. Я не рекламирую ничего. Я даю понять что на доброе дело пойдёт ваша помощь.
Вот и всё. |
cliff99, вот тебе пример простой распаковки архива FreeArc в зависимости от выбранных компонентов на этапе ssPostInstall с отображением прогресса распаковки
я просто упростил и немного изменил код из шапки. Надеюсь это то что тебе нужно :) пример без кнопки отмены с кнопкой отмены: теперь из-за тебя я знаю немного фриарк модуль. Спасибо! :) библиотеку найдёшь тут http://freearc.org/download/InnoSetu...noSetup3_5.zip |
Johny777,
Спасибо. Библиотека у меня уже встроена и настроена. Теперь просто компоненты привяжу. Мне нужны были эти строки. Код:
Name: "main"; Description: "Main Files"; Name: "help"; Description: "Help Files"; и if IsComponentSelected('main') then FreeArcExtract (CallbackAddr('ArcCallBack'), 'x', '-o+', '-dp' + AnsiToUtf8('C:\setup'), '--', AnsiToUtf8('C:\Users\FreeArc\FaT-170.mp4.arc'), '', '', '', '', ''); if IsComponentSelected('help') then FreeArcExtract (CallbackAddr('ArcCallBack'), 'x', '-o+', '-dp' + AnsiToUtf8('C:\setup'), '--', AnsiToUtf8('другой архив'), '', '', '', '', ''); |
Вот решил поделится своим скриптом,все кто хочет можете качать,скрипт без каких либо наворотов с подсказками в коде для новичков
cкрипт P.S. большое спасибо Rikill/Wr0ng1eR за помощь Обновил скрипт добавил текстурированные кнопки,музыку и на всякий случай srep самый новый |
Цитата:
Johny777, Я похоже рано обрадовался. Я сколько мучаюсь, но так и не могу подключить свой arc архив к твоим примерам. Он мои архивы просто не подхватывает. Мне нужно, чтобы при выборе компонента main/ Распаковывался соответственно архив main.arc лежащий в корне. \\\ setup.exe main.arc ------- data.bin |
cliff99,
Цитата:
константа {src} - путь к "рядом с экзешником инсталла" Цитата:
|
Цитата:
|
Цитата:
Код:
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean); |
GoshaPolo в справке к исдону все есть но вот пример,в файле isdone.iss найди строку
if not ISArcExtract ( 0, 00, ExpandConstant('{src}\data.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break; выделеное жирным это файл который нужно распаковать Gnom_aka_Lexander не мог бы ты пожалуйста в тот скрипт что я выложил это вставить? |
insombia, ты и сам это можешь. удалить все,что связано с кастомной кнопкой отмены и вставить этот код отмены. ничего сложного, я принципиально в чужих скриптах не ковыряюсь, с некоторого времени, уж больно это вас расслабляет: "а, там есть тот, кто за меня сделает все, можно самому и не париться с этой ересью типа справок, шапки форума и гугла".
P.S. ради интереса глянул. Действительно, разобраться там -целое дело. В таком точно ковыряться не буду. |
используй встроенную функцию IsWin64. она, собственно, именно для того и предназначена, чтоб проверять битность системы.
|
habib2302, как вариант:
Код:
[Code] |
alert30, Ты неправ. если заглянешь в справку,то увидишь, что Is64BitInstallMode определяет именно тип установки а не битность системы. Битность системы определяет только IsWin64.
|
habib2302, смотря что тебе нужно. хотя в обоих секциях-и в [Run] и в [Files] есть параметр Check. Соответственно,то что на х32 нужно,там ставишь Check: not IsWin64,где нужно х64,там Check: IsWin64 Логично-же? в коде,соответственно -
if IsWin64 then // тут действие,если х64 система else // тут действие если х32 система |
habib2302, дай полный свой скрипт. как я тебе,наугад чтоль делать буду?
|
habib2302, с такой кучей вопросов тебе тогда проще самому разобраться. открываешь справку и читаешь там все,что касается битности. там и параметры секции Setup и встроенные функции. Плюс в папке примеров есть примеры: 64Bit, 64BitTwoArch, и 64BitThreeArch. там есть абсолютно все ответы на твои вопросы.
|
insombia, Хотя не это уже по аккуратнее. (Rikill/Wr0ng1eR, наверное Rikill делал скрипт).
|
люди помогите.у меня есть 2 exe фала для запуска.один для x86 bit,а другой для x64 bit.как сделать так,чтобы создавались ярлыки, запускались эти 2 файла после установки, реестр заносился, прога устанавливалась в папку. и все это под битность системы
|
sergey3695 забей!
|
habib2302, оптимизировал код, добавил проверку разрядности. Изучай! :)
насчёт секции реестра не знаю какие ключи ты хочешь вносить в зависимости от разрядности, но помнится инно делает это сама, то бишь пишет в 64 или 32 кусты в зависимости от системы пусть меня поправят если я гоню. UPD: забыл добавить ArchitecturesInstallIn64BitMode=x64 Исправил ================================================================================ insombia, sergey3695, Цитата:
Цитата:
Какие у вас содержательные комментарии! Спасибо за активность ребята! :) |
sergey3695 я находил коды и вставлял,что не получалось он помогал
p.s.думаю вопрос закрыт оффтоп вне зоны |
Johny777, огромное спасибо!!!!
|
Johny777,
Цитата:
Код:
if IsComponentSelected('main') then FreeArcExtract (CallbackAddr('ArcCallBack'), 'x', '-o+', '-dp' + AnsiToUtf8(AddBackslash(ExpandConstant('{src}')) + 'main.arc'), '--', AnsiToUtf8(AddBackslash(ExpandConstant('{src}')) + 'main.arc'), '', '', '', '', ''); то есть , где пути настроены. |
cliff99, main.arc стоит рядом с Вашим компилированным инсталлятором?
|
|
cliff99, у меня всё извлекается. Положил рядом с экзешником инсталла data.arc и выполнил код
сам убедись. Причём у меня ещё кириллица в пути была - моё имя пользователя ищи у себя ошибки. С моей стороны всё в порядке! обновил/улучшил ещё каллбэк функцию. Выделил жирным. Поменяй у себя ============================================================================================== habib2302, очень надеюсь, что ты изучишь пример и научишься а не просто возьмёшь готовое чтоб не плодить благодарственные сообщения и не засорять форум есть кнопка "Полезное сообщение" под каждым сообщением |
Johny777,
А, да нашёл, извлекает, только не в папку назначения а в c:\setup. А мне нужно в ту папку, которую я буду указывать в инсталлере Поэтому я и не видел, что извлекает. Потом создал архив потяжелее и вижу время повысилось. и через поиск нашёл. |
Здравствуйте. Была такая идея реализовать страницу с выбором типа установки, по типу - Обычный и Расширенный. По задумке, при выборе обычного типа текст кнопки далее менялся на "Установить", при выборе расширенно менялся обратно на "Далее", соответственно. Собственно реализовать-то получилось, но средствами самих радио-кнопок процедура смены надписи работала криво. Так как при переходе на страницу с выбором типа кнопка "Обычный" уже была выбрана(она checked по умолчанию) текст не менялся. Пришлось запихнуть эту задачу еще и в CurPageChanged. Это конечно не критично, задумка работает, как надо, однако может есть возможность реализовать это, как то по-проще. Кусок скрипта с кастомной страницей и радио-кнопками я прикрепил.
|
Johny777,
Freearc не покатил. У меня он начинает конфликтовать с isdone. И как я уже говорил распаковывает не туда куда нужно. (путь то можно исправить, но ладно) Дело вот в чём. Основные файлы репака, запакованы freearc, но распаковываются через isdone Вот они: Код:
#ifdef precomp Так можно ли сюда прикрутить этот самый "main.arc" , но только чтобы он распаковывался, когда в компонентах выбран main ? В самом моём скрипте видно даже пояснение как эти компоненты оформлять. Код:
// Подготавливаем переменную содержащую всю информацию о выбранных компонентах для ISDone.dll |
Цитата:
|
saurn,
Спасибо, правда уже сам справился. В этой же справке пример взял. Я с самого начала не правильно вопрос поставил. Нужно было уточнять , что у меня исдоне |
почему в слайдах после завершения установки вечно ругается на эту строчку?
http://i51.fastpic.ru/big/2013/0301/...525f261c8c.png |
saurn,
Цитата:
function CheckStandardInstallMod: Boolean; эти функции есть тормоза - в них нет смысла короче переписал и оптимизировал код, изучай: для пущей оптимизации можно в обработчике OnClick переключателя писать значения в глобальную булев перемененную и проверять её значение в той же ShouldSkipPage например вот так: ==================================================================================================== ========== insombia, прежде чем задать вопрос поставь себя мысленно на место того кто может быть тебе ответит и подумай сможет ли он это сделать на основе предоставляемой тобой информации! по твоему вопросу: не знаю, установить и посмотреть что не так не могу, хотя уже по скрину видно, что код перегружен. Нафига писать имена слайдов в стринглист, те они 1, 2, 3... Их можно извлесть в цикле и в цикле же грузить из темпа ну это так навскидку. в каллбэк функции таймера неточные типы переменных вот так надо procedure TimerProc(hwnd: HWND; uMsg: UINT; idEvent: UINT_PTR; dwTime: DWORD); дабы не быть голословным http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx да и смысл в них? Один фиг не используются! |
Johny777 там даже в оригинальном скрипте тоже самое выкидывает
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
|
Gnom_aka_Lexander пару страниц назад ты выкладывал faq по инно версии 1.4,мож скинуть все предыдущие?
|
Johny777, спасибо за подробные примеры. На их основе переделал еще несколько функций.
|
Цитата:
|
Как сделать скрипт щоб в начале появлялась катинка на нескалька секунд а потем изчезала и потом ишла самая инсталяция програми ?
|
Допустим если инсталлятор состоит не из одного файла, и файл Setup.exe находиться в одной папке, а setup-1.bin в другой. Есть ли возможность как-то при запуске Setup.exe сообщить ему о местонахождении setup-1.bin?
Нужен хоть какой-нибудь вариант. |
neorom issplash тебе в помощь
|
Здравствуйте.
Пытаюсь заставить работать InnoTools Download на Unicode версии InnoSetup. Заменил в it_download.iss все PChar на PAnsiChar. Подгрузил свой перевод через ITD_LoadStrings. В результате: Как можно отобразить символы в правильной кодировке? Комплект для сборки установщика https://bitbucket.org/Mixail/world-o...er/get/tip.zip Скрипт https://bitbucket.org/Mixail/world-o.../tip/setup.iss Отредактированный it_download.iss http://rghost.ru/44252526 Перевод ITDownload http://rghost.ru/44252533 |
Цитата:
|
neorom погугли
|
Цитата:
|
Не могу розпаковать те файли каториє я сам упаковал через Inno Setup. Ни програмой Universal Extractor ни Inno Setup Unpacker(хотя у меня файл innounp.exe версия 38) розпаковать не могу, помогите ???
|
люди помогите.короче в редакторе реестра есть раздел HKEY_USERS и в этом разделе есть примерно вот такой подраздел S-1-5-21-1377596772-22977529-2522162812-1000.у каждой системы этот подраздел разный.как сделать так,чтобы ключ реестра подходил каждой системе каждому подразделу
|
habib2302, Никак. Насколько я помню, в HKEY_USERS дублируются ключи из раздела HKEY_CURRENT_USER, т.е. наверно стоит с ним и работать.
|
Вложений: 1
Здравствуйте. Знаю что такой вопрос уже задовался товарищем Johny777, а проблема в скине и LoadBtnBmpFromFile http://forum.oszone.net/attachment.p...1&d=1362494756 , может получиться сделать так что-бы скин не обрабатывал ComponentsList, не ковыряясь и не исправляя сам скин.
|
Mixailos это из-за шрифтов самой 8,у меня было такое же самое нужно ковырять языки в винде и настроить какую-то ф-ию на русский,и тогда вес будет гуд
|
Вложений: 1
Цитата:
|
Всем здравсвуйте! Как сделать, чтобы при нажатии на кнопку открывалась папка документы пользователей?
|
Respin, повесь в событии OnClick кнопки это:
Код:
procedure ExploreDocsFolder(Sender: TObject); |
Не могу розпаковать те файли каториє я сам упаковал через Inno Setup. Ни програмой Universal Extractor ни Inno Setup Unpacker(хотя у меня файл innounp.exe версия 38) розпаковать не могу, помогите ???
|
neorom ты сами файлы или скрипт хоч разпаковать?
|
Цитата:
|
neorom, Можно. Только в том случае, если инсталл не в расширенной версии скомпилирован и не зашифрован.
|
Цитата:
|
тем, чем и пытался. если инно была стандартная и инсталл не шифровался, то все распакуется. ну и для 5.5.3 не знаю, есть сейчас анпакер или нет.
|
Єсть конкректно какаята програма ?
Мои програми http://us.ua/1057349/ |
тут в шапке Распаковщики инсталляторов Inno Setup
|
здравствуйте, в общем "задумка" такая = после велкома пользователь должен выбрать между установкой по умолчанию (то есть программа установится в папку по умолчанию, сама где задано создаст ярлыки и т.п) и скажем так установкой для "опытных пользователей (где ему предложат выбрать папку, ярлыки, доп п.о и т.д) готового примера не нашел , вроде где то видел что то но мне нужно чтоб переключатель был как в "я принимаю лицензионное соглашение" (черт я не знаю как эти кнопочки называются, ну в общем точки) .помогите у кого есть пример
|
Цитата:
|
audiofeel, Да было уже. Изучай: http://forum.oszone.net/post-2102104-1779.html
neorom, установить, взять файлы из директории установки, посмотреть регшотом какие ключи внеслись в реестр и написать скрипт заново не судьба? Даже если распакуешь там будут стандартные секции типа компонентов и ярлыков. Чтоб их воспроизвести Oject Pascal знать не нужно, хватит и справки. |
if not Checked[Items.IndexOf('Compoment1')] then
begin Checked[Items.IndexOf('Component2')] := False; end; данный код делает Component2 неактивным когда не выбран Compoment1 а что ещё нужно написать чтобы снималось выделение с Component2 если он ранее был выделен, а то при этом коде Component2 становится неактивным но остаётся выбранным P.S. Component2 - это Radiobutton, если это имеет значение |
Johny777, пример рабочий , но ко мне не совсем подходит, мне хотелось эти две кнопки "стандартная" и "расширенная" поместить на "WizardForm.SelectDirPage" и пока пользователь не нажмет "расширенная" - "DirEdit" и "DirBrowseButton" не активны
|
audiofeel,
|
Єсть ли версия програми Inno Ultra v5.5.1, єсли єсть то закиньте мне на http://us.ua/ а то не где скачать не могу .
|
neorom, готово - полная версия Inno Ultra: http://us.ua/1058466/
Лександер, прости. ( Johny777, http://forum.oszone.net/post-2105950-1815.html пост поправь, а код паскаля используй, как [Code] (начальная жирная квадратная скобка) |
Вложений: 1
Разъясните пожалуйста ситуацию, можно ли заскинировать через ISSkin.dll всю область "Выбора языка установки" http://forum.oszone.net/attachment.p...1&d=1362698177 . Вот код который я стыбзил с кринкелса
Код:
[Setup] |
здравствуйте, помогите со скриптом. на "SelectProgramGroupPage" вместо кнопки "GroupBrowseButton" хотелось чтоб было как в примере, небольшое "окно" (рисунок во влажении)
|
Цитата:
|
Цитата:
|
alert30 СПАСИБО
|
Всем привет.
Johny777 В этом коде есть один большой недостаток! Если файл запаковать целиком (один большой файл), то он считывает размер распаковавающегося файла правильно. Но если запаковать много файлов маленького размера, он считывает не размер распаковывающихся файлов, а размер распаковывающегося архива! Плюс ещё бы к нему прикрутить проценты распаковки... |
Цитата:
P. S. Это просто пример. Под свой скрипт адаптируете его сами. |
|
neorom,
Код:
[Tasks] |
У неня єсть несколько язиков при инсталяции, что делать ...
|
Цитата:
|
Цитата:
|
neorom,
С привязкой сообщений к нескольким языкам: Код:
[Languages] Код:
[Tasks] |
Цитата:
|
Цитата:
|
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons} Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons} Name: startmenuicon; Description: Create an additional start menu icon; GroupDescription: {cm:AdditionalIcons} Вот єта чая часть скрипта , в третем рядке надо исправить так что би информация ишла из файла язика а не из [CustomMessages] |
как довать кликабельное лого в углу инсталлятора в формате .png без фона
|
Цитата:
habib2302 botva2.dll тебе в помощь. |
Здравствуйте.
Такая проблема, долго искал в обмнимку с гуглом, но так и не нашел. Задача: нужно покрасить определенный чекбокс на странице тасков в красный. Максимум, чего я смог добиться - покрасить весь текст на этой странице. Проблема в том, что я не знаю имен объекта чекбоксов, и вообще структуры. В хелпе об этом ничего не сказано. Код, что работает на данный момент. Как мне покрасить только текст определенного чекбокса? |
|
neorom, мы не можем делать готовый код, а мы его дополняем или помогаем.
|
Цитата:
|
Tco 03, дай скрипт
|
Просьба одредактироваить скрипт з єтого зделать так и разнинє папки з файлами для инсталяции
Мой скрипт (програма инсталятор должна сама определять какиє програми инстальовани и стояли там видпавиднеє галочки в окне исталяции) [Setup] AppName=Microsoft® Windows® XP Ukrainian User Interface Pack AppVerName=Microsoft® Windows® XP Ukrainian Multilingual User Interface Pack AppPublisher=Music Mix Studio© & Records Company® 2006-2008 AppPublisherURL=http://winxp.org.ua AppSupportURL=http://winxp.org.ua AppUpdatesURL=http://winxp.org.ua CreateAppDir=no OutputBaseFilename=setup1 Compression=lzma Uninstallable=no PrivilegesRequired=none DisableProgramGroupPage=yes LicenseFile=embedded\License.txt InfoBeforeFile=embedded\InfoBefore.txt InfoAfterFile=embedded\InfoAfter.txt WizardImageFile=embedded\WizardImage.bmp WizardSmallImageFile=embedded\WizardSmallImage.bmp [Files] Source: {tmp}\*.*; DestDir: {tmp}\mui; Flags: ignoreversion [Run] Filename: {tmp}\mui\muisetup_ru_sp2.exe; Parameters: /i 0422 /d 0422 /l /f /r /s; Components: sp2comp; Tasks: sp2 Filename: {tmp}\mui\muisetup_ru_sp3.exe; Parameters: /i 0422 /d 0422 /l /f /r /s; Components: sp3comp; Tasks: sp3 Filename: {tmp}\mui\muisetup_ru_sp2.exe; Components: sp2comp; Tasks: sp2m Filename: {tmp}\mui\muisetup_ru_sp3.exe; Components: sp3comp; Tasks: sp3m Filename: {tmp}\mui\wmp_8_mui.cmd; Tasks: mp8 Filename: {tmp}\mui\wmp_9_mui.cmd; Tasks: mp9 Filename: {tmp}\mui\wmp_10_mui.cmd; Tasks: mp10 Filename: {tmp}\mui\wmp_11_mui.cmd; Tasks: mp11 [Tasks] Name: sp2; Description: Автоматичне встановлення (рекомендовано); GroupDescription: Виберіть режим встановлення; Components: sp2comp Name: sp3; Description: Автоматичне встановлення (рекомендовано); GroupDescription: Виберіть режим встановлення; Components: sp3comp Name: sp2m; Description: Ручне встановлення; GroupDescription: Виберіть режим встановлення; Components: sp2comp Name: sp3m; Description: Ручне встановлення; GroupDescription: Виберіть режим встановлення; Components: sp3comp Name: mp8; Description: 8; GroupDescription: Оберіть версію встановленого Медіа Програвача Name: mp9; Description: 9; GroupDescription: Оберіть версію встановленого Медіа Програвача Name: mp10; Description: 10; GroupDescription: Оберіть версію встановленого Медіа Програвача Name: mp11; Description: 11; GroupDescription: Оберіть версію встановленого Медіа Програвача [Components] Name: sp2comp; Description: Service Pack 2; Types: sp2os Name: sp3comp; Description: Service Pack 3; Types: sp3os [Types] Name: sp3os; Description: Service Pack 3 Name: sp2os; Description: Service Pack 2 [Languages] Name: ukrainian; MessagesFile: compiler:Languages\Ukrainian.isl |
neorom вот так?
Цитата:
|
|
Q: Как сделать, чтобы при распаковке файлов, инсталл убирался в маленькое окошко в углу экрана?
A: Мой вариант выглядит так кто-то может мне сделать чтобы кнопка отмены была в миниинсталле?а то её там нету скрипт |
Всем привет. Господа знатоки, подскажите, если не сложно. Мне нужно, чтобы программа не устанавливалась ниже XP. Если я напишу так:
if (WindowsVersion.Major < 5) then MsgBox('Установка ниже версии XP невозможна!', mbError, MB_OK); - так будет правильно? Цитата:
Библиотеку botva2 от htuos качай тут, ну и разбирайся дальше что да как. Цитата:
|
del
|
Цитата:
аж три раза! :) Удобная штука. Посмотри в дизайнере, если интересно Цитата:
MajorVersion = 5 есть и у винды 2000 и 2003 а они старее XP. Короче вот код на определение версии винды. Не стал пользоваться встроенной procedure GetWindowsVersionEx(var Version: TWindowsVersion); тк она сама использует вин апишную GetVersionEx + ещё какие-то процедуры/функции для заполнения нижних частей структуры TWindowsVersion (инфа о сервиспаке и тп) короче если нужна чисто версия винды так будет быстрее, при работе напрямую с GetVersionEx(...) : Цитата:
|
insombia ну что там из скриптом, роботаєт ?(видали лишні повідомлення з скринки, бо в тебе переповнена вона і я не можу написати тобі повідомлення.)
|
Tco 03, и дай скрипт только для деинсталлятора
|
помогите изменить скрипт
помогите сделать так чтобы в инсталяторе менялись картиники ну хотя бы две
у меня так: первая картинка предпоследняя картинка |
bosenkov5, http://forum.oszone.net/thread-235078.html
А для фоновых рисунокв в инсталляторе используй программу GameScript Generator, он по Вашим подчинениям запишет автоматом все в скрипт Inno Setup. |
Tco 03 прошу, єсли можеш, поможи из скриптом (я Inno Setup только начал розбератся, и пока все я непонемаю)
|
alert30, как это автоматом?
|
Ну у Вас и манеры, мистер habib2302 :kruto:
Цитата:
Цитата:
Вот, могу предложить скрип, изучив его у Вас должно всё получиться. |
|
Цитата:
Я тебе дал просто пример и сказал: -"Дальше разбирёшься сам". botva2 в идеале работает с: OuterNotebook.Hide; InnerNotebook.Hide; И если ты скачал библиотеку по той ссылке, по которой я тебя отправил, читай справку находящуюся в этой библиотеки. Там всё почти подробно описано. Чесно говоря не знаю в какой версии, но и пример деинсталлятора тоже идёт вместе с библиотекой. Добавленно: В моём примере я написал: #include "botva2.iss" то есть нужно подключить модуль botva2, скрипт ботвы должен находиться рядом с твоим скриптом. Или же в свой скрипт вписывай то, что тебе нужно. В твоём случаи это всего лишь: |
|
habib2302
Специально для тебя, чтобы ты не порочил моё доброе имя :hi: Незабудь только добавить: procedure DeinitializeSetup(); begin gdipShutdown; end; P.S. Только не говори, что лейблы криво отображаются! Создавай свои или поправляй имеющийся! :moil: |
Цитата:
Ну "автоматом", это я придумал, более этого смысла не мог подумать. |
Цитата:
|
здравствуйте, помогите - допустим (только допустим) есть фаилы общий размер которых превышает DVD5, нужно что бы они копировались как внешние (Flags: external overwritereadonly ignoreversion). а теперь сам вопрос - как заставить этот Inno Setup что бы он попросил поменять, ну или перевернуть диск
|
|
|
saurn спасибо тебе, все за роботало !!!
|
Господа, возможно ли при инсталляции программы удалить ключ реестра созданный другой программой? Ну что-то типа [InstallDelete] или каким-нибудь другим способом :)
|
Tco 03,
Код:
function RegDeleteKeyIncludingSubkeys(const RootKey: Integer; |
|
Tco 03
Например, на этапе установки, так: Код:
procedure CurStepChanged(CurStep: TSetupStep); |
Цитата:
|
alert30, нет у меня есть уже скрипт и я не хотел бы его менять
|
Цитата:
|
Цитата:
Код:
[Registry] |
Tco 03, Этот пример у меня есть, я его пробовал (у меня без 7Z) = фаилы копируются по два раза - как исправить? (у меня на каждом диске лежит папка с одинаковым названием - вот из этих папок мне нужно скопировать все фаилы в папку с продуктом (изменить название папки в {src}\ нельзя)) а они копируются по два раза (и это на первом "диске" - второй диск эмулировать не стал) но подсунул фаилы после запроса второго "архива" и ноль эмоций
|
audiofeel
Цитата:
Вот набросал пример (с разными папками) какая разница с какими именами папки на диске, они же копируются в заданный каталог, где указывается что и куда скопировать. |
del
|
Tco 03, после запроса диска ложу фаилы со второго диска = ноль эмоций, молчание
|
audiofeel
Если ищите на втором диске не папку, а файл, то вот эту строку в скрипте: Код:
if not DirExists(ExpandConstant('{src}\GameFiles\GAME3.DAT')) then Код:
if not FileExists(ExpandConstant('{src}\GameFiles\GAME3.DAT')) then |
Цитата:
|
Цитата:
|
Подскажите, пожалуйста, как инасталлятору сделать стандартный скин:
http://i51.fastpic.ru/big/2013/0315/...e36a2a219f.png |
Dark_Delphin, если обычный классический скин Windows, так в SkinBuilder-е просто создаешь новый (кнопка "New"), и сохраняешь скин.
|
alert30, я делал так, но почемуто не отображается он.
|
Dark_Delphin, попробуйте ради эксперимента скин Office 2007, если опять не вышло, значит проблема с DLL-ками скина.
|
Dark_Delphin, в шапке есть пример задания цвета прогрессбару. оттуда тебе нужна функция SetWindowTheme. Вот ее у себя декларируешь и применяешь к хендлам элементов, которые нужно отобразить в классическом виде. Тоесть, главное окно и кнопки - это в первую очередь. для модальных окошек (обзоры всякие) я писал длл-ку, ибо инно слишком медленно работает - пока там интерпретатор поймет чего от него хотят, в итоге окошки моргали. если найду, где валяется у меня - выложу попозже.
|
neorom, в шапке есть куча справок, или почитайте каждую страницу.
|
Цитата:
|
neorom, NFS Undecover
|
Dark_Delphin, держи процедуру установки стиля всем окнам на форме на основе SetWindowTheme(...), чтоб много букв не печатать
Код:
#ifdef UNICODE |
Johny777, спасибо большое.
Готово. |
Цитата:
|
|
Цитата:
Цитата:
|
neorom, в конце концов прочитали бы справку какую-то, а не тупо сказать "мне нужен готовый скрипт, как вот это"...
|
Цитата:
P.S. Да, я пересматрел форум и понял что скрипт от Fenixx всем очень нравиться, и я не нашол ни одного человека каторий зделать єтот скрипт, только на словах все хвастаются что он очень прост !!! Цитата:
Цитата:
|
neorom
Цитата:
И когда Вы изучите Inno и поймёте что к чему - Вы будете говорить точно так же, как сейчас отвечают Вам. Чтобы развеять Ваше негативное отношение к людям находящихся на этом форуме, якобы всё только на словах, а на деле... Вот Вам пример. |
Tco 03 Как мне добавить до моєго скрипта вот єти финкции(установка значка и установка по)
И чтоби били коментарии как на фото ( чтоби било 5 рисунков ) Ссилка ==> http://us.ua/1066396/ |
Цитата:
Создание кустомного чекбокса. |
Tco 03, у тебя всё правильно, но рекомендую:
1. писать скобки в заголовке процедуры/функции function MakeQuickLaunchIcon(): Boolean; и при вызове MakeQuickLaunchIcon(); для наглядности 2. писать координаты через метод SetBounds(ScaleX(слева), ScaleY(сверху), ScaleX(ширина), ScaleY(высота)) для краткости кода, а все отдельные координаты с участием цифр через функции ScaleX(), ScaleY() для правильного расположения контролов 3. Checked := False; по дефолту, так что строка не нужна 4. Цитата: "TabOrder — указывает направление перемещения фокуса при нажатии клавиши Tab (от начала к концу или от конца к началу);" Думай нужен ли он тебе. до кучи советую почитать о методе Create конструктора http://delphi.about.com/od/adptips2005/qt/aowner.htm со входным параметром (это указатель) принадлежности к другому компоненту например у меня есть процедура создания формы, на ней панели, а панели кучи котролов. При разрушении формы родителем панели что лежала не ней становится WizardForm (тк геморно разрушать, сохранять а потом воссоздовать). Поэтому указатель у меня на пенели nil а указатели на контролах, что лежат на панели - ссылка на панель myPanel (var myPanel: TPanel) 5. Сейчас будет смешно, но у чекбокса нет возможности подстраиваться под размер собственного текста и чтоб не подгонять размер, а в лучае с несколькими языками это много работы используй забавную, но сверх рабочую, быструю и удобную функцию function GetFutureCtrlWidth(const uCaption: String): Integer; Есть правда вин апишная функция которая используется в Autosize лейбла но работать нормально она не хотела, использовал её в первой реализации кастомного чекбокса ( http://forum.oszone.net/post-2043384-1383.html ) короче вот так выглядел бы твой код у меня: |
Johny777
Ну, а говоришь времени нет, вон какую "поэму" написал :smirk: Это не мой код - это справка (Inno Faq) с соседнего форума (по крайне мере я её когда-то от туда качал). А nil не nil спорить не буду, лично я сразу пишу конкретно, где именно и что создать. |
Цитата:
|
neorom
Цитата:
|
Цитата:
|
|
Цитата:
|
neorom тебе нужен закос под феникса?
|
Цитата:
|
neorom нужно на скрипт смотреть,так как там видно что все криво сделано
|
Цитата:
|
Цитата:
|
|
neorom когда вы уже научитесь выкладывать скрипт со всеми файлами?
|
как сделать в inno кнопку с прозрачным фоном?
|
кто-то понял как сделать прикол с переключением языка на ходу?
|
sergey3695 вот что нашел,хз оно ли это то что тебе нужно
Чекбоксы тоже прозрычными сделать нельзя (дефолтные у анси) Решение следующее: Создаете радиокнопку без надписи справа, создаете отдельно надпись к ней (элемент TLabel с Transparent:=True). Пишите процедурку клик по TLabel=клик по радиокнопочке. И в итоге получаете прозрачную радиокнопочку. Примеров таких кнопочек и чекбоксов - немеряно, поэтому ищем (скрипт Prototype от Shegorat к примеру) |
Цитата:
Зделайте так чтобы в каждам етапе инсталяции бил новий рисунок(в месте пять (там уже эсть четире рисунков, но на етапи выбор директории для инсталяции игри и на этапе установки ярликов один и тотже ресунок и надписи в окне теже, зделайте чтоби они разние рисунки и надписи к ним)). |
neorom
|
Tco 03 Зделайте так чтобы в каждам етапе инсталяции бил новий рисунок(в месте всех чтоби било пять (там уже эсть четире рисунков, но на етапи выбор директории для инсталяции игри и на этапе установки ярликов один и тотже ресунок и надписи в окне теже, зделайте чтоби они разние рисунки и надписи к ним)). Если не трудно.
|
del:
|
insombia, кто тебе про радиокнопку писал? ( я про обычные кнопки.
|
neorom
Вот, держите! И установка дополнительного ПО и смена картинки! Картинка меняется через функцию: NextButtonClick Добавлено: С надписями Вы также можете поступить через: NextButtonClick Код:
function NextButtonClick(CurPageID: Integer): Boolean; |
del
P.S. Я взяв вашу идею и перелал на свой лад, так я хател из самого начала. Єсли хто хочет я могу викладь, но скажите как(напишите инструкции) и где. |
Цитата:
|
проблема с isexec
if i < 2464 then /// задаём количество файлов в папке, в данном случаи их 708 шт!! задал правильное количество файлов в папке с игрой (у меня 4 архива) а оно все равно ошибку кидает |
Цитата:
|
del
|
Mailchik, за кнопку спасибо
никто незнает const WM_SETREDRAW= ????; |
Цитата:
Код:
WM_SETREDRAW = $000B; |
Да , когда я тестировал скрип, я увидел что эсли и не ставить две галочки у окне "Вибора установки ярлика и ПО" ярлики
ставлятся сами и стартуєт програма dxwebsetup.exe сама. Как єто исправить ? Скрипт з файлами ==> http://us.ua/1068064/ |
Здорова!
Народ, подскажите как решить проблему! Имеется такой код Пробовал RegKeyExists, RegValueExists, в справке искал. Не нашёл. Задача Запихнуть ключ реестра для проверки, причём весь ключ нужен Код:
Root: HKLM; SubKey: SOFTWARE\Adobe\Adobe ARM\1.0\ARM; ValueType: dword; ValueName: iCheckReader; ValueData: $00000000; Как реализовать? |
Crazy Noise,
|
как избавиться от мигания формы при разворачивании, которая использует isskin?
|
Цитата:
|
понимаю вопрос нубский,но все же, как скрыть WizardSmallImage?
|
WizardSmallImage.Hide; логично вроде?
|
Gnom_aka_Lexander вроде да,но куда его привильно вписать?
|
Цитата:
P.S. |
Цитата:
Вообщем замените в своем скрипте секции Run и Icons на вот эти: Код:
[Run] |
Цитата:
Далее, уже был отредактирован полностью готовый, РАБОЧИЙ пример: Пост... После чего он пишет: Цитата:
|
Цитата:
|
neorom тебе дали совет,что для начала читай справки во избежание флуда
|
Здравствуйте.
Подскажите пожалуйста что нужно дописать в скрипт чтобы при запуске инсталлятора он сверял реестер и если находило в нем значение (например: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 220440]) он запускался, а если не находило то выбивало сообщение... И как сделать так, чтобы инсталлятор искал в реестре значение и по нему выставлял путь установки (например: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 220440], "InstallLocation"="D:\\Games\\steamapps\\common\\D mC Devil May Cry")? Спасибо. |
Цитата:
Код:
[Setup] Цитата:
Код:
[Setup] |
Habetdin
Большое спасибо. Уже все нашел. :) |
ботву никогда не юзал,хотелось бы сделать через неё чтобы на всех страницах была картинка
p.s. пример из шапки не предлагать http://rghost.ru/44666197 |
Всем Доброе утро, помогите = добавил в скрипт "IsSlideShow [1.0.2]" - выходит вот эта ошибка, не знаю даже примерно в чем проблема . если нужен скрипт- отправлю. P.S. может посмотрев мои каракули предложите другой пример слайд шоу
|
Цитата:
|
audiofeel,
На какой версии компилите? У меня всё работает. P.S. Строчки в скрипте, типа WizardForm.PageNameLabel.Transparent := True, смысла не имеют, и будут вызывать ошибку при компиляции. Стандартный PageNameLabel это TNewStaticText, а оный не поддерживает прозрачность. |
saurn, на последней которая доступна расширенной unicode (innoultra) вот сейчас с третьего раза вылезла (ошибка появляется после нажатия на кнопку "завершить")
|
Цитата:
Цитата:
Грубых ошибок не вижу, которые могли-бы вызвать ошибки. CallbackCtrl.dll там лишняя, в IsDone уже есть каллбак. Версия инно какая?( в заголовке окна дословно что написано? |
Gnom_aka_Lexander, 5.5.1.ee2 (u) (build 121002)
|
audiofeel
Тут помочь, к сожалению не смогу, так как юникодовой версией никогда не пользовался. Конкретно у себя ошибку выловить не смог, проверил несколько раз. Версия та же, что и у вас, только ANSI |
Цитата:
|
audiofeel, ошибки там такие, которые на работу кода не влияют, только на скорость его работы, не более. у меня восьмерка х64, версия инно такая-же как у тебя, все нормально работает. ты скрипт не забыл сохранить перед тем, как заливать его?
|
Цитата:
|
audiofeel
Да нет, не в восмёрке дело: сейчас выловил ошибку. Происходит она в OnTimer после прерывания установки. Потестите код в объединённом виде, так проще увидеть ошибку. |
saurn, без ошибки! (раз пять пробовал) появилась другое = эффект перехода один и тот же или вообще слайд шоу нет стоит первая и все. может менять картинки и друг за другом без интервала а может и через 10 секунд и через 20, причем чередуется может менять эффект а может один и тот же
|
audiofeel,
Эффекты я не трогал, хотя соединил скрипты на скорую руку, исключительно чтобы проверить, может и намудрил что) Проверте на своем скрипте, что вы выкладывали. Только в процедуре CurPageChanged на wpFinished добавьте деинициализацию слайдшоу и убийство таймера. Код:
DeinitializeSlideShow; |
Цитата:
|
|
saurn, ошибка при компиляции = одну "исправил" другая вышла
|
вот
|
audiofeel, это теги форума, человек не учел, что в теге кода остальные теги не учитываются просто удали все HTML-теги и все
|
Gnom_aka_Lexander, посмотрите второе изображение = не понятно
|
Gnom_aka_Lexander
Просто пример из CHM файла, теги и разрывы строк скопировались, а я не обратил внимания. audiofeel Поправил пример в предыдущем посте |
saurn, вроде рабочий
|
audiofeel
Пример работает корректно, я долго его использовал. Есть, правда, одна неприятная мелочь: иногда при смене изображения мерцают. |
saurn, просто перед loadfromfile нужно делать Image.Bitmap.FreeImage; это немного освободит память и уменьшит мерцание.
|
ботву никогда не юзал,хотелось бы сделать через неё чтобы на всех страницах была картинка
p.s. пример из шапки не предлагать http://rghost.ru/44666197 |
|
Tco 03 да,именно оно
|
Доброго всем. Товарищи, подскажите пожалуйста, что добавить в скрипт.
Задача такая: Setup.exe должен просто скопировать все файлы которые лежат вместе с ним, в место указанное в установщике. Т.е. Setup.exe в себя компилировать ничего не должен. А просто служит для указания места копирования всех файлов которые лежат вместе с ним. |
Renko13, Прочитай про флаг external в секции файлов. как раз то, что тебе нужно.
|
Gnom_aka_Lexander,
Спасибо. То что нужно. Буду теперь тут копать, инсталлер то складывается. А вот при установке пишет: Ошибка при попытке чтения исходного файла. Якобы не существует. |
Renko13, Скрипт покажи. я-ж не знаю, как ты исходный файл прописываешь.
|
Gnom_aka_Lexander,
Скрипт длинный, а вот секция Files вот такая: Код:
[Files] Source: BOOT_A.wim; DestDir: {app}; Flags: ignoreversion external; |
Цитата:
Код:
Source: "{src}\BOOT_A.wim"; DestDir: {app}; Flags: external ignoreversion; Код:
Source: "{src}\wim\BOOT_A.wim"; DestDir: {app}; Flags: external ignoreversion; |
Цитата:
Теперь буду так же с папками делать |
Цитата:
Цитата:
А для спасибов там есть такая специальная кнопочка - Полезное сообщение |
Gnom_aka_Lexander,
Ой, точно. Запамятовал :clapping: |
Добрый день.
В программе я разбераюсь довольно таки плохо, но нужно срочно собрать пополнения для консультанта и отослать их в далёкое местечко, где нет интернета и где сидят очень неграмотныей(вплане компьютеров) люди. Хотелось бы автоматизировать процесс. А нужно мне от программы следующее: 1) Установщик сканирует флешки, находит файл "Cons.exe". 2) Ищет там папку RECEIVE. 3) Распаковывает туда файлы. 4) Запускает файлик "Cons.exe" с ключами /Receive /Base* /Yes |
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Tco 03,
Цитата:
И да, флешек может быть куча вставлена. Цитата:
Одна из этих папок называется "Receive". Туда и нужно копировать файлы. Потом нужно запустить файл Cons.exe с параметрами /Receive /Base* /Yes Цитата:
Важно, что искать программа должна именно на флешках. Т.к. на компе может быть установлена демо версия Консультанта, с такими же файлами, но урезанная и не умеющая пополняться. |
доброе время суток.дайте пожалуйста мне скрипт на кликабельное лого без фона
|
|
i-Lex, папка Receive с апдейтами рядом со скриптом :
|
i-Lex,
El Sanchez, Ну ты меня опередил на минуту :) , как вариант: пробегаемся в цикле функцией GetDriveType() по дискам пока она не вернёт DRIVE_REMOVABLE рекурсивно ищем в диске (то бишь во флэшке) файл и заполняем структуру Код:
type целых 176 строк кода :) код: ЗЫ: i-Lex, у меня там пара лишних объявленных переменных (Ex: ErrorCode). Забыл подмести. Сам убери! архив с примером: |
Если кому интересно, вот окончательное решение задачки товарища i-Lex:
Без коментариев(есть за мной такой косяк ;) ) но там вроде все и так понятно. буду благодарен товарищу El Sanchez, если подскажет, как можно дополнительно оптимизировать поиск, кроме принудительного обрыва рекурсии. |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Gnom_aka_Lexander, El Sanchez,
дельфи и инно используют для поиска WinApi функции: function FindFirstFile(...): THandle; function FindNextFile(...): BOOL; function FindClose(...): BOOL; которые лежат в kernel32.dll и работа напрямую с этими функциями дала бы некоторое повышение скорости а то получаем торомоза из-за вызова функции внутри другой вот накатал 2 примера рекурсивного поиска по расширению: обычная и с использованием вышеупомянутых WinApi напрямую: но в результате обычная работает быстрее тк, для апишной приходится использовать функцию конвертации массива символов в строку, тк урезанная инно не умеет преобразовать тип String(array of Char) :( ================= ускорить поиск думаю можно указанием имени файла а не расширения: SearchForFiles('C:\Program Files\Adobe\Adobe Photoshop CS5.1 (64 Bit)', 'Bib.dll', UndefArray); |
|
Большое спасибо Gnom_aka_Lexander, за помощь!
|
Цитата:
Флешка чисто консовская. Поэтому можно рвать поиск при первом результате =) |
Цитата:
|
доброе утро всем, ну задумка (или глупость) такая = хотелось GroupEdit.Color := clBlack; ну получилось но при нажатии "NoIconsCheck" фон в GroupEdit "белеет" и текста не видно (было бы хорошо если бы "GroupEdit" был транспарент) . И как сделать фон "NoIconsCheck" черный (или транспарент) а текст белый. Спасибо!
|
habib2302 http://rghost.ru/44839186
|
Все приветы! Уважаемые форумчане, подскажите как грамотно реализовать алгоритм, который будет отображать в компоненте Label проценты из ProgressGauge (progressbar); Я имею данный скрипт:
Код:
procedure ExtLog(); Код:
[Files] Уважаемые, помогите пожалуйста решить данный косяк... |
Alloc Пост #239
|
2 all, тема будет закрыта и переведена в архивное состояние. Продолжаем тут: http://forum.oszone.net/thread-257328.html
|
Время: 00:25. |
Время: 00:25.
© OSzone.net 2001-