Скрипты Inno Setup. Помощь и советы [часть 8]
Вложений: 3
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы (Archive Pack 1):
Скрипты Inno Setup. Помощь и советы [часть 6] Скрипты Inno Setup. Помощь и советы [часть 7] |
Добрый день уважаемые гуру.
В окне компонентов не работает прокрутка мышкой (прокрутить окно компонентов можно либо скролл баром либо стрелочками на клавиатуре, что не очень удобно.) Я подозреваю, что данная проблема из-за использования скина либо из-за того, что на окна Components и Tasks, накладывается фоновое изображение. Как пример прилагаю установщик тык Можно ли вернуть возможность прокрутки колесом мыши, есди да, то как? |
Цитата:
1. "Игра World_of_Tanks не найдена! Укажите путь к папке с игрой вручную!" Имейте ввиду: Пример - это пример, а не готовый инсталлятор. Устанавливать какую-то игру ради проверки, никому не нужно. 2. "Внутренняя ошибка: ExtractTemporaryFile: The file "ProtoSans.ttf" was not found." |
Nordek, прошу прощения, вот убрал все лишнее тык.
|
Добрый день, подскажите пожалуйста, как решить проблему с прогресс баром. Скрипт Metro UI Install.
Сам скрипт - https://yadi.sk/d/RQGO6AmDeQhdb |
Цитата:
|
Оригинал: Name: "{group}\{#GameName}"; Filename: "{app}\c3.exe"; WorkingDir: {app}; Comment: "Запустить {#GameName}"; Check: NoIcons and not Install; Name: "{userdesktop}\{#GameName}"; Filename: "{app}\c3.exe"; WorkingDir: {app}; Check: Desktop and not Install; Вписываю свое: Name: "{group}\Хана бобру"; Filename: "{app}\c3.exe"; WorkingDir: {app}; Comment: "Запустить {#GameName}"; Check: NoIcons and not Install; Name: "{userdesktop}\Хана бобру"; Filename: "{app}\c3.exe"; WorkingDir: {app}; Check: Desktop and not Install; И нифига, на рабочем столе и в меню пуск, просто белый значок и подпись которая прописана в GameName. Все разобрался - было двоеточие в названиях ярлыка))) |
Цитата:
#define IconDesktop "Хана бобру" и вставь {#IconDesktop} |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
deathid@vk, пробуй.
|
Привет. просветите мну)))
В общем создаю фриарком архив кидаю к ехе все путем. Создаю фриарком архив с шифрованием каталогов и паролем -р -hp при установке кричит IsDone, мол заголовки повреждены. В общем как создать фриком архив, чтоб нормально работало с шифрованием. И чтоб при попытке открыть сам архив, не открывались внутренности, а запрашивался пасс. |
Подскажите пожалуйста.
7z (без сжатия) + Precomp + SRep + FreeArc Все вроде бы нормально распаковывается, но, архив 7z, тот, который без сжатия, остается в папке с распакованными файлами. Содержимое этого 7z скидывается в указанное место, но и архив остается тоже. Как можно сделать, чтобы установщик удалял этот архив в конце установки? |
Okta_333, используйте флаг deleteafterinstall
Код:
Source: "sniper.7z"; DestDir: "{tmp}"; Flags: dontcopy deleteafterinstall |
MogilShik2007
Смотрите тут, я спрашивала: forum.oszone.net/thread-278998-238.html Там Shift85 указывал где именно в ISDone писать пароль. В ISDone 05 пароль не срабатывает, а в 06 версии все прекрасно работает. Единственное что могу от себя добавить, не ставь сильное шифрование, вполне достаточно стандартного (ставьте aes, serpent что-то не переваривает). Команда -hp дает сокрытие каталогов, т.е. никто не увидит что находится в архиве. Вообще, советую почитать документацию на FreeArc, много нового для себя узнаете. |
Спасибо, пока ждал ответа прочитал справку по IsDone, но теперь стало интересно у меня IsDone.dll 0.5, если тупо заменить на 0,6 код нужно переписывать или и так сработает?
|
Вложений: 1
Как только пытаюсь подсунуть шифрованный файл к ехе выдает:
|
MogilShik2007
Нужно подредактировать код. Сама этого не делала, мне помогли, за что отдельное спасибо пользователю Nik1967, сама пока учусь. Dodakaedr Спасибо, попробую! |
Okta_333,
Можешь скинуть скрины, какие галочки ставишь в FreeArc? |
Okta_333, а зачем такие сложности: зип - прекомп - среп - арк? Это раньше так делали, сейчас, когда есть CLS (cls-precomp.dll, CLS-srep.dll) распаковка идёт в один заход.
|
MogilShik2007
Нет, скрины скинуть не смогу, сижу с телефона. Но по памяти скажу, как сама делала. Заходишь во вкладку Шифрование, указываешь пароль. Далее возвращаешься на первую вкладку и ставишь галочку на Шифрование (алгоритм стандартный, в нем как раз отмечена команда -hp, сокрытие каталогов). Далее архиваруешь. Nik1967 Вот научиться бы ими пользоваться!!! Я новичок!!! CLS для меня пока что китайские иероглифы!!! Стараюсь учиться..... А распаковка этим CLS пошустрее проходит? Или это для простоты использования? |
Может кто наскоряк переделать скрипт под IsDone 0.6
Вынесено отдельно в модуль. http://rghost.ru/6XjXpPjGX |
Цитата Okta_333:
Но по памяти скажу, как сама делала. Заходишь во вкладку Шифрование, указываешь пароль. Далее возвращаешься на первую вкладку и ставишь галочку на Шифрование (алгоритм стандартный, в нем как раз отмечена команда -hp, сокрытие каталогов). Далее архиваруешь. » Так на вкладке шифрование ты галочки не ставила - Зашифровать каталог архива и Использовать пароль? Мда, хотя толку все-равно нет, нужно переделывать под IsDone 0.6 |
MogilShik2007
У меня в алгоритме шифрования стоит -hp Выглядит это кажется так: aes256 -p? -hp? Пишу по памяти, так что в алгоритме могу ошибиться, пусть меня поправят знающие люди. |
Цитата Okta_333:
У меня в алгоритме шифрования стоит -hp Выглядит это кажется так: aes256 -p? -hp? Пишу по памяти, так что в алгоритме могу ошибиться, пусть меня поправят знающие люди. » Да я уже по разному пробовал, ни в какую - исдон 0.5 бунтует))) Рискнул просто заменил 0.5 на 0.6, ехе собирается, но при запуске кричит, что не может выгрузить исдон во временную папку))) |
MogilShik2007
Ну да, нужен 6-й ISDone. Я бы вам с радостью помогла, но, к сожалению, и себе не смогла помочь в данном вопросе. |
Цитата:
|
Цитата:
;Пароль для распаковки архивов #define Password ""). Я этот скрипт перелопатил, много чего поменял - работает 100%! По крайней мере на win 7 x64. Цитата:
Цитата:
Может воспользоваться уже готовыми скриптами с исдон'ом 6-ым? |
Цитата:
этом?
PHP код:
Я кагбы новичок, и не хочу использоват арк, да и если не за коментировать ;#define Data то ошибка при установке - "не найдено не одного файла указаного для ISArcExtract |
Nik1967
О! Это в высшей степени интересно! Буду учиться! Спасибо вам за наводку! |
Цитата:
|
Цитата:
|
Цитата:
|
Добрый вечер.
Вообщем разобрался я со скроллом, спасибо вам за советы! Но теперь появилась другая проблема... фон в окне компонентов не закреплен, можно ли его как-то закрепить? Вот установщик для наглядности тык |
|
MogilShik2007
Буду на "ты", так проще! Скачай любой готовый скрипт с ISDone 06 final и "проверь" свой архив. Могу тебе в стандартный скрипт вогнать ISDone 06 и попробуешь. |
Здраствуйте , не подскажете как переместить строницу "язык " между страницами "меню "пуск"" и "здачаи"
https://yadi.sk/i/xP_VWb3meVLWc |
Цитата:
|
MogilShik2007
На 6 версии пароли прекрасно работают. |
Цитата:
Эх, будем ждать добряка, мож кто скрипт под 0.6 переделает))) |
MogilShik2007
Другой скачай, есть много классных скриптов, спасибо добрым людям. |
Тот который прошу переделать, таких похожих больше не нашел, в этом есть все, что нужно)))
А если похожие чем-то попадаются, то тоже на исдоне 0.5. |
Ребята , помогите, очень нужно
|
Цитата:
Цитата:
Не помогло. Ругается на отсутствие файла. |
И еще вопрос , что ето за ошибка , скачал новый скрипт , и тут же ошибка
https://yadi.sk/i/Cf6QrGR2eVUWx |
Вложений: 1
Цитата:
Код:
DeleteFile(ExpandConstant('{app}\sniper.7z')); Цитата:
Код:
type Цитата:
|
Dodakaedr
Название архива заменила. А в какой секции это прописать? Код:
DeleteFile(ExpandConstant('{app}\sniper.7z')); |
Цитата:
Пример
Код:
If MakeMusic and (FileExists(ExpandConstant('{app}\Example_1.7z'))) then |
Цитата:
|
Dodakaedr
Помогло! Спасибо! |
Добрый вечер.
Вообщем разобрался я со скроллом, спасибо вам за советы! Но теперь появилась другая проблема... фон в окне компонентов не закреплен, можно ли его как-то закрепить? Вот установщик для наглядности тык |
Цитата:
Код:
SetWindowLong(WizardForm.ComponentsList.Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_COMPOSITED); |
Все прив, может кто объяснить чего это за беда и где копать?
|
Господа эксперты, подскажите как работать с PrecompInside и SRepInside.
Разжимаю файл при помощи precomp040.exe. Полученный pcf-файл пропускаю через SRep и сжимаю Arc'ом. Далее прописываю в ISDone пути: Код:
При установке выдаёт ошибку Из этого следуют 2 вопроса. 1. Правильно ли я прописываю пути для распаковки SRepInside и PrecompInside? 2. Нужно ли в скрипте активировать #define precomp04 ? |
El Sanchez, спасибо за помощь, но я немного не понял, где именно в коде это использовать...
|
Цитата:
|
Dodakaedr, уже пробовал.
|
Farser21, попробуйте еще добавить в секцию [code]
Код:
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall'; |
Dodakaedr, теперь код не может понять индефикатор GWL_EXSTYLE
|
Цитата:
Код:
[code] |
Такс, вроде перелопатил в скрипте исдон 0.5 в 0.6, но терь исдон отказывается извлекаться, мож кто подскажет - http://rghost.ru/8ZdbkzBdh
|
Dodakaedr, теперь Handle не понимает.
P.S. Это окно скрыть можно? |
|
Dodakaedr, спасибо за помощь.
Еще есть небольшой вопрос... Можно ли в окне компонентов сменить цвет\стиль\размер определенный надписи? Не все тексты в окне компонентов а например только заголовки. |
Цитата:
|
Цитата:
Код:
procedure InitializeWizard(); |
Dodakaedr, хм.. интересно, а можно ли менять стиль заданному тексту, ибо сейчас он сменился только в самой первой строке.
|
Цитата:
Код:
procedure InitializeWizard(); |
Вложений: 1
Вот модуль работы с текстом, цвета, правка и т.д.
|
Цитата:
Скрытый текст
Код:
#include "ReDrawText v.1.5e4.iss" Модуль ReDrawText v.1.5e4.iss
Код:
[code] |
Никто не пользуется PrecompInside и SRepInside ?!!!
|
Okta_333, что это? Скрипты Inno Setup. Помощь и советы
http://krinkels.org/threads/precompinside.50/ http://krinkels.org/threads/srepinside.49/ |
sergey3695
А разве вопрос не по теме? Я же до этого описывала ситуацию. И всё равно не понимаю что я делаю не так..... |
Цитата:
Тыц
ЗЫ. с моим скриптом то, кто поможет? Смотрю уже 4 человека скачало и тишина))) |
Цитата:
|
Okta_333, это не скрипты inno setup. пиши там куда ссылочки ведут.
|
Цитата:
|
Цитата:
Цитата:
Цитата:
Код:
#define A = (Defined UNICODE) ? "W" : "A" |
El Sanchez, благодарю за помощь.
|
Здраствуйте как такое реализовать , и есть возможноость на 3 -4 языка ?
https://yadi.sk/i/-sJv0Rd0eZshJ |
Привет всем.
Как сделать, чтобы после деинсталяции компонентов, по заданному пути создавалась папка? Заранее спасибо за ответы! |
Цитата:
Код:
Procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); |
kotyarko@fb, все я разобрался, спасибо за помощь.
|
Скажите пожалуйста, а какие вообще цвета поддерживает Inno Setup? А то ставлю синий, а отображается жёлтый.
|
Okta_333, наверное прописал цвет в RGB? В инно BGR - цвета используются, меняй первые два знака с последними.
|
Всем привет в чем может быть проблема выходит ошибка radio item cannot have disabled child items
|
Цитата:
Код:
clScrollBar = $80000000; Цитата:
|
Shift85, так я сам не пойму из за чего она компиляция проходит успешно
|
Здраствуйте ,у меня возникла така проблема , походу неправильно скрипт соеденил https://yadi.sk/i/6SaACTKeeavWa
помогите пожайлуста. |
Ребята , помогите реализовать ету шнягу (
|
Цитата:
Цитата:
|
Подскажите кто знает, используется вот такая функция
Код:
Root: HKCR; Subkey: "Pro.Session\DefaultIcon"; ValueType: String; ValueData: "{code:GetExeShortPath},0"; Flags: uninsdeletevalue Цитата:
|
Цитата:
Цитата:
Скрипты - ето основной мой скрипт 1- ето то что я хочу реализовать w- ето то что я хочу получить в финале ( на основе готового скрипта )( ето не обезательно но если знаете как сделать помогите новечку , буду очень благодарен )) https://yadi.sk/d/zJHtiYE1ecUEh |
Всем привет как можно категорию Tasks изменять в размере, вот скрин : http://s47.radikal.ru/i115/1502/b3/8eab69b26246.png
|
diman_21Ru,
Код:
WizardForm.TasksList.SetBounds(ScaleX(100), ScaleY(10), ScaleX(WizardForm.TasksList.Width), ScaleY(WizardForm.TasksList.Height)); |
Dodakaedr, а куда можно прикруть именно ?
|
Цитата:
Сюда: Код:
with WizardForm.TasksList do |
Цитата:
Код:
procedure InitializeWizard(); |
Ребята , помогите з скриптом , оочень нужно ((
|
Цитата:
Описание проблемы и скрипт в студию. ;) |
Цитата:
http://forum.oszone.net/post-2470094-95.html вот я писал , там просто не так его соеденил , и сам же скрипт |
самого сначала я хотел просто впихнуть тот скрипт на языки в свой инстал , но потом с той проблемой я понял что для меня, и моих знаний ето не невзомжно по етому попросил у експертов на форуме
|
Вложений: 2
Помогите пож. перевести два кода с ansi в unicode.
|
ROMKA-1977, Пробуйте:
Disks
Код:
[Setup] GameuxInstallHelper
Код:
#define MainExe "{app}\MassEffectLauncher.exe" |
Цитата:
код с дисками ничего не отображает. |
Всем привет, можно ли сделать несколько страниц Components, если да, то как?
Заранее спасибо за ответы! |
Цитата:
Пример
Код:
[Setup] |
Здраствуйте еще раз , я ту проблемку уже как то сам решил возник другой вопрос . У меня в старом коде выполнялась процедура через "EngOnClick" , неподскажете как сделать артельнативу , тоесть через ьту процедуру у меня выполнялась нажатия на кнопку ,.... блин мне сложно обьяснить , если кто то понял поможете ?
https://yadi.sk/i/_48ekHNVegFvk вот еще , в том инстале одна кнопка активна а одна не активная в моем оба , ето все изза той процедури https://yadi.sk/i/Kk9r5DcyegGGP |
ShadeUa, Скрипт еще раз скиньте, как-нибудь попробую.
|
Цитата:
|
Цитата:
|
Цитата:
вот скрипт , там мой основной и готовый скаченный с интернета , окуда я хотел своровать затею |
Цитата:
|
Я прошу прощение, а может кто подсказать: в конце инсталятора стоит галочка "запустить...."
А что прописать чтобы еще была строчка "Перейти на сайт..." В папке есть фал my site.url Подскажите плиз |
создать еще один месадж бокс, по типу запустить?
|
"создать еще один месадж бокс, по типу запустить?"
Пробовал не работает...если просто указать файл ты выдается сообщение что это типа не исполняющий файл exe (приложение) |
Цитата:
Цитата:
файл my site.url не обязательно, но все же: Пример
Код:
[Setup] |
Dodakaedr - спасибо огромное
|
Всем привет может кто нибудь скинуть скрипт пикник с отображением картинок при наведение на компонент.
|
Как можно выгрузить dll (разблокировать путь) не закрывая процесс?
Скриншот
|
Цитата:
Скрытый текст
Код:
[Setup] |
Dodakaedr, А код на без описаний компонентов не найдется?
|
Вложений: 1
По умолчанию стоят галочки на Бекап и удаление , как можно снять галочки? что бы по умолчанию они были сняты
|
Цитата:
Скрытый текст
Код:
[Setup] Цитата:
|
Как можно не нажимая на галочку или флажок а просто на строчку компонента чтобы он выбирался.
|
Здраствуйте , не подскажете как можна сделать кнопки , при нажатии что б менялся язык инстолятора
|
Цитата:
Скрытый текст
Код:
[setup] |
Цитата:
файл 123.zip загружался в temp там же распаковывался в папку 123 только если в выборе компонентов выбран компонент d при этом чтобы эта процедура проходила до начала копирования других компонентов инстолятора а после установки файл 123 и папка 123 удалялись с InnoTools Downloader думаю разберусь... |
Ребят, подскажите в таких вопросах.
1. Как можно сделать красивое оформление инсталлятора? 2. Что бы при выборе компонентов, справа появлялось превью компонента, именно справа, в отдельно области. Делал при наведении на компонент появляеться, но не удобно, загораживает другие компоненты. |
roman_kudin@vk, Собственно в чем проблема? берешь закрываешь стандартную форум рисуешь свою новую.Примеров в интернете куча,что касается по второму вопросу имеется ввиду это? http://prntscr.com/675qc0
|
Цитата:
А насчет первого,то я со скинами пробовал, а как их к проекту "прикрутить"? |
Как убрать страницу по созданию папки и ярлыка удаление программы .
|
Цитата:
Код:
[Setup] |
roman_kudin@vk,Забирай https://yadi.sk/d/HorUBofNenkGB
Тут Код:
WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(0), ScaleX(205), ScaleY(155)); Код:
SetBounds(ScaleX(215), ScaleY(0), ScaleX(200), ScaleY(200)); |
Вложений: 1
Цитата:
|
Как сделать выбор компонента нажимая на любое место этой строчки а не только на галочку или флажок, заранее благодарю !
|
Цитата:
|
El Sanchez, А У меня нет такого название в установщике не подскажите куда вставить, буду очень благодарен
|
Цитата:
Код:
WizadForm.ComponentsList.WantTabs := True; |
Цитата:
|
WizadForm.ComponentsList.WantTabs := True; не работает если использовать так
procedure InitializeWizard(); begin WizardForm.ComponentsList.WantTabs:=True; end; |
Всем привет.
Как добавить тень к тексту кнопок наложенных через ботву? |
Цитата:
|
Вложений: 1
Цитата:
|
Dodakaedr, Здраствейте , не могли б помогти с соеденениям скрипта , просто там в CustomMessages в скрипте идет rus.ButtonBack а втом что вы кинули без точки , и я недоганяю как изменить , ну тоисть как добавить точку но так что б прога не ругалась
|
ShadeUa, В чем собственно проблема писать дальше так? rusButtonBack rusButtonNext и так далее
|
Цитата:
По сути меняеться только имья окна , а что б вс ето заново прописовать слишком долго , да и код будет длинным, по етому спросил как сделать через точку , что б упростить https://yadi.sk/i/jmnacRFxeon8z https://yadi.sk/i/rFmXH4kHeon9M |
Цитата:
|
Цитата:
https://yadi.sk/i/USsBrvW9eoooc |
Цитата:
|
Цитата:
|
А не подкините пример видоизменения инсталлятора?
Как изменить ширину инсталлятора? Я то изменил, но кнопки и остальное не сдвигаеться |
Подскажите пожалуйста, как сделать чтобы деинсталятор выдавал запрос на удаление папок с сохранениями из My Documents?
|
Okta_333,
Удаление папок с сохранениями из My Documents Скрытый текст
Код:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); |
Цитата:
Код:
Procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); |
kotyarko@fb
Вот спасибо! Всё прекрасно работает! |
Цитата:
Скрытый текст
Код:
[Setup] |
Бьюсь уже некоторое время, но так и не смог прикрутить скин к инсталлу, надеюсь поможете исправить мне данную проблему)
http://rghost.ru/8KcM7QcJ4 - сам скрипт |
Цитата:
|
http://rghost.ru/6Sdf9gdX2 звиняюсь не подумал)
|
Tixo, Fix script. Тестил на расширенном юникоде.
|
хм страннО, у меня отказывается показывать скин(
|
Tixo, A какая у вас версия inno? Unicode или Ansi?
|
ansi
|
Tixo, понятно. Замените IsSkinAnsi
|
все теперь все заработало) благодарю)
|
Здравствуйте уважаемые форумчане)) Очень нужна помощь...
Вот в чем суть. Нужно, чтобы после установки игры, в меню пуск создавалась папка (с моим названием), а в этой папке было несколько кликабельных ярлыков со ссылками, одна ссылка например на общий сайт разработчика, а вторая конкретно на игру. При этом хотелось бы, чтоб один ярлык так и назывался "сайт разработчика", а второй "сайт игры", ну а при нажатии происходил переход по заданной ссылке для каждого ярлыка. Ну и еще желательно, чтоб для каждого ярлыка можно было задать свою иконку. Подскажите, возможно ли это как то реализовать? И если возможно, помогите, пожалуйста, со скриптом :blush2: Буду благодарна :) |
Цитата:
Примерный вариант:
Код:
#define DeveloperSite "http://...com" |
Доброе время суток!
Делаю инсталлятор, во время установки играет музыка с помощью bass.dll используется один MP3 файл, музыка зациклена: BASS_SAMPLE_LOOP = 4 сделал на основе примера с какого-то сайта, музыка останавливается и библиотека выгружается в самом конце по процедуре: Код:
procedure DeinitializeSetup(); Типа устанавливаем "увесистую" программу - процесс длительный - параллельно инсталлятор развлекает нас тихой классической музыкой, нам всё равно надоело ждать и мы уснули или пошли обедать, в это время инсталлятор наконец выполнил свою задачу и извещает нас об этом, например, с помощью записи паровозного гудка :) |
Цитата:
|
Irenis, если допустим нужно не два, а три ярлыка со ссылками
Выбирайте варианты Скрытый текст
Код:
|
TryRooM, и Вам спасибо большое :)
В общем методом тыка получилось, примерно поняла как делать эти ссылки, оказалось не так сложно. Но так же оказалось, что это немножко не то. Эти ярлыки создаются в папке с игрой, эта папка оказывается где то внизу и ее не видно, если специально не искать. А хочется, чтоб папка была вверху и отдельно от игры. То есть отдельная папка с моими ссылками. Допустим, у себя я нажала меню пуск, у меня там высвечиваются последние установленные приложения. И например есть Inno Setup, и в этой строке с Inno Setup есть стрелочка, на которую нажимаешь и открываются сбоку разные скрипты. Как бы сделать что то подобное, чтоб сверху создавалась папка, которую можно развернуть, а там ссылки, можно даже обычные, со стандартными ярлыками. Или это я слишком много хочу и так нельзя сделать? Уж извините за неопытность :blush: |
У кого есть исходник полного изменения вида инсталлятора, поделитесь пожалуйста.
|
Irenis, создавалась папка, которую можно развернуть, а там ссылки
Скрытый текст
Код:
Name: {group}\Иконки\Online 3; Filename: http://forum.ru-board.com; IconFilename: {sys}\shell32.dll; IconIndex: 220; |
Цитата:
Ладно, скажу честно, в этой папке будут находиться несколько ссылок на сайты, не связанные с игрой :blush2: И нужно, чтобы человек установив игру или приложение, даже не совсем понял, откуда у него в меню пуск взялась папка со ссылками. Думала, может сделать, чтоб такая папочка создавалась автоматически на рабочем столе при установке приложения, но это я тоже не умею, да и в меню пуск вроде не так заметно. Точнее мне нужно, чтоб было заметно, но не сразу после установки игры)) |
Irenis,
Скрытый текст
Код:
Source: "Установка иконок\*"; DestDir: "{userdesktop}\Установка иконок"; Flags: ignoreversion recursesubdirs createallsubdirs; Папка будет на рабочем столе. В любом случае, надо дать пользователю возможность выбора установки дополнения. |
Цитата:
Код:
Const //Вот только точно не знаю, какие из них за что отвечают. |
Подскажите, как скин прикрутить?
Код:
[Files] |
roman_kudin@vk, Как скин прикрутить
Скрытый текст
Код:
[Files] |
roman_kudin@vk, Собственно прикрутить к чему? https://yadi.sk/d/n-QxYlq8eqTzd думаю добавить сможете в свой основной код сами
|
kotyarko@fb, Большое спасибо за пример, всё заработало как надо.
В итоге для себя переделал в следующий вид (может кому-то тоже понадобится) |
И последнее, ребят как тут переместить кнопку "Browse" и строку вЬІбора адреса?
Скрытый текст
|
roman_kudin@vk, задайте параметры размещения таким элементам как WizardForm.DirEdit и WizardForm.DirBrowseButton
Код:
[setup] |
Цитата:
И если я сделал скин, все отображаеться, все нормально, но.. CheckBox я сменил, вместо галочки у меня другой символ, при принятии соглашения лицензии работает, а при вЬІборе компонентов нет. |
Цитата:
|
Цитата:
Оформеление картинками и скином думаю прикрутиш. |
Ну я с этим разобрался. Спасибо. Но проблемка с CheckBox`ом. При выборе компонентов, он не изменяеться, хотя в скине я его сменил и при лицензтонном соглашении работает, а вот при выборе компонентов не хочет, просто галочка.
|
Цитата:
|
Спасибо, попробую.
|
Помогите с ISTask.dll. Где взять новые версии? Чем сейчас заменяют "завершалки процессов"? Ткните носом, если говорилось.
|
Цитата:
Цитата:
Код:
[Run] |
Цитата:
|
Цитата:
|
|
kotyarko@fb, У меня вопрос по твоему скрипту PlaySound.iss Воспроизводиться на всех компонентах, а не на конкретных. Help!
Код:
[Setup] |
Цитата:
Код:
[Setup] |
Цитата Dodakaedr:
Как вариант » Спасибо. Лучше без дллок =). Чем будет отличатся реализация через dll и через системный тасккилл? Что "лучше"? Или одинаково? Мб проблем будет меньше где-то. |
|
Подскажите пожалуйста, Inno setup пользуюсь не часто, написал скрипт инсталлятор в котором две игры, все нормально запускается, при выборе компонентов можна выбрать какую игру ставить, или все ставить. Но если ничего не выбрать (тоесть снять все галочки) установку все равно можна продолжить и установиться только деисталлятор. Как сделать чтобы при выборе компонентов невозможно было продолжить установку если не выбран не один компонент?
|
Цитата:
Код:
Function NextButtonClick(CurPageID: Integer): Boolean; |
Спасибо большое. А то из за такой ерунды целый день потратил)
|
Всем прив, возник такой вопрос как реализовать такую фичу, нужно чтоб из папки Redist устанавливалась полная версия DirectX, а после запускался DirectXweb (так как DirectXweb работает через пень колоду, а при отсутствии 9 версии на компе тупо на это забивает)?
Видел в каком то инсталле такую фичу - там при выборе компонентов было установить/обновить DX, есесно до кода не добраться, но при распаковке и просмотре видел, что в папке находились, как полная версия DX, так веб. И еще, что за параметры постоянно прописывают (для чего они): Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs; Check: CheckError; Source: "calc.exe"; DestDir: "{app}"; DestName: nfs.exe; Flags: external; Check: CheckError; |
Цитата:
|
Цитата:
Source: {win}\help\; DestDir: {app}\Files Source: "calc.exe"; DestDir: "{app}" |
Цитата:
|
Цитата:
|
MogilShik2007, вам дали ссылку на справку, где описывается ваш вопрос. Впадлу читать? Идите лесом тогда...
Котярко спасибо за скрипт прошлый. Все работает. Не обращай внимание на неадекватов |
MogilShik2007, "Не борзей".
Цитата:
То что вы поправили себя и написали что: Цитата:
Кстати, Flags играет не малую роль. Смотрите сами: Вы создали проект. Например проект будет расположен в "D:\Project", т.е на Локальном диске "D:\", в папке "Project". В папке "Project" у вас будет скрипт "iss" с содержимым: Код:
[Setup] Этот скрипт: Код:
[Setup] А этот: Код:
[Setup] external - Означает "Внешний", т.е данный Flags указывает "Inno Setup" не компилировать файл и/или содержимое каталога указанные в качестве источника в дистрибутив, а копировать уже существующее содержимое из дистрибутива или с компьютера пользователя. Получается, что, если у вас будет: Код:
Source: {win}\help\; DestDir: {app}\Files; Flags: external При компиляции, файлы в инсталлятор не будут помещены т.к при инсталляции, они будут браться из внешнего источника. А если у вас будет: Код:
Source: {win}\help\; DestDir: {app}\Files Также важно: recursesubdirs - Обрабатывать подкаталоги Указывает компилятору или мастеру искать исходный файл (каталог) заданный именем/шаблоном также и в подкаталогах исходного каталога. createallsubdirs - Создавать все подкаталоги По умолчанию компилятор пропускает пустые каталоги, имена которых совпадают с данным именем/шаблоном и которые являются вложенными подкаталогами исходного каталога. Флаг "Создавать все подкаталоги (recursesubdirs)" указывает Мастеру создавать эти каталоги во время установки (точно так же, как если бы вы создали их в секции "Файлы и каталоги [Dirs]". Должен использоваться совместно с флагом "Обрабатывать подкаталоги (recursesubdirs)") И опять не всё. skipifsourcedoesntexist - этот Flags у вас в скрипте не указан. skipifsourcedoesntexist - Пропустить, если нет источника. Этот флаг при совместном использовании флагом "Внешний (external)" указывает компилятору или Мастеру продолжить установку не выводя сообщение об ошибке если исходный файл не существует. Кстати, если будет указано: Код:
Source: {win}\help\; DestDir: {app}\Files а если Код:
Source: {win}\help\*; DestDir: {app}\Files jack_nuclear, "Не лезь, если не понял". Цитата:
Не думайте что вы от других чем-то отличаетесь. |
Такс, сначала:
интересует - функции этих строк, для чего они: Source: {win}\help\; - вызывается справка оттуда или что? Source: "calc.exe"; - проверка хешей или наподобии? Цитата:
Цитата:
|
Друзья, помогите разобраться с задачей.
Мне нужно записать в реестр несколько значений. Заранее количество значений не известно и будет вычисляться на этапе выполнения. Для реализации задачи я применяю пользовательский макрос с директивой #for: Код:
#for {i = 1; i <= count; i++} _GetAutoLoad Цель: количество итераций цикла должно быть не константой, заданной на этапе компиляции, а переменной, вычисляемой в коде в InitializeWizard. В моём случае для переменной count нужно присвоить значение переменной GlobalCount. Пытался в скрипте указать такую конструкцию: #define count {#GlobalCount}, но конечно не прошло. Выборка из скрипта: Код:
[Registry] |
Цитата:
Для примера: Диспетчер устройств - "C:\Windows\Help\mui\0419\devmgr.CHM" Цитата:
Код:
[Files] Выполнение возможно без копирования: Код:
[Run] Цитата:
|
Цитата Nordek:
Могу задать аналогичный встречный вопрос: Впадлу воспользоваться поиском? Результат: #265. Не думайте что вы от других чем-то отличаетесь. » А этот пост к чему? Сначала смотри кто спрашивал, лол xD Ники не перепутал? Я вроде не ValeraVentor@fb =) Да. Отличаюсь. Я наизусть знаю справку и не спрашиваю то. что в ней написано, как 99% пользователей MogilShik2007 А ты еще задай тупейший вопрос, который написан в первых двух предложениях справки. Меня такие люди поражают своей безмозглостью. |
jack_nuclear, #1009
|
Nordek, Ай-ай-ай. Это опять не то, что я спрашивал. Перед тем, как пытаться вы*бнутся - надо быть уверенным на все 100% =)
котярко меня понял и кинул ссылкой на правильную реализацию. Я задавал конкретный вопрос под конкретные задачи, а не "дайте мне реализацию звуков в компонентах" + Вы дали ссылку на "говнокод". Реализация ужасная. Ваши 2 попытки не удались. Третья будет? |
Цитата:
Вот этот? » Цитата:
На сколько я понял, MogilShik2007 - а интересовало зачем применили подобное: Код:
[Files] Что однозначно ясно: Для примера, но не для последующего исполнения. Цитата:
jack_nuclear, Научитесь цитировать. |
Цитата Nordek:
Не буду показывать пальцем и переходить на личности, но о написанном предложении направленное другому человеку, стоит думать: что то предложение больше относится тому, кто его написал. » Видимо вы из той же партии. Ну сидите-сидите. Объясняйте друг другу справку (да-да. Справка -> Files и там написано что к чему) раз вы только на это способны. Люди хотят ремонтировать двигатель, но инструментов в глаза не видели. Человек не понимает азов (что вообще делает Files -> Source) и не читает справку +Если не знаешь зачем, но есть пример - скомпилируй и нечего форум засорять тупейшими вещами. Я за 8 закрытых тем первый раз обратился с умным вопросом. В первых темах люди были умней. Деградируете. Объяснять справку!! ахаха)) Цитата Nordek: jack_nuclear, Научитесь цитировать. » С телефона? Пожалуйста, перестаньте умничать. Смотритесь жалким, когда в 5-ый раз не получается |
Цитата jack_nuclear:
MogilShik2007 А ты еще задай тупейший вопрос, который написан в первых двух предложениях справки. Меня такие люди поражают своей безмозглостью. » Глаза помой, походу долбишься в них постоянно, если ума не хватает понять вопроса - помалкивай. Nordek вопрос понял, объяснил, а ты сидишь тут вые..ваешсься. Так с этим разобрались, что по поводу первой части вопроса про реализацию DX? |
Цитата MogilShik2007:
Так с этим разобрались, что по поводу первой части вопроса про реализацию DX? » Это описано в СПРАВКЕ, долбень. Мне хватает мозгов, что б написать инсталл в 1500 строк, а ты сиди на примерах с инета. По поводу DX смотри в справке и примерах с [Run] или для твоего начального уровня - напиши батник на запуск 2 екзешников типо такого @ECHO OFF START "" /WAIT Setup1.exe START "" Setup2.exe и запускай через него компонент. Примеров в инете куча (проверил гуглением). Дерзай Этот вопрос не тупой и тут надо хоть что-то знать, поэтому ответил. Для "умных" - я дал самую простую реализацию. Можно и в компоненты добавить, но с задержкой придется мучатся или через exec (лучший вариант) Примеры: Exec('шляпа.exe', 'параметры', 'C:\путь', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); //тебе нужен ewWaitUntilTerminated функция: function Exec(const Filename, Params, WorkingDir: String; const ShowCmd: Integer; const Wait: TExecWait; var ResultCode: Integer): Boolean; |
Цитата:
|
Цитата MogilShik2007:
Ну так хера здесь делаешь баклан, или в свой великой справке ответов не нашел? » А в справке есть реализация звука? Ты и за 10 лет не напишешь. Я тебе пример дал, долбень, и методы реализации Примеры: Exec('шляпа.exe', 'параметры', 'C:\путь', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); //тебе нужен ewWaitUntilTerminated функция: function Exec(const Filename, Params, WorkingDir: String; const ShowCmd: Integer; const Wait: TExecWait; var ResultCode: Integer): Boolean; Я уверен, что ты вообще не понимаешь, что с этим делать =) Жди пока кто-то за тебя сделает)) 2007 в нике год рождения, я так понял? За слова "ума не хватает понять вопроса" отвечаешь или очередной диванный? |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
А более конкретно, пункт 3.1 Если кто-то что-то не понял, не знает, не умеет, неправильно понял другого человека - это не повод его оскорблять Если вы находите такой стиль общения нормой, то данный форум не для вас Если после данного замечания ваши сообщения будут оставаться на таком же уровне - вам помогут понять, что данный форум не для вас. Уважайте друг друга и держите свои эмоции при себе Цитата:
ps Цитата:
|
DEL
jack_nuclear, - 2381 |
Цитата:
Цитата:
Код:
[Setup] |
Цитата:
Скрытый текст
Код:
[Code] Цитата:
|
Цитата:
Я так и вынужден сделать, но всё-таки была надежда обойтись средствами самого установщика :) Дело вот в чём: в реестр я конечно запишу значения, это отлично, но как быть при деинсталляции приложения? Ведь тогда мне придётся самому чистить реестр, а значит нужно самому хранить ключи реестра, которые должны быть удалены при деинсталляции. Вот я и хотел заставить установщик и писать в реестр и удалять ключи... Очень жаль, что в препроцессор нельзя передать переменную из кода. Мне не удалось справиться даже через промежуточный INI файл. То есть, я записывал мою переменную в INI файл во время исполнения скрипта, а при нажатии кнопки Install эта переменная должна была прочитаться из файла и использоваться в цикле. Так вот, в секции кода можно полностью управлять папками (указывать хоть абсолютный, хоть относительный путь), а в препроцессоре есть всего две системных константы, которые указывают на папку размещения исходного текста скрипта или исполняемого файла компилятора. В итоге из препроцессора мой INI файл может быть прочитан только в случае, если он лежит по абсолютному пути, что неприемлемо. |
Цитата:
Цитата:
Код:
[Registry] |
Допустим имеем такой ini файл
Код:
[INI] |
Dodakaedr,
|
ISDone.iss
Доброе утро всем и у меня такой вопрос
Пакую батником Precomp+Srep+FreeArc и при распаковке ничего не происходит и вопрос:как в ISDone.iss прописать чтобы распаковывалось сначала Precomp потом Srep а потом FreeArc ? вот пример if not ISArcExtract ( 1, 10, ExpandConstant('{src}\Setup.bin'), ExpandConstant('{app}\'), '', false, '12345', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break; |
Пытаюсь вставить WizadForm.ComponentsList.WantTabs := True; для нажатия на любое место строки для выбора компонента незнаю куда именно прикрутить стоит Unicode.
|
diman_21Ru,
Код:
procedure InitializeWizard(); |
Привет форумчане.
Как сделать, чтобы после установки в указанной папке создавался текстовый файл, в который будет выводится список установленных компонентов? Заранее спасибо за ответ. |
Dodakaedr, не помогает (
|
Цитата:
Код:
Procedure CurStepChanged(CurStep: TSetupStep); |
kotyarko@fb, спасибо.
|
Цитата:
Скрытый текст
Код:
[Setup] |
Dodakaedr, Вставил код и не помогло (
procedure InitializeWizard(); begin WizardForm.ComponentsList.WantTabs := True; end; |
diman_21Ru, Зачем оно вам? Оно и так выделяется
Скрытый текст
|
Цитата:
Код:
Procedure CurStepChanged(CurStep: TSetupStep); |
Dodakaedr, Вы меня может не поняли компонент надо чтобы выделялся при нажатие на любое место этой строчки а не только при нажатие на галочку или флажок.
|
diman_21Ru, На скрине видно что строка полностью выделена.
kotyarko@fb, можно и так, но в этом случаи весь индекс компонент листа попадает в список, в моем примере только определенный компонент. Грубый, но правильный. Через процедуру, чтобы не путаться
Код:
[Setup] |
Цитата:
|
kotyarko@fb,
Цитата:
|
|
kotyarko@fb, второй более-менее а почему сразу не предложили? У меня просто без заголовков компонентов(родителя). А первый?
Скрытый текст
|
Цитата:
|
Цитата:
|
Цитата:
В любом случае, найдутся те, кому понадобятся эти способы. Так что лишними они тут не будут. |
Цитата:
Код:
procedure CurStepChanged(CurStep: TSetupStep); Цитата:
|
|
Цитата:
Скрытый текст
Код:
type |
El Sanchez, Не помогло (
|
El Sanchez, замечательно! Только я позволил себе немного подправить скрипт:
Скрытый текст
Код:
type а то компоненты, у которых стоит флаг Fixed, тоже были кликабельны. |
Как не крути не работает может кто помочь в личку скину .
nik1967, Поможешь? в личку скину скрипт |
Как снять галочку Filename: "{app}\WoTLauncher.exe"; Description: "Запустить World Of Tanks после установки?"; Flags: postinstall shellexec;
|
diman_21Ru, я так понимаю, секция [Run]? Добавь флаг unchecked - в справку заглядывай! И да, проверь личку.
Кстати, как то diman_21Ru задавал вопрос о переключении 3 языков на лету. Переделал пример - сделал его с комбобоксом - теперь языки можно переключать не по кругу, а выборочно. Может кому пригодится. ЭТО ТОЛЬКО ПРИМЕР! Что бы переключение происходило для всех надписей - все эти надписи нужно переделать! Скрытый текст
Код:
[setup] |
nik1967, Вообще гуд
nik1967, А можно эту кнопку сделать более красивше ? nik1967, И как можно размер изменить кнопки? |
|
nik1967, Ясно
|
Здравствуйте.
Если в инсталляторе присутствует InfoAfterPage, то на FinishedPage становится видна и активна кнопка "<Back" Я хочу её отключить и сделать невидимой (ModalResalt=mrNone, Visible=False) при попытке изменить дизайнером диалогов (использую расширенную версию от Restools) изменяется общая кнопка "<Back" для всех страниц, и свойство Visible выделено серым - недоступно для редактирования. Отключить хочу потому, что при автоматическом переходе на страницу InfoAfterPage у меня выдаётся звуковой сигнал о завершении установки, а при повторном переходе на страницу InfoAfterPage со страницы FinishedPage при нажатии на кнопку "<Back" возникает Runtime Error с подписью что не может извлечь файл "Complete.mp3" из временной папки ввиду его отсутствия. (хочу отключить и спрятать именно кнопку, а не повторно проигрывать звуковой файл). |
palsn2000, Попробуйте так
Код:
procedure CurPageChanged(CurPageID: Integer); |
Цитата:
Код:
Procedure CurPageChanged(CurPageID: Integer); |
Dodakaedr, Спасибо за пример, только вот новая трудность: у меня в коде уже есть одна
procedure CurPageChanged(CurPageID: Integer); и Ваш кусок кода я назвал procedure CurPageChanged1(CurPageID: Integer); со скрытием кнопки WizardForm.BackButton.Hide; Компилируется всё отлично, но не работает (кнопка всё равно есть) в отладчике кружочки серые - т.е. к процедуре нет обращения. Подобные проблемы были ранее с InitializeWizard Решал через запись следующего вида: Procedure InitializeWizard(); begin InitializeWizard1(); InitializeWizard2(); InitializeWizard3(); end; Но с CurPageChanged1 у меня так не получается Не подскажите как записать для нескольких procedure CurPageChanged(CurPageID: Integer); ? Заранее спасибо. |
palsn2000, вижу проще сделать по другому: покажите свою процедуру procedure CurPageChanged(CurPageID: Integer);
или же если уже используется wpFinished то добавьте WizardForm.BackButton.Hide; вот так: Код:
wpFinished: Код:
if CurPageID = wpFinished then WizardForm.BackButton.Hide; |
Dodakaedr, Спасибо разобрался.
Всё сделал в одной процедуре сначала у меня идёт if CurPageID = wpInfoAfter then ....... мой код ....... затем я добавил if CurPageID = wpFinished then и далее Ваш код. Всё заработало, ещё раз спасибо. |
Цитата:
|
Как заставить этот код работать?(unicode от restools). Нужно получить путь к папке "Моя музыка"
Скрытый текст
Код:
[Setup] Решено: Скрытый текст
Код:
[Setup] |
Цитата:
Цитата:
|
Всем привет.
Создаю инсталлятор (стиль Steam) со слайд-шоу. Обычно, когда начинается показ слайдов окно установщика становится "компактным" и перемещается в нижний правый угол экрана. После добавления скрипта "Закрепить ярлык на панели задач" (функция PinToTaskbar) - возникает следующая проблема: во время показа слайдов окно установщика не переходит в нижний правый угол экрана (не меняет размер и положение) и, тем самым, закрывает показываемые слайды :( Как это можно исправить? Код: https://yadi.sk/d/jq7ufVo1f7oVj |
На некоторых системах была замечена проблема с неправильным отображением содержимого в окне установщика. Почему такое происходит?
Скрытый текст
Ссылка на установщик |
Raz3r, Тестируйте, перезалил скрипт, немного подправил фон, текст и ярлыки.
http://rghost.ru/69y2FKDpR |
TryRooM, попробую, спасибо
|
Подскажите код картинок (привью) для компонентов
|
Доброго времени суток.
Вот скрипт инсталлятора "Закос под z10yded". Все работает отлично, но: 1. Подскажите как изменить фон "WizardForm.ComponentsList", например установить для него фоновое изображение или сделать прозрачным? 2. Обычно при использовании "DisableReadyPage=true" название кнопки "Далее" на предыдущей странице заменяется на "Установить". В данном скрипте это не происходит, т.е. страница исчезает, но название кнопки как было "Далее" таким и остается. Как это исправить? Надеюсь, вы поняли, что я имел в виду. |
Sotonisto, ваш скрипт не пошел, так как сижу на unicode, вот пример решения ваших проблем(фон "WizardForm.ComponentsList" и заменяется на "Установить")
Как вариант
Файл large.bmp должен находится рядом с инсталлятором. Код:
[Setup] Цитата:
123, 126 |
Цитата:
|
Цитата:
пример
Код:
[setup] |
Цитата:
|
Dodakaedr, большое спасибо. Всё прекрасно работает.
|
Цитата:
Скрытый текст
Код:
[Setup] |
Цитата:
|
Цитата:
Код:
[Setup] Код:
[Languages] |
Цитата:
|
Доброго времени суток.
Подскажите, как реализовать отображение жирного текста одновременно с обычным. Т.е.: Код:
Caption:= ExpandConstant('Случайная надпись в скрипте'); |
Цитата:
|
Здраствуйте , не подскажите как сделать абзац в строке в Inno
|
Цитата:
Скрытый текст
Код:
[Setup] |
Цитата:
|
еще вопросик, не подскажите как решить такую небольшую проблемку ?
https://yadi.sk/i/dFHhJtrZfFiuz |
Цитата:
Код:
SystemPage.Caption := 'заголовок'; Может это? Скрытый текст
Код:
[Setup] Пожалуйста, поподробней излагайте суть вашей проблемы. |
Цитата:
|
Цитата:
Код:
[CustomMessages] Код:
SystemPage.Caption := CustomMessage(lang+'Caption'); |
Цитата:
|
Цитата:
Скрытый текст
Код:
[Setup] |
Цитата:
|
Цитата:
|
Всем привет :) Подскажите пожалуйста, как при создании установщика сделать два исполняемых файла? Мне нужно, чтоб с одного создавался ярлык и после установки пользователь мог сам запустить этот файл .exe. А другой должен по окончанию установки запуститься автоматически без создания ярлыка на рабочем столе. Спасибо :)
|
Цитата:
Цитата:
Цитата:
Скрытый текст
Код:
[setup] |
Цитата:
а вот архив-https://yadi.sk/d/E_dPSQ0tfGFWf |
Добрый день.
Возможно ли сделать, чтобы после установки запускалась программа, с параметрами, которые будут зависеть от выбранных компонентов? |
Цитата:
Код:
Procedure CurStepChanged(CurStep: TSetupStep); А можно и проще, комментарием ниже)) |
Farser21,
Код:
[Components] |
Вложений: 1
Цитата:
|
Цитата:
|
Цитата Dodakaedr:
Пришлось по другому сделать. С характеристиками проблема с процентами. Если проценты добавить в ChangeLang то после запуска на странице welcomepage при смене языка выскакивает ошибка divide by Zero. Исправить не удалось. » Цитата ShadeUa: или есть какие то другие возможности исправить7 » да по-нормальному сделать. GetFreeSpaceCaption(nil); попробуй вызывать, а в GetFreeSpaceCaption уже и проверочку. Ну файлов у меня нет, вот и делать впадлу. Цитата ShadeUa: кстати можна вот ету кнопку сделать не на 2 языка а на 3? » да. var i: integer; (глобальной и в initiliazewizard :=1); if i=1 then begin langBtn.Caption:= 'rus'; ChangeLang(); i:= i+1; end else if i:=2 then begin langBtn.Caption:= 'eng'; ChangeLang(); i:=i+1; end else if i:=3 then begin langBtn.Caption:= 'ukr'; ChangeLang(); i:= 1; end; только щелкать как-то не прикольно. лучше 3 текстурированные связанные кнопочки. |
Цитата:
|
Цитата:
Код:
var |
И все равно GetFreeSpaceCaption(nil) вызывать там надо. :jester: Напечатал, пример не дал. Вот какой я плохой.
|
Цитата:
|
Shegorat,
http://rghost.ru/64qMBZhQr можно конечно и без (nil), но так короче. это ж проверки прописывать, т.к. все работает быстро и не грузит, то можно и так. |
Цитата:
|
habib2302, можно ли по вашему способу сделать следующее..? Чтобы каждый последующий параметр суммировался с предыдущим? В вашем примере, если выбрать несколько параметров, то они заменят друг друга и в итоге мы получим конфиг с самым последним параметром. Мне же нужно, чтобы они суммировались. Возможно ли это?
|
Приветствую, друзья! Давно у вас не был, снова с проблемой пришел.
Делаю сборку браузера 7Star и есть необходимость обработать файл external_extensions.json, т.е. добавить/удалить всего лишь комментарии строки по состоянию checkbox, например: Код:
{ |
Народ, а есть код на проверку обновления установщика в самом инсталляторе?
|
Вложений: 1
Цитата:
http://krinkels.org/threads/innojson...83/#post-23622 Либо во вложении. |
Вложений: 1
Помогите в этом коде сделать еще одно окно для описания
Файл 123369 |
Добрый день.
Более развернуто напишу свой вопрос. Как по этому примеру сделать, чтобы выбранные параметры суммировались? В этом примере, если выбрать несколько параметров, то они заменят друг друга и в итоге мы получим конфиг с самым последним параметром. Мне же нужно, чтобы они суммировались. Возможно ли это? Код:
[Components] |
Цитата:
Код:
[Components] |
Dodakaedr, немного не так.
Выбирая компонент, вы выбираете параметр, который применяется в конце установки. Выбрав же 2 компонента, соответственно в конце установки будет применено 2 параметра. Но последний параметр заменит все предыдущие, а мне нужно чтобы последний параметр, не заменял предыдущий, а суммировался к нему, чтобы в итоге в конфиге было 2 параметра, а не 1. P.S. Могу для наглядности в лс скинуть то что получилось сделать. |
Подскажите пожалуйста - какая общая уникальная сигнатура у InnoSetup инсталляторов ?
К примеру, то что предлагается здесь : http://file-extension.net/seeker/file_extension_exe , а именно - 4D 5A 50 00 02 00 00 00 - лажа полная, т.к. определяет принадлежность к куче других исполняемых файлов, не имеющих никакого отношения к ISS ... Может можно детектировать ISS по строке 49 6E 6E 6F 20 53 65 74 75 70 ? Она вроде как присутствует во всех InnoSetup инсталляторах... Или всё же есть нечто другое, конкретно уникальное ? |
Подскажите пожалуйста, как написать скрипт, чтобы путь установки брался из реестра. Просто есть два ключа реестра. Один для х64 винды, другой для х32 винды. Как сделать так, чтобы папка в любом случае определялась правильно?
Вот мой код с ключем реестра для х64 винд Скрытый текст
[code] function GetInstallDir(Dir: string): string; begin Dir := ''; RegQueryStringValue(HKLM, 'Software\Wow6432Node\Rockstar Games\Grand Theft Auto IV','InstallFolder', Dir); Result := Dir; end; Ключ реестра для х32 винд - RegQueryStringValue(HKLM, 'Software\Rockstar Games\Grand Theft Auto IV','InstallFolder', Dir) Заранее спасибо. |
Цитата:
Код:
Function GetInstallDir(Dir: String): String; |
kotyarko@fb, увы, строка установки пуста.
|
Цитата:
Ветка, которую вы указали, правильная? Вообще, лучше по-умолчанию указать какую-то директорию и сделать проверку на присутствие значения в "InstallFolder" по указанной ветке реестра. Код:
[Setup] |
kotyarko@fb, да.
|
Соломон_Кейн@vk, извиняюсь, невнимательно написал.
Данный кусок (из первого моего варианта): Код:
RegQueryStringValue(HKLM, 'Software' + Win64 + '\Wow6432Node\Rockstar Games\Grand Theft Auto IV','InstallFolder', Dir); Код:
RegQueryStringValue(HKLM, 'Software' + Win64 + '\Rockstar Games\Grand Theft Auto IV','InstallFolder', Dir); |
kotyarko@fb, огромное вам спасибо. Теперь работает :)
|
Можно ли сделать, чтобы перед началом установки по пути Windows\Fonts удалялся определенный шрифт?
Заранее спасибо! |
Цитата:
Код:
Function InitializeSetup(): Boolean; |
Подскажите пожалуйста, как сделать так, чтобы во время установки инсталятора, не выскакивало диалоговое окно о том, что файл только "для чтения". Чтобы инсталятор не спрашивая заменял подобные файлы, и диалоговое окно не выскакивало. Заранее спасибо.
|
Цитата:
Код:
Flags: ignoreversion |
kotyarko@fb, это уже было прописано в скрипте, а проблема все равно есть.
Вот скриншот, чтобы вы поняли, какого рода проблема. Скрытый текст
Нажимая "Повторить", атрибут "Только для чтения" снимается, установка продолжается ровно до того файла, который, как и этот, "Только для чтения". |
Цитата:
Код:
Flags: overwritereadonly |
Огромное спасибо.
|
Цитата:
|
Работает. Только вот беда. Уже 2 раза устанавливаю, и 2 раза "Проводник прекратил работу". Я в недоумении, как это убрать?
Фух, оказалось, элементарное совпадение от предыдущих операций на компе. |
Из-за чего может возникать данная ошибка?
|
Цитата:
|
kotyarko@fb, вот что вышло.
|
Цитата:
|
Shegorat, опробовал измененный JSONConfig, мягко говоря, "не то пальто", в том числе "убитые" разметка и отступы.
Может кто-то подскажет другой вариант решения задачи для данного файла? Обработать json в качестве текстового удалось, но как добавить/удалить символы комментирования при необходимости в строку? |
Добрый день.
К сожалению все еще не разобрался. Как по этому примеру сделать, чтобы выбранные параметры суммировались? В этом примере, если выбрать несколько параметров, то они заменят друг друга и в итоге мы получим конфиг с самым последним параметром. Мне же нужно, чтобы они суммировались. Возможно ли это? Код:
[Components] |
Доброе время суток. Делаю репак Cyberfox. Как делать проверку по процессорам и отменить установку в случае не совместимости процессора
|
Цитата:
|
habib2302, к каждому компоненту, прикреплен запуск программы с определенным параметром, если выбрать несколько параметров, то программа будет запускаться несколько раз, соответственно заменяя каждый прошлый параметр. Мне же нужно, чтобы при последующих запусках программы параметры суммировались, а не заменяли предыдущий.
|
Цитата:
|
kotyarko@fb, в коде ничего нету связанное с производителями процессоров. Мне нужна проверка по производителям процессоров. Если заданный процессор (например Intel) не совместим с процессором в компе (например AMD), то отменить установку программы
|
Цитата:
Применяете переменную PROCESSOR_IDENTIFIER. А потом спокойно проверяете, AMD или Intel. А ещё можно таким способом: Код:
Function InitializeSetup(): Boolean; |
Цитата:
Код:
[Components] |
Приведите, пожалуйста, пример работы функции FindWindowEx который бы работал на расширенной версии unicode? Какая константа клика для unicode версии? Unicode No или это не то?
Или поправьте этот код: Скрытый текст
Код:
#define A = (Defined UNICODE) ? "W" : "A" |
Подскажите, пожалуйста, версия инно 5.5.1 ee2 (a) ANSI или UNICODE? от к итайцев расширенная или оригинальная?
|
(a) - ansi. расширенная наверное.
|
sergey3695, а не подрелиз какой-нибудь?
|
Цитата:
|
Цитата:
вопрос это (расширенная от китайцев) or (стандартная) |
Цитата:
|
Вложений: 1
господа состоятельные кроты, F1!!!
есть две проблемки: 1. в initializeWizard компонент весом 10 гиг фиксируется, но на странице SelectDirPage пишет что минимум нужно 35мб, хотя по идее должно писаться 10 гиг 2. На странице компонентов отсутствует полоса прокрутки, т.е. по факту список компонентов прокручивается если колесиком мышки повозить, но сие действо неясно тк полосы вертикальной прокрутки нет (с моей подписью вопрос немного диссонирует, дада :) ) скрипт в аттаче, файлы нужные вот http://sendfile.su/1100675 |
Как эту процедуру разделить на портабле и инсталлер:
procedure SettClick(Sender: TObject); begin case TNewRadioButton(Sender) of Bus: begin WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{pf32}\{#MyAppCompany}')) + '{#MyAppName} {#Bus}'; WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{src}')) + '{#MyAppName} {#Bus} Portable'; end; Net: begin WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{pf32}\{#MyAppCompany}')) + '{#MyAppName} {#Net}'; WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{src}')) + '{#MyAppName} {#Net} Portable'; end; end; end; Если добавить if Installer.Checked then или if Portable.Checked then скрипт компилируется, но при запуске инсталлятора выдаёт ошибку: Runtime Error (at 80:119): Could not call proc. |
Цитата:
|
R.i.m.s.k.y., вроде бы уже Ветеран, Сообщения: 1351, ну а где доп. файлы и доп. скрипты? Что, самому, что ли всё искать и собирать? Сколько раз уже по этому поводу было написано.
|
Цитата:
вот доп. файлы и доп. скрипты http://sendfile.su/1100675 |
kotyarko@fb, перед этим стоит:
procedure CopmpClick(Sender: TObject); begin case TNewRadioButton(Sender) of Portable: begin Icons.Checked:=False; Icons.Enabled:= Icons.Checked; Startmenu.Checked:=False; Startmenu.Enabled:= Startmenu.Checked; Panmenuicons.Checked:=False; Panmenuicons.Enabled:= Panmenuicons.Checked; end; Installer: begin Icons.Checked:=True; Icons.Enabled:= Icons.Checked; Startmenu.Checked:=True; Startmenu.Enabled:= Startmenu.Checked; Panmenuicons.Checked:=True; Panmenuicons.Enabled:= Panmenuicons.Checked; end; end; end; Я тоже не вчера родился, вопрос был конкретный, если Вы знаете, почему не можете подсказать? Ведь на форумы Я обращаюсь редко, когда действительно не могу понять!!! В принципе дело Ваше. Заранее извиняюсь за мои высказывания, как говорится "ни кто ни кому не обязан"! |
Цитата:
Нужно именно чтобы их создание инициализировалось раньше, чем их использование. |
R.i.m.s.k.y., по
1. - подозреваю, что тут ограничения 32 битной версии Inno. 2. - это косяк (ну или фича) скина - без скина лифт есть. |
|
Цитата:
Размер указывается не правильно потому что используется чекова функция. исправить можно так: Код:
[messages] Вам уже ответили. Возможно косяк скина, попробуйте другой. Цитата:
|
Цитата:
можно ли как-то в коде поменять этот DiskSpaceMBLabel? я и на неё чек поставлю Цитата:
____________________________________ кстати, автор инно ультра тут не пробегал? |
Цитата:
Код:
WizardForm.DiskSpaceLabel.Caption := 'бла-бла'; |
Dodakaedr, вот
меня всегда напрягало название элементов в инно а по комбобоксам нет примерчика под рукой? |
Цитата:
|
Dodakaedr, не то
это выпадающий список а я хотел раскрывающийся список на странице компонентов вот как спойлер язык установки
- англ
- русский - польский |
R.i.m.s.k.y. если я правильно понял, расширенная версия позволяет в секции Setup использовать ключ ComponentsListTVStyle=yes и тогда будет активирован раскрывающийся список, а в секции Components флаг collapsed позволяет компоненту-родителю по умолчанию быть свернутым, но это так на всякий случай для дополнительной информации
|
dracosha, вах! ты мой спаситель! целую в носик! и полоса прокрутки появилась!
в справке вообще ни полслова! ___________________ подскажите, пожалуйста, как сделать всплывающие подсказки в коде не черного цвета (скин черный), а стандартного желтоватого? скрипты и файлы выше код всплывающих подсказок
Код:
procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea); |
Цитата:
|
Вложений: 1
kotyarko@fb, что именно поправить? скин в аттаче
|
R.i.m.s.k.y., что именно не знаю (tooltips в редакторе скинов почему-то не доступен).
Можешь сам попробовать ISSkinBuilder`ом. |
kotyarko@fb, почему же
control - tooltip есть, только FillColor ни на что не влияет Или я туплю |
Цитата:
VCL в этом плане намного удобнее. Можно просто через ФШ всё сделать. |
Цитата:
|
R.i.m.s.k.y., http://krinkels.org/resources/vcl-st...nno-setup.160/
|
Подскажите пожалуйста как прицепить свою иконку на Официальный сайт и на Удаление?
|
Okta_333, IconFileName не поможет?
[Icons] Name: "{group}\Удалить"; Filename: "{uninstallexe}"; IconFilename: "{app}\icon.ico"; Name: "{group}\Удалить"; Filename: "{uninstallexe}"; IconFilename: "{app}\etherium.exe"; IconIndex: 1; Цитата:
VCL Styles for Inno Setup умеет править cjstyles? а то править весь установщик неохота |
|
Цитата:
как оформление через cjstyles заменить на VCL Styles? |
Цитата:
Возможно, ты меня не понял. Тот же стиль не останется при замене. В VCL абсолютно другие скины (в стандартной поставке есть небольшой набор из 33 штук), и от cjstyles ничего не останется. Я сказал про VCL изначально, т.к. в нём отредактировать какую-то мелочь намного удобнее и проще, чем в cjstyles. Вот например распакованный скин VCL в ФШ, можно делать почти что-угодно.
И в нём отсутствуют некоторые недостатки, которые есть в cj. |
kotyarko@fb, спасибо но нет
я уже картинок под текущий фон подобрал какое все-таки дрочево этот isskin builder :facepalm: вроде нашел параметр - InfoBK, выгружаю - правлю в инишнике (ибо в самом низзя) - загружаю - штанга! стандартный виндовый скин :facepalm: |
Здравствуйте.
Пытаюсь сделать подписи компонентов при наведении мышки, но никак не пойму как обратиться к компонентам (как они называются у Инно в коде). Наиболее близко к поставленной задаче я подобрался когда у меня при наведении на лист компонентов появляется подпись. А вот как прописать имя компонента DLC\1 или DLC\2. (вместо "with WizardForm.ComponentsList do" как нибудь типа "with WizardForm.ComponentName(DLC\1) do") Код:
|
Цитата:
Нужно обращаться к индексу компонента. |
palsn2000, глянь выше мой скрипт, конкретно CompOnItemMouseMove
|
kotyarko@fb,
Цитата:
|
Цитата:
Скрытый текст
Код:
[setup] |
Dodakaedr, Спасибо. Вырезка с скрипта R.i.m.s.k.y. очень помогла.
Но теперь возникло ещё три вопроса: 1. Можно ли сделать так, чтобы подпись отображалась немного дольше (секунд 10-15); 2. Можно ли сделать так, чтобы подпись (длинная) отображалась не в одну, а в 2-3 строки; 3. Можно ли сделать так, чтобы при переводе курсора с компонента на компонент подпись бы изменялась сразу (в представленном примере подпись отображается для одного компонента и один раз - для смены подписи нужно либо убрать курсор из поля компонентов и вернуть его снова, либо щелкнуть на компоненте левой или правой кнопкой мыши). |
Народ! Помогите пожалуйста вшить музыку с кнопочкой (play/stop) в скрипт: http://rghost.ru/7RSpPRxQh
|
Цитата:
|
Цитата:
Цитата:
Код:
ShowHint := True; |
подскажите возможность решения вопроса
есть файл настроек, в нем несколько управляющих функций с опцией вкл/выкл надо так если в списке компонентов выбран пункт 1 то копировать файл 1 но не копировать файл 2 и 3 если в списке компонентов выбран пункт 2 то копировать файл 2 но не копировать файл 1 и 3 если в списке компонентов выбран пункт 3 то копировать файл 3 но не копировать файл 1 и 2 и т.д. 1,2,3 это три варианта одного и тот же файл только с разными настройками |
svs23, три разных файла
в секции Files использовать Components |
не правильно сформулировал вопрос
надо так если в списке компонентов выбран пункт 1 то копировать файл 1 если в списке компонентов выбран пункт 2 то копировать файл 2 если в списке компонентов выбран пункт 3 то копировать файл 3 если в списке компонентов выбран пункт 1 и 2 то копировать файл 4 но не копировать файл 1 и 2 если в списке компонентов выбран пункт 2 и 3 то копировать файл 5 но не копировать файл 2 и 3 если в списке компонентов выбран пункт 1 и 3 то копировать файл 6 но не копировать файл 1 и 3 если в списке компонентов выбран пункт 1 и 2 и 3 то копировать файл 7 но не копировать файл 1 и 2 и 3 и т.д. |
svs23,
[Files] Components: punkt1 and not punkt2 and not punkt3; Source: 1\file1... Components: punkt2 and not punkt1 and not punkt3; Source: 2\file2... Components: punkt3 and not punkt2 and not punkt1; Source: 3\file3... Components: punkt1 and punkt2; Source: 4\file4... Components: punkt2 and punkt3; Source: 5\file5... дальше по аналогии |
Цитата:
Код:
[Components] |
svs23 конфа в инишнике?
|
Цитата:
Скрытый текст
Код:
[setup] |
Цитата:
огромное СПС kotyarko@fb, R.i.m.s.k.y., Dodakaedr, спасибо всем |
подскажите правильно сделал?
Код:
[Files] |
svs23, смотря чего хочешь сделать
|
в {tmp} скопировать папку XVMSymbol_11.1 с содержимым fontinst.exe, fontinst.inf, XVMSymbol_11.1.ttf
fontinst.inf Код:
[fonts] |
svs23, можно
а можно использовать средства инно [Files] Source: "XVMSymbol_11.1.ttf"; DestDir: "{fonts}"; FontInstall: "XVMSymbol_11.1"; Flags: onlyifdoesntexist uninsneveruninstall |
нашел это пост и делал по нему....
http://forum.oszone.net/post-660231-2.html Цитата:
|
Цитата:
|
а как скрыть размер файла в окне выбора компонентов?
|
svs23,
я так делаю [Files] check: True_function; Source: "XVMSymbol_11.1.ttf"; DestDir: "{fonts}"; FontInstall: "XVMSymbol_11.1"; Flags: onlyifdoesntexist uninsneveruninstall [Code] function True_function(): Boolean; begin Result := True; end; Цитата:
[Setup] ChangesAssociations=true ChangesEnvironment=true это заставит инно передернуть винду на изменившиеся связи и регистрации файлов |
а где можно найти инфу как сделать запоминание выбранных ранее элементов в установщике при повторных установках
|
svs23, я делаю сам: в реестр пишу несколько строковых параметров и потом уже анализирую
а вообще в секции реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\твойID есть четыре строковых параметра: - Inno Setup: Deselected Components - Inno Setup: Deselected Tasks - Inno Setup: Selected Components - Inno Setup: Selected Tasks из названия ясно что за что отвечает |
Цитата:
|
Цитата:
|
|
Цитата:
подскажите где он ВКЛ/ВЫКЛ |
|
в чем может быть косяк? на одном компе (7) справка ISetup.chm открывается без проблем, а на другом (7) только оглавление, а окне с инфой пусто!
Цитата:
|
Цитата:
Цитата:
|
Цитата:
вот еще вопрос: у одних "главных компонентов" в окне выбора компонентов у меня есть размер в МБ а у других нет!? где скрывается этот "подводный камень" или как скрыть у всех "главных компонентов" размер? |
svs23, ванги на заработках в вашингтонске
|
Цитата:
|
svs23, это был намек "скрипт покажи"
|
Цитата:
|
вот список компонентов
Скрытый текст
Код:
[Components] |
svs23, с отображает размер, а - не отображает? кмк это багофича инно, из-за вложенных логических проверок вида Components: c\m\b and c\m\c and not c\m\a; его переколбашивает и инно не может подсчитать размер
|
|
svs23, положи полностью папку
|
Цитата:
Код:
Name: a\a; Description: "Потапыч (quests_extended)"; |
svs23, не вижу в секции Files чистого Components: a\a и Components: a\с
есть на подкомпоненты нет привязанных файлов - нет размера |
Цитата:
Name: a\d; Description: "Винтик (repair_extended)"; нет привязки, а размер в окне компонентов есть |
svs23, ну я хз
|
блин увидел что размер появляется при выборе компонентов...
раньше не замечал, т.к. они у меня были всегда выбраны Цитата:
спс |
Цитата:
|
Как сохранить бэкап ключа реестра в реестре?
|
Как сделать кликабельный логотип в PNG со ссылкой на сайт?
|
Возможно силами Inno реализовать такое?
есть 10 файлов, после установки 9ого требуется перезагрузка и затем продолжение установки 10ого соответственно после установки 9ого должно выйти окно с сообщением "Сейчас будет произведена перезагрузка. Затем установка программы продолжится." и две кнопки "Перезагрузка" и "Отмена" естественно первая кнопка произведёт перезагрузку, а вторая отменит перезагрузку, но во втором случае должно выйти сообщение "Вы отменили перезагрузку. Программа не будет установлена полностью" |
Как в зависимости от ОС показывать\скрывать элемент? В данном случаи чекбокс:
Скрытый текст
Код:
[Setup] Задача: не показывать чекбокс если оперативная система XP. |
Цитата:
Код:
var |
Как скрыть окошко в конце деинсталляции: "UninstalledAll=Программа %1 была полностью удалена с вашего компьютера."?
И ещё: вот так вот удаляется папка "DelTree(ExpandConstant('{localappdata}\Temp\CacheProgram'), True, True, True);" а так нет "DelTree(ExpandConstant('{tmp}\CacheProgram'), True, True, True);". Почему не понятно! |
Цитата:
Скрытый текст
Код:
[Setup] Цитата:
Цитата:
|
В системе имеется файл "Config.ini" с таким содержимым:
[General] Language=Russian Как мне в эту секцию дописать: Key=123 и сохранить файл в таком виде: [General] Language=Russian Key=123 Пробовал так, но результат не тот: if FileExists(ExpandConstant('{win}\Config.ini')) then SetIniString('Gereral', 'Key', '123', ExpandConstant('{win}\Config.ini')); Получается: [General] Language=Russian [General] Key=123 Помогите. |
Цитата:
|
Исправил, но всё равно создаёт вторую такую же секцию. Я где то раньше видел пример, теперь не могу найти.
|
Цитата:
Файл Config.ini
Положите файл Config.ini радом с исталлом
Цитата:
Инсталл
Код:
[Setup] |
Попробовал. Создал новый другой файл .ini всё сработало, а у того файла видать особенность такая!
Добавил другие параметры, он их удалил сам. Короче файл шифрованный. |
Цитата:
|
Вложений: 1
Я так думаю он к программе привязан, с реестром тоже самое.
Вот: |
AlekseyPopovv, а так попробуй
Код:
var |
vint56, s0 для чего? Он вроде не используется...
|
Dodakaedr, я правил свой пример не все убрал
|
Так заработало, только всё что там было перезаписалось. Надо как то дописать, там всего одна секция, других нет. Нужно просто в конце файла дописать Language=Russian
Вместо False ставим True и всё дописывает! Ура! |
Dodakaedr, vint56, спасибо за помощь, с другими файлами всё работает.
|
AlekseyPopovv, Леш ну вот зачем флудить? Тебе несколько человек старались помочь. Неужели так сложно нажать на Полезное сообщение?
|
dracosha, Я редактировал своё сообщение, которое уже было не актуальным. А теперь по делу.
Я создал новую страницу "CreateCustomPage", как сделать что бы она отображалась только при выборе "Portable" версии? |
Цитата:
Код:
... |
kotyarko@fb, То есть где предоставляется выбор Portable-версии?
Эти функции выше function InstallerCheck: Boolean; begin Result := Installer.Checked; end; function PortableCheck: Boolean; begin Result := Portable.Checked; end; Как мне быть? Понял, да эта страница после выбора портабле... |
Цитата:
|
kotyarko@fb, Понял, да эта страница после выбора портабле и инсталер. Скрипт собирается, но инсталлятор выдаёт ошибку и не запускается.
|
Цитата:
|
kotyarko@fb, На одной из страниц установщика. Щас попробую через CurPageChanged. Кто мне про неё говорил, но тогда я не понял этого.
kotyarko@fb, Не могу допетрить и всё... |
Цитата:
Код:
[Setup] |
function ShouldSkipPage(PageID: Integer): Boolean;
begin if (PageID = AkkPage.id) then Result := not portbtn.Checked; end; В этом вся проблема была, этого не хватало. Я создал TRichEditViewer. Как к нему прикрутить файл .rtf? |
Цитата:
Скрытый текст
Код:
[Setup] |
AlekseyPopovv,
Скрытый текст
Код:
[Setup] Это на стандартной инновской странице InfoBefore. И с выбором языка. |
У меня на странице 2 "CheckBox'a". Первый - копирует файл в папку, второй - этот файл запускает. По умолчанию оба "Checked:=True;". Как сделать так, что бы если галочку снять с первого, второй был не активен?
Код:
NewDel := TNewGroupBox.Create(WizardForm); |
Цитата:
Так:
Код:
Var |
Здравствуйте. Делаю модпак для танков и столкнулся с такой проблемой. В общем прописываю путь из реестра в скрипт мол чтобы определить установлена ли игра или нет, проверить версию патча и т.д но он не может найти игру. В чем проблема? Вот часть скрипта и скрин. Сразу говорю что использовал исходник от какого то мода для сталкера где была вбита проверка на игру и версию патча.
PHP код:
|
NewMix, а что, пользователю не предоставляется возможность вручную выбрать папку с игрой? - Это неправильно. Бывают ситуации, когда в реестре нет следов от игры, а она есть.
Цитата:
|
Цитата:
|
|
Цитата:
|
Цитата:
|
NewMix, а что за сборка такая inno setup plus? Гугл тоже не в курсе про такую сборку :)
Рекомендую установить полную версию сборки InnoSetup Ultra |
dracosha, а автору можно отписать? а то вместо инно ультра качается какая-то заглушка
|
R.i.m.s.k.y. отписал.
Залил полную версию InnoUltra на drive.google.com и ссылку выше временно изменил. |
А такой еще вопрос, как изменить размер инсталятора?
|
Теперь сделал и вроде все правильно но один фиг вылетает теперь другая ошибка. Работаю на расширенной версии.
|
Цитата:
|
Цитата:
p.s я новичок и извиняюсь если задаю глупые вопросы |
Все нашел где прозрачность изменять. Данная строка отвечает за прозрачность
PHP код:
|
|
Почему не переносит файл?
[code] procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); begin if CurUninstallStep = usPostUninstall then begin FileCopy(ExpandConstant('{app}\{#MyAppName}\backup\paths.xml'), ExpandConstant('{app}\paths.xml'),false); DelTree(ExpandConstant('{app}\{#MyAppName}'), True, True, True); ForceDirectories(ExpandConstant('{app}\res_mods\{#Patch}')); end; end; |
Цитата:
Код:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); |
Цитата:
|
Цитата:
Код:
[Setup] |
Цитата:
|
возможно сделать несколько страниц выбора компонентов? при этом с сохранением Components: в [Files], т.е. без Check: как в этом примере
Скрытый текст
[code][Setup]
AppName=Моя программа AppVersion=1.5 DefaultDirName={pf}\Моя программа DirExistsWarning=no AppendDefaultDirName=no [CustomMessages] CompName1=Компонент 1 CompName2=Компонент 2 CompSubtitlesLng=Язык субтитров CompVoiceLng=Язык озвучки CompRussian=Русский CompEnglish=Английский [Components] Name: comp1; Description: "{cm:CompName1}"; Name: comp2; Description: "{cm:CompName2}"; Name: comp3; Description: "{cm:CompName1}"; Name: comp4; Description: "{cm:CompName2}"; Name: comp5; Description: "{cm:CompName1}"; Name: comp6; Description: "{cm:CompName2}"; [Files] //===========================ПЕРВАЯ СТРАНИЦА ПОСЛЕ КОМПОНЕНТОВ================================\\ Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "TextRussian.isl"; Check: IsComponentsForm1(1) Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "TextEnglish.isl"; Check: IsComponentsForm1(2) Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "VoiceRussian.isl"; Check: IsComponentsForm1(4) Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "VoiceEnglish.isl"; Check: IsComponentsForm1(5) //===========================ВТОРАЯ СТРАНИЦА ПОСЛЕ КОМПОНЕНТОВ================================\\ Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "TextRussian.isl"; Check: IsComponentsForm2(1) Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "TextEnglish.isl"; Check: IsComponentsForm2(2) Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "VoiceRussian.isl"; Check: IsComponentsForm2(4) Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "VoiceEnglish.isl"; Check: IsComponentsForm2(5) //===========================ТРЕТЬЯ СТРАНИЦА ПОСЛЕ КОМПОНЕНТОВ================================\\ Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "TextRussian.isl"; Check: IsComponentsForm3(1) Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "TextEnglish.isl"; Check: IsComponentsForm3(2) Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "VoiceRussian.isl"; Check: IsComponentsForm3(4) Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "VoiceEnglish.isl"; Check: IsComponentsForm3(5) Код:
var это вариант для меня сложноват... |
Подскажите пожалуйста, как в FreeArc правильно прописать вот такой алгоритм?
arc.exe a -ep1 -dses --dirs -s; -lc- -di -i2 -r -mmsc:f:raw=1:bmf=9s:ddsraw=1:bmp=1:mp3=2:lzma,bt4,fb128,mc10000,lc8+precomp+srep:l128+lzma:a1:mfbt4: d200m:fb128:mc100:lc8 |
Цитата:
|
Цитата:
|
вопрос: есть стандартная форма компонентов wpSelectComponents и костомная ComponentsPage1
проверка на выбор хотя бы одного компонента Код:
if CurPageID = ComponentsPage1.ID then помогите, плиз... |
Здравствуйте!
Ситуация: нужно допилить чужую инсталку. Несколько дней поисков готовых решений (или требующих минимальных изменений) - безрезультатны Нет опыта, поэтому обращаюсь за помощью задачи 3: 1) добавить в список выбора языков - русский язык http://forum.oszone.net/attachment.p...1&d=1429261858 Добавила ShowLanguageDialog, добавила в [Languages] язык, в списке - не отображается :( UPD. пока писала сообщение, нашла решение этой проблемы (метод резиновой уточки detected ;) ) [Setup] ShowUndisplayableLanguages=yes //корректно не отображается, но думаю, это можно полечить локальными настройками системы 2) сделать зависимость инсталяции компонентов (MS SQL Server 2008 или 2012) от версии системы (если Windows 5, 6 в первом случае и >=7 - во втором) NB. "Зависимость иннсталяции" для меня значит, что будет только один возможный RadioButton будет активный http://forum.oszone.net/attachment.p...1&d=1429261858 Нашла такой код Код:
3) При выборе уже существующего на компьютере пользователя MS SQL Server необходим список этих самых серверов. Но чесно говоря этот вопрос еще не гуглила. Если кто подскажет где искать/ что делать - буду благодарна :) http://forum.oszone.net/attachment.p...1&d=1429261858 весь iss Код:
[Setup] Благодарю! |
Здравствуйте! Возник такой вопрос. Есть разные степени сжатия при создании установщика. А нельзя ли сделать так, чтоб установщик получался заданного размера. Например, компилирую приложение, степень сжатия lzma2/ultra, размер получается 42,1 Мб. А мне нужно, чтоб размер приложения получился 41,5 Мб? Может есть какой то код, в котором можно указывать нужный размер? Спасибо :)
|
Возник такой вопрос. Как мне сделать чтобы при выборе компонентов был значек проигрывания звукого файла как на скрине и как добавить загрузку некоторых файлов из интернета уже в ту категорию которую указали при начале установки?
|
Цитата:
http://forum.oszone.net/post-2267694-1626.html |
svs23, Спасибо позже попробую. А такой вот еще вопрос. Сколько хочу декомпилировать ехе-шники ничего не получается. Выдает постоянно ошибку, как ее исправить? p.s пользуюсь вроде как последними версиями по которые должны открывать ехе-шники созданные в inno setup 5.5
|
Цитата:
|
Вложений: 1
Цитата:
|
Вложений: 2
Всем доброго времени суток!
Возникла следующая проблема. При установке создается .url файл (способ стандартный :) ) Код:
[Icons] Подскажите пожалуйста, откуда может взяться эта проблема и как ее решить. |
Вложений: 1
Цитата:
Код:
[Setup] |
Цитата:
|
Dodakaedr, там неспроста строка, идущая в filename не пишется хардкодом, а возвращается функцией, ибо порт может отличаться. в любом случае, это вряд ли влияет. судя по тому, что, если открыть этот файлик как текст, ссылка там правильная, напрашивается мысль, что проблема не с ярлыком, а с кэшем браузера или системы.
|
как сделать проверку на выбор хотя бы одно компонента для кастомного листа?
Скрытый текст
Код:
if CurPageID = ComponentsPage1.ID then |
Цитата:
Код:
function NextButtonClick(CurPageID: Integer): Boolean; |
ekspoint, спс
|
Помогите прицепить новый тип установки к новому компонент листу
Код:
[Setup] |
Цитата:
а это что такое? |
Цитата:
|
Цитата:
Код:
DeleteFile(ExpandConstant( |
а такой вопрос, после того как файл скачался и начал распаковываться почему не появляется cmd со списком распаковываемых компонентов? Ибо пользователь не сразу может понять что будет еще распаковка звуков.
|
Цитата:
|
Цитата:
|
Цитата:
|
Как сделать запоминание установленных компонентов из TNewCheckListBox?
|
Немножко вернулся к прошлым идеям, из за потери сорцов - переписал на Delphi, возможно если будут желающие перепишу на Си, там не сложно.
Из ожидаемых фич - пакетная многопоточная обработка (запуск) по маске/списку. Надеюсь что терпения хватит и я скоро выложу ISWin7. Исходник ISExec на github |
VoLT, а саму dll-ку где можно взять?
|
опять я тут со своими чек боксами. не могу "сделать" такое = при отмене создания папки в меню пуск, (т.е когда нажат чек бокс "не создавать папку") кнопка групп браузер бутон не активна, примеров насобирал штук 10. ни один не могу "воткнуть"
в кратце скрипт Скрытый текст
procedure WizardFormBtnClick(hBtn: HWND); var Btn: TButton; begin case hBtn of GroupBrowseButton: Btn := WizardForm.GroupBrowseButton; end; end; Btn.OnClick(Btn); BtnRefresh(hBtn); end; procedure GroupEditOnChange(Sender: TObject); begin GroupEditLabel.Caption := MinimizePathName(WizardForm.GroupEdit.Text, GroupEditLabel.Font, GroupEditLabel.Width); end; function NoStartIcon: boolean; begin Result := not BtnGetChecked(NoStartIconCheckBox); end; procedure CheckBoxesClick(Sender: TObject); begin case Sender of NoStartIconLabel: BtnSetChecked(NoStartIconCheckBox, not BtnGetChecked(NoStartIconCheckBox)); end; end; procedure CreateButtons; begin GroupBrowseButton := BtnCreate(WizardForm.Handle, ScaleX(494), ScaleY(132), ScaleX(94), ScaleY(26), 'DirBrowseBtn.png', 0, False); BtnSetEvent(GroupBrowseButton, BtnClickEventID, WrapBtnCallback(@WizardFormBtnClick, 1)); NoStartIconCheckBox := BtnCreate(WizardForm.Handle, ScaleX(25), ScaleY(235), ScaleX(18), ScaleY(18), 'CheckBox.png', 0, True); end; |
Dodakaedr, там пока мало что реализованно, но если очень надо вот - ISExec.dll
|
VoLT, что за ошибка? Библа вообще рабочая?
Скрытый текст
Код:
[Setup] |
Dodakaedr, ой спасибо за тест - разница в объявлении процедур
библиотека рабочая - а вот скрипт не поправлен - печаль ... Правильно - так: Код:
type |
Здравствуйте. Нужна помощь по работе с внешними dll'ками.
При установке нужно получать информацию о подключённом HID устройстве. Для этого решил использовать библиотеку hidapi.dll, а из неё нужна функция hid_enumerate(int vid, int pid). Функция возвращает указатель на структуру, содержащую информацию о HID устройствах. Как я понял в inno script указателей нет, поэтому вопрос, можно ли использовать эту функцию? И если да, то какой указывать тип результата и каким образом его вообще получать? Код:
function GetInfo(vid: integer; pid: integer): integer; |
PleaseTryAgain, напишите на дельфи или на си длл - в ней все функции
|
VoLT, библиотека на С написана
|
PleaseTryAgain, я про обертку ...
а если использовать на чистую то вы правильно сделали что использовали integer (но для 64 битных длл нужно расширить до 8 знаков) странно что юзаете stdcall вроде dll на си все юзают Cdecl |
VoLT, благодарю, с заменой stdcall на cdecl программа заработала Х)
Код:
res := GetInfo(vid, pid); |
PleaseTryAgain, почти никак) как вы и сказали в инно нет указателей
|
VoLT, понятно)
в любом случае спасибо за помощь |
подскажите как скрыть стандартные заголовки?
Код:
-Информация |
Цитата:
Цитата:
Цитата:
Скрытый текст
Код:
type Теперь указатель надо разименовать. Т.к. в движке оператора ^ нет, вместо этого можно использовать одну из WinAPI функций для операций с памятью, типа RtlMoveMemory или memcpy. Возьмем первую, для вашего случая объявим её так: Скрытый текст
Код:
function RtlMoveMemoryHDI(var Destination: hid_device_info; const Source: Longint; len: Integer): Integer; external 'RtlMoveMemory@kernel32.dll stdcall'; RtlMoveMemory копирует блок памяти размером, указанном в параметре len, начиная с адреса, указанном в параметре-указателе Source, по адресу, указанном в параметре-указателе Destination. Только вместо Destination у нас не переменная-указатель, а ссылочная переменная (наличие ключевого слова var). Это означает, что в RtlMoveMemory первым параметром будет передана не копия переменной типа hid_device_info, которая явно не 4 байта совсем, а лишь ссылка (тот же указатель с некоторыми отличиями) на нее. После отработки функции в переменной типа hid_device_info будет разименованая копия из Source. Осталось обработать полученную переменную как угодно, не забываем, что в поле next будет указатель на следующую структуру hid_device_info, обрабатываем, пока next не будет равен 0: Скрытый текст
Код:
type |
El Sanchez, огромное спасибо за развёрнутый ответ, буду разбираться
|
Как сделать фон для компонент листа?
|
Цитата:
Скрытый текст
Код:
[Files] Цитата:
Скрытый текст
Код:
[setup] |
Очень нужна ваша помощь. С помощью программы Inno Setup и советов вашего форума сделал простенький репак игры Готика 3 с накатанными на неё Коммьюнити патчем, Квест пакетом и Контент модом (давно об этом мечтал, но не хватало знаний). Инсталятор работает прекрасно - игра устанавливается, запускается и работает стабильно (наиграл уже больше пятидесяти часов). Однако, не всё так хорошо как хотелось: при попытке удалить игру посредством встроенного деинсталятора выскакивает ошибка о том, что формат деинсталяционного файла расположенного по адресу С:\куда установлена игра\unins000.dat не может быть обнаружен (это мой вольный перевод с немецкого :) Пакет квестов и контент мод немецкого производства, пропатченные российскими умельцами до русификации.) Ясно одно: я что-то упустил при создании скрипта, а вот что? мне без помощи никогда не разобраться.
Подскажите по адресу ли я обратился? Если нет, то направте в нужную сторону. Если да, то черкните, какая нужна ещё информация. |
бювет, без скрипта сложновато что-то посоветовать. И как вы запускаете деинсталлятор? От куда?
|
Запуск деинсталятора стандартный (win7), как и для всех компьютерных игр: пуск\все программы\Gothic3\Деинсталировать Gothic3. Пробовал так же удалить игру напрямую из папки с установленной игрой жамкая файл unins000.exe - та же ошибка.
Это скрипт: Скрытый текст
[Setup] AppId={{683EA565-2AB3-4BB5-A2C6-FE80AD463975} AppName=GothicIII AppVersion=1.75.14 AppVerName=GothicIII 1.75.14 AppPublisher=Piranha Bytes AppPublisherURL=www.gothic3.com AppSupportURL=www.gothic3.com AppUpdatesURL=www.gothic3.com DefaultDirName={pf}\GothicIII DefaultGroupName=GothicIII AllowNoIcons=yes OutputDir=C:\Users\retur\Desktop\готика OutputBaseFilename=setup SetupIconFile=C:\!закачки!\Иконки\LDNetwork.ico Compression=lzma SolidCompression=yes WizardImageFile=11.bmp DiskSpanning=true DiskSliceSize=1566000000 [Languages] Name: russian; MessagesFile: compiler:Languages\Russian.isl Name: ukrainian; MessagesFile: compiler:Languages\Ukrainian.isl [Tasks] Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked; OnlyBelowVersion: 0,6.1 [Files] Source: C:\Program Files (x86)\GothicIII\Gothic3.exe; DestDir: {app}; Flags: ignoreversion Source: C:\Program Files (x86)\GothicIII\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs [Icons] Name: {group}\GothicIII; Filename: {app}\Gothic3.exe Name: {group}\{cm:ProgramOnTheWeb,GothicIII}; Filename: www.gothic3.com Name: {group}\{cm:UninstallProgram,GothicIII}; Filename: {uninstallexe} Name: {commondesktop}\GothicIII; Filename: {app}\Gothic3.exe; Tasks: desktopicon Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\GothicIII; Filename: {app}\Gothic3.exe; Tasks: quicklaunchicon [Run] Filename: {app}\Gothic3.exe; Description: {cm:LaunchProgram,GothicIII}; Flags: nowait postinstall skipifsilent [Registry] Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: Inno Setup: Setup Version; ValueData: 5.5.5 (u) Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: Inno Setup: App Path; ValueData: C:\Program Files (x86)\GothicIII Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: InstallLocation; ValueData: C:\Program Files (x86)\GothicIII\ Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: Inno Setup: Icon Group; ValueData: GothicIII Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: Inno Setup: User; ValueData: retur Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: Inno Setup: Selected Tasks; ValueData: desktopicon Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: Inno Setup: Deselected Tasks; ValueData: Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: Inno Setup: Language; ValueData: russian Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: DisplayName; ValueData: GothicIII 1.75.14 + Update Pack v1.02 (сборка от 09.01.2015) Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: UninstallString; ValueData: "\""C:\Program Files (x86)\GothicIII\unins000.exe\""" Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: QuietUninstallString; ValueData: "\""C:\Program Files (x86)\GothicIII\unins000.exe\"" /SILENT" Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: DisplayVersion; ValueData: 1.75.14 + Update Pack v1.02 (сборка от 09.01.2015) Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: Publisher; ValueData: Piranha Bytes & Kompany Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: URLInfoAbout; ValueData: http://www.nnm-club.me Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: HelpLink; ValueData: http://www.nnm-club.me Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: URLUpdateInfo; ValueData: http://www.nnm-club.me Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: dword; ValueName: NoModify; ValueData: $00000001 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: dword; ValueName: NoRepair; ValueData: $00000001 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: string; ValueName: InstallDate; ValueData: 20150423 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: dword; ValueName: MajorVersion; ValueData: $00000001 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: dword; ValueName: MinorVersion; ValueData: $0000004b Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{2773C4BD-B765-408E-B6BD-83FB4CA1FCF4}_is1; ValueType: dword; ValueName: EstimatedSize; ValueData: $004be622 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Setup Version; ValueData: 5.5.5 (u) Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: App Path; ValueData: C:\Program Files (x86)\GothicIII Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Icon Group; ValueData: GothicIII Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: User; ValueData: retur Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Selected Tasks; ValueData: desktopicon Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Deselected Tasks; ValueData: Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Language; ValueData: russian Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: DisplayName; ValueData: GothicIII 1.75.14 + Update Pack v1.02 (сборка от 09.01.2015) Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: DisplayVersion; ValueData: 1.75.14 + Update Pack v1.02 (сборка от 09.01.2015) Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Publisher; ValueData: Piranha Bytes & Kompany Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: URLInfoAbout; ValueData: http://www.nnm-club.me Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: HelpLink; ValueData: http://www.nnm-club.me Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: URLUpdateInfo; ValueData: http://www.nnm-club.me Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: NoModify; ValueData: $00000001 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: NoRepair; ValueData: $00000001 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: InstallDate; ValueData: 20150422 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: MajorVersion; ValueData: $00000001 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: MinorVersion; ValueData: $0000004b Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: EstimatedSize; ValueData: $004be60d Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: InstallLocation; ValueData: C:\Program Files (x86)\GothicIII\ Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: UninstallString; ValueData: "\\""C:\Program Files (x86)\GothicIII\unins000.exe\\""" Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: QuietUninstallString; ValueData: "\\""C:\Program Files (x86)\GothicIII\unins000.exe\\"" /SILENT" Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Setup Version; ValueData: 5.5.5 (u) Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: App Path; ValueData: C:\Program Files (x86)\GothicIII Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Icon Group; ValueData: GothicIII Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: User; ValueData: retur Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Selected Tasks; ValueData: desktopicon Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Deselected Tasks; ValueData: Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Language; ValueData: russian Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: DisplayName; ValueData: GothicIII 1.75.14 + Update Pack v1.02 (сборка от 09.01.2015) Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: DisplayVersion; ValueData: 1.75.14 + Update Pack v1.02 (сборка от 09.01.2015) Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Publisher; ValueData: Piranha Bytes & Kompany Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: URLInfoAbout; ValueData: http://www.nnm-club.me Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: HelpLink; ValueData: http://www.nnm-club.me Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: URLUpdateInfo; ValueData: http://www.nnm-club.me Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: NoModify; ValueData: $00000001 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: NoRepair; ValueData: $00000001 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: InstallDate; ValueData: 20150422 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: MajorVersion; ValueData: $00000001 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: MinorVersion; ValueData: $0000004b Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: EstimatedSize; ValueData: $004be60d Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: InstallLocation; ValueData: C:\Program Files (x86)\GothicIII\ Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: UninstallString; ValueData: "\\""C:\Program Files (x86)\GothicIII\unins000.exe\\""" Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: QuietUninstallString; ValueData: "\\""C:\Program Files (x86)\GothicIII\unins000.exe\\"" /SILENT" Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Setup Version; ValueData: 5.5.5 (u) Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: App Path; ValueData: C:\Program Files (x86)\GothicIII Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Icon Group; ValueData: GothicIII Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: User; ValueData: retur Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Selected Tasks; ValueData: desktopicon Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Deselected Tasks; ValueData: Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Inno Setup: Language; ValueData: russian Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: DisplayName; ValueData: GothicIII 1.75.14 + Update Pack v1.02 (сборка от 09.01.2015) Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: DisplayVersion; ValueData: 1.75.14 + Update Pack v1.02 (сборка от 09.01.2015) Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: Publisher; ValueData: Piranha Bytes & Kompany Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: URLInfoAbout; ValueData: http://www.nnm-club.me Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: HelpLink; ValueData: http://www.nnm-club.me Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: URLUpdateInfo; ValueData: http://www.nnm-club.me Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: NoModify; ValueData: $00000001 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: NoRepair; ValueData: $00000001 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: InstallDate; ValueData: 20150422 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: MajorVersion; ValueData: $00000001 Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: MinorVersion; ValueData: $0000004b Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: dword; ValueName: EstimatedSize; ValueData: $004be60d Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: InstallLocation; ValueData: C:\Program Files (x86)\GothicIII\ Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: UninstallString; ValueData: "\\""C:\Program Files (x86)\GothicIII\unins000.exe\\""" Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{C12E35E1-6E9C-4106-93B1-511F895431E1}_is1; ValueType: string; ValueName: QuietUninstallString; ValueData: "\\""C:\Program Files (x86)\GothicIII\unins000.exe\\"" /SILENT" Мои изменения: WizardImageFile (вставил картинку в инсталятор), DiskSpanning, DiskSliceSize (вставил нужные параметры) и вставил ключи реестра - всё. Несколько слов по поводу ключей реестра: что бы найти их и с помощью ISTool вставить в скрипт я как настоящий ламер запустил программу Uninstall Tool, выбрал в ней Готику 3 и нажал "принудительное удаление". Через несколько секунд программа показала все папки игры и все ключи реестра (26 элементов) которые я прилежно экспортировал в отдельную папку, а за тем через ISTool перенёс в скрипт. Там наверное много лишнего, но я посчитал, что лучше перебдеть чем недобдеть :) А если честно, то я не знаю что лишнее, а что нужное. |
бювет, Это лишнее:
Скрытый текст
Код:
[Registry] бювет, Всё что касается раздела Uninstall, вам включать не нужно: т.к инсталлятор и так создаёт в разделе Uninstall, подраздел "{{683EA565-2AB3-4BB5-A2C6-FE80AD463975}_is1": Код:
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{683EA565-2AB3-4BB5-A2C6-FE80AD463975}_is1 Код:
SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{683EA565-2AB3-4BB5-A2C6-FE80AD463975}_is1 Обратите внимание на две разницы: Первая: Информация о деинсталляции произвольная, т.е создание производится самим инсталлятором. Код:
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XXX Код:
SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\XXX Код:
SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\XXX Код:
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XXX Код:
SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\XXX |
Nordek, спасибо за ответ.
Я так понял, что всё что я "натягал" из реестра в сценарий скрипту и даром не нунжно? Удалил всё, что шло ниже [Registry]. Сделал инсталлятор и установил с него игру. При попытке удаления выскакивает та же ошибка. |
Цитата:
Например:
У вас имеются:
Код:
Software\MPC-HC Код:
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MPC-HC_is1 Код:
Software\MPC-HC В Код:
Software\Microsoft\Windows\CurrentVersion\Uninstall\MPC-HC_is1 Т.е для деинсталляции, достаточно такой информации: Код:
Windows Registry Editor Version 5.00 Код:
[Setup] Код:
[Registry] В некотором случае, добавление может стать ошибочной или не желательной (например в случае как 32-х и 64-х битных системах, одна из информации может являться неверной информацией (мусором)). Цитата:
Код:
[Files] Вы компилируете напрямую с "C:\Program Files (x86)\GothicIII" В инсталляторе прописано "C:\Program Files (x86)\GothicIII\*" + Обрабатовать подкаталоги + Создавать все подкаталоги: Это значит, что в инсталлятор входит всё содержимое. Вы не учли одно "но", то что в инсталлятор не должны входить файлы "unins000.dat" и "unins000.exe". Чтоб не путаться, скопируйте содержимое: "C:\Program Files (x86)\GothicIII" в другое удобное место. Например:
Зайдите в "C:\Program Files (x86)" и скопируйте от туда папку "GothicIII" на локальный диск "D:\" т.е чтоб получилось "D:\GothicIII"
Затем зайдите в "D:\GothicIII" и в папке "GothicIII" удалите "unins000.dat" и "unins000.exe". В скрипте, в секции [Files] замените: Код:
Source: C:\Program Files (x86)\GothicIII\Gothic3.exe; DestDir: {app}; Flags: ignoreversion Код:
Source: D:\GothicIII\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs Строка вида C:\Program Files (x86)\GothicIII\Gothic3.exe вам не нужна, потому-что у вас и так входит всё содержимое каталога. |
Nordek, спасибо огромное! Изумительный Вы человек! Вместо того, что бы просто кинуть пару строк кода ламеру с подсказкой куда их вставить, Вы пошагово разжовываете в чём моя ошибка (как хороший преподаватель), объясняете где я был не прав... О, боженька ты мой! В Вас толерантности на десять человек! Я просто счастлив, что попал на этот форум даже из-за того, что есть возможность пообщаться с такими людьми! Ещё раз огромное спасибо.
|
Здравствуйте, подскажите пожалуйста можно-ли каким-то образом перенести часть названия (текста) задачи на вторую строку.
Допустим (произвольное название) [Tasks] Name: zadacha1; Description: Установить/Обновить Название программы Версия программы (от: число месяц год) Хочу чтобы на странице инсталлятора название задачи выглядело следующим образом: Установить/Обновить Название программы Версия программы (от: число месяц год) Отбивать строку пробелами как-то не серьёзно (каждый раз приходится подбирать заново при наличии/отсутствии прокрутки в задачах или при изменении названия) Есть какой-нибудь способ типа +#13#10+ или что-то типа того? |
Цитата:
Код:
[CustomMessages] |
Всем привет!
Подскажите, пожалуйста, нубу, пример кода (скрипта) на установку доп. компонентов (DirectX, Visual C++) ? :blush: Сойдёт либо тихая установка, либо в конце шла - без разницы. Заранее Большое Спасибо! |
OldGamer, Вот здесь посмотрите Ссылка
еще такое есть Скрытый текст
Код:
[Tasks] |
Добрый день, народ!
Подскажите пожалуйста, Inno Setup юзаю 3-ий день и потому не совсем втыкаю как и что, поэтому прошу помощи. Задача такая - нужен установщик и апдейтер в одном. То есть если приложение не установлено - идет установка, если установлено, то соответственно обновление. Причем при обновлении нужно копировать новый екзе, и после этого запускать второй екзешник, который будет делать обновление скриптов в базе. После всего этого закрывать установщик. Записывать что-то в регистр не обязательно. Как это сделать? Я нашел код сравнивающий версии файлов, впихнул его в раздел Code, но что делать дальше ума не приложу, да к тому же компилятор ругается на строку 47. Код:
; Script generated by the Inno Setup Script Wizard. |
Цитата:
Перед секцией [Setup] (ну или же в любом месте, где вам угодно), прописываете: Код:
#define VersionMS "необходимое_вам_значение" |
Цитата:
Т.к. установка проходит вполне гладко, и пошагово компилятор туда не заходит |
Цитата:
|
спасибо! =)
теперь не подскажете - как все-таки сделать, если программа уже установлена, то обновить ТОЛЬКО лишь екзешник а не все файлы с папки, и запустить второй exe-файл, который будет обновлять БД? |
Цитата:
Код:
[Files] Цитата:
|
привет!
Как сделать зависимость инсталяции компонентов от версии системы (будет один RadioButton будет активный - MS SQL Server 2008 или 2012, или оба - если версия виндовса поддерживает обе программы) ? Win < 6.0 - только 2008 Win >6.1 - только 2012 Win = 6.0 or 6.1 - 2008 и 2012 Благодарю!! :) |
Как в inno сгенерировать случайное число на 10 цифр?
|
я извиняюсь, но почему-то этот код не работает :(
ставлю версию 1.0.0.5 на версию 1.0.0.4 - пишет что новейшая версия уже установлена... Код:
[Setup] |
Help! В конце установки Visual C++ выбивает ошибку :shocked: (при этом компоненты в систему устанавливаются):
http://i58.fastpic.ru/big/2015/0429/...974a13031c.png С чем эта проблема связана? (скину скрипт при необходимости) |
aidynchik, у тебя переменные с версиями обнулены
#define VersionMajor #define VersionMinor #define VersionRevision #define VersionBuild OldGamer, залил на говнохостинг - сиди жди у моря погоды |
R.i.m.s.k.y., заменил ссылку.
|
OldGamer, потому что в скрипте обращаешься к несуществующему элементу
|
Цитата:
Пожалуйста, помогите сделать)) Вот сам скрипт https://yadi.sk/d/0Ds5IKzvgLcnb |
OldGamer, запусти компиляцию и выполнение в инно по F9, и инно опдстветит тебе ошибочную строчку
так я криминала не вижу |
Цитата:
не должна его разложить? что мне вбивать в эти переменные, если устанавливаемая версия 1.0.0.5? #define VersionMajor = 1 #define VersionMinor = 0 #define VersionRevision = 0 #define VersionBuild = 5 так? P.S. ну вроде так работает. Причем со строкой "#expr ParseVersion("MyApp.exe", VersionMajor, VersionMinor, VersionRevision, VersionBuild)" и без нее |
еще вопрос - вот тут посоветовали секцию RUN для запуска второго екзешника, который будет обновлять скрипты БД.
Но дело в том, что запускать его надо, только если это обновление. Если это первичная установка - то ничего делать не надо... Как это реализовать? есть идея - сохранять его в папку tmp и запускать оттуда в секции RUN, но опять же делать это надо не всегда. И потом как затем найти папку TMP в секции RUn? |
Цитата:
|
Цитата:
Может Visual C++ надо устанавливать отдельно (разными экзешниками) для x86 и x64 ? (у меня в одном .exe устанавливается сразу оба x86 & x64 - https://yadi.sk/d/akr1NmFYgMCso ) --------- Проверил - установка с отдельными (vcredist_x86.exe и vcredist_x64.exe) проходит "на ура!" Ради эксперимента было бы интересно узнать: то, что в одном экзе (по ссылке) - возможно ли выполнить без ошибок? |
OldGamer, нужно выполнить компиляцию по клавише F9, после компиляции установщик запускается в режиме debug, и не закрывая окно компилятора производишь установку, а там где происходит ошибка - компилятор ее отобразит в своем окне. Скриншот в студию :)
|
dracosha,
Спасибо, действительно нашлась ошибка: http://i59.fastpic.ru/big/2015/0430/...efa4400b58.png |
OldGamer, Если нужен отмеченный чекбокс, то не проще в секции [Run] напротив нужного убрать флаг unchecked?
Код:
[Run] |
Спасибо всем за помощь! Всё работает! :rupor:
|
Нужна помощь для создания Setup программой Inno Setup
Всем привет.
Нужна помощь для создания Setup файла с помощью программы Inno Setup, кто умеет обращаться с этой программой, будьте добры, отпишитесь мне в ЛС или в теме, я займу у вас не более 5 минут. |
А выше тема вам чем не понравилась? Скрипты Inno Setup. Помощь и советы [часть 8]
|
Помогите, уже 3 дня голову ломаю…
Как установить скин??? У меня Inno Setup Compiler 5.5.1.ee2(u) [Files] Source: cybertron.cjstyles; DestDir: {tmp}; Flags: dontcopy Source: ISSkin.dll; DestDir: {tmp}; Flags: dontcopy [code] procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external ‘LoadSkin@files:isskin.dll stdcall'; procedure UnloadSkin(); external ‘UnloadSkin@files:isskin.dll stdcall'; function InitializeSetup(): Boolean; begin ExtractTemporaryFile(‘cybertron.cjstyles’); LoadSkin(ExpandConstant(‘{tmp}\cybertron.cjstyles’), »); Result := True; end; procedure DeinitializeSetup(); begin UnloadSkin(); end; Выдает ошибку на строке procedure DeinitializeSetup(); собсна ошибка Duplicate identifier «DEINITIALIZESETUP» сколько не пробЫвал найти дубликат не где не чего подобного не вижу! |
Цитата:
Код:
#define A = (Defined UNICODE) ? "W" : "A" |
Цитата:
Код:
[Components] Скрытый текст
MinVersion: Минимальная версия Windows, для которой вхождение будет обработано OnlyBelowVersion: Противоположно MinVersion. Определяет минимальную версию Windows, для которой вхождение не будет обработано Код:
4.0, - Windows 95 В списке могут попадаться одинаковые значения, например: для Windows Vista: 0,6.0; для Windows Server 2008: 0,6.0 - это не опечатка, 0,6.0 равнозначен как для Windows Vista так для Windows Server 2008. По этому, достаточно один раз выставить значение 0,6.0 - отработает как для Windows Vista так для Windows Server 2008. Значения могут применяться как для MinVersion, так для OnlyBelowVersion. |
Цитата:
|
Nordek, спасибо огромное! На прошлой неделе сделала что-то такое. Не знаю, насколько изящно, но работает :)
Версии Винды и установка MS SQL 2008/ 2012
Код:
begin А есть еще один вопрос: как можно получить список инстанций MS SQL? Даже не знаю, как и что в гугле спрашивать... :( |
Здравствуйте.
Как сделать так, чтобы при установке в файл (который уже есть на диске) добавлялись строчки которые указаны в инсталяторе. |
Цитата:
Код:
[setup] |
Цитата:
Нет. К примеру в пути game/mods/01/ есть файл file.cti. При установке в папку mods/01/ установщик дописывал бы в файл file.cti пару строчек которые указываешь в скрипте. |
Цитата:
|
Цитата:
HTML код:
[item] Код:
[item] и получалось Код:
[item] |
Цитата:
Код:
[setup] |
Цитата:
|
Вложений: 1
Всем здравствуйте и с наступающим праздником ПОБЕДЫ!!! :up:
Сделал для себя перепаковку программы USB Safely Remove, всё получилось хорошо, но остались два вопроса ("косметического плана - уборка за собой") :cool: : 1) При запуске программа создаёт дополнительную ветку в реестре HKLM\SOFTWARE\SafelyRemove. Как прописать её удаление при деинсталяции в скрипте. 2) При запуске программа создаёт лог событий USBSRService (c:\ProgramData\USBSRService\USBSRService.log.txt). Как прописать удаление папки с логом (c:\ProgramData\USBSRService) при деинсталяции в скрипте. Вот мой скрипт. Если есть ещё замечания по скрипту - приму с удовольствием (только учусь) :o |
AlexM22204,
1. [Registry] Root: HKLM; SubKey: SOFTWARE\SafelyRemove; Flags: uninsdeletekey noerror 2.[UninstallDelete] Type: filesandordirs; Name: "{commonappdata}\USBSRService" Цитата:
покажи USBSafelyRemoveSettings.reg, а то может ты там вносишь в х64 секции реестра |
R.i.m.s.k.y.,
Цитата:
А вот ветка в реестре HKLM\SOFTWARE\SafelyRemove не удаляется, хоть тресни, может как по другому. :( Хотя вручную всё удаляется... А также таким батником всё удаляется... Скрытый текст
@Echo Off
Reg Delete "HKLM\SOFTWARE\SafelyRemove" /f Pause Цитата:
Цитата:
Скрытый текст
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\SafelyRemove\Options] ; Спятать иконку, когда нет устройств для остановки "AutoHideIcon"="1" ; Показывать количество отображаемых устройств в трей-иконке "ShowCountOfDevicesInTrayIcon"="1" ; Упрощённое меню "SimpleMenu"="1" |
AlexM22204, попробуй запусти деинсталлятор от админа
|
AlexM22204, это очень плохой тон - отвечать выше
убери noerror и удали еще раз - что напишет покажи и проверь правильность написания Software\SafelyRemove |
Цитата:
|
AlexM22204, хз
либо права на ветку не даны, либо написание (копировать из реестра название разделов - вставлять в скрипт) |
помогите.
в коде где-то косяк. при выборе "неправильной" папки для установки появляется окно с сообщением что выбрана неправильная папка, но после нажатия ок проходит дальше на следующую страницу, хотя должна остаться на странице выбора папки для установки |
Цитата:
Какой смысл всех тех проверок и указаний "Result := False", если в конце функции Result всё равно приравнивается к True? |
kotyarko@fb, не очень силен в этом. спс
Цитата:
если убрать эту строку то все равно переходит на следующую страницу установки даже если выбрана не правильная папка, просто на последней странице не пускает дальше... а мне надо чтобы не пускало дальше страницы wpSelectDir если указана не правильная папка |
svs23, там ещё после каждого прохода "if CurPageID = ComponentsPage1.ID" Result`у присваивался True.
Пробуйте: [ссылка удалена]. з.ы. подправил проверку версии патча. |
Доброго дня!
Подскажите, пожалуйста, как сделать отображение процентов установки? |
Цитата:
|
|
kotyarko@fb, OldGamer, Здравствуйте, можно мне присоединиться к вашей теме отображения процентов установки?
В обновлённом примере благодаря правке El Sanchez-а процент выполнения прогрессбара дописывается к уже имеющемуся тексту, а можно ли процент выполнения связать с каким нибудь TLabel1, поместить этот TLabel1 например на середину прогресс бара и чтобы отображалось от 0 до 100 % в течение установки? |
Еще раз здравствуйте.
Подскажите, как сделать проверку на наличие папки. Например, путь установки такой - C:\MyProgram\ Если в папке MyProgram есть папка Prog - то все отлично, если же её нету, то предупреждение в окошке. |
Цитата:
Код:
Function NextButtonClick(CurPageID: Integer): Boolean; |
Привет всем.
Как сделать, чтобы деинсталятор удалял заранее указанные папки? Например: У меня есть папка res_mods, в не папка mods и папка 0.9.7. Мне нужно чтобы деинсталятор удалил папку mods и очистил папку 0.9.7 |
Цитата:
Код:
[UninstallDelete] |
Nordek, файл удалять по такому же способу?
|
Цитата:
Инфа из справки. По-моему все доходчиво описано
Цитата:
|
Цитата:
Но в общем речь не об этом, а о том, что мои познания в программировании близки к нулю, и сам я не понимаю как (и вообще можно ли) проценты установки связать с дэйблом, а не сообщением. У Вас там используется SetupMessage(msgStatusExtractFiles) Код:
function ProgressBarProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; Может я не совсем правильно объясняю, чего хочу, вот для примера картинка: |
palsn2000, например, так:
Скрытый текст
Код:
function MulDiv(nNumber, nNumerator, nDenominator: Integer): Integer; external 'MulDiv@kernel32.dll stdcall'; |
Цитата:
|
Цитата:
Нужно что то типо этого: Код:
if not FileExists(AddBackslash(WizardForm.DirEdit.Text) + 'Prog.exe') then |
Цитата:
Скрытый текст
Код:
[Setup] Цитата:
Скрытый текст
Код:
function NextButtonClick(CurPageID: Integer): Boolean; |
El Sanchez, можно реализовать этот вопрос? http://forum.oszone.net/post-2502130-555.html
|
Цитата:
Код:
Function InitializeSetup(): Boolean; |
Цитата:
|
Цитата:
Использовала RegGetValueNames. Единственное, если RootKey указать как HKEY_LOCAL_MACHINE - то возвращает пустой список. В общем надо указать HKLM64 Вопрос: а если инстанция SQL 32-разрядная? Код:
|
Цитата:
код
Код:
procedure UzupelniNazweInstancjiSQL; з.ы. вместо HKLM32, вроде, можете использовать просто HKLM. |
kotyarko@fb
Спасибо :) В принципе ведь нужен список всех инстанций? поэтому сделала так (правда еще не тестила): Скрытый текст
Код:
begin |
Цитата:
Цитата:
Скрытый текст
Код:
function NextButtonClick(CurPageID: Integer): Boolean; |
Цитата:
|
Николай_Николаич@vk, попробуйте так
Скрытый текст
Код:
[setup] |
El Sanchez, Dodakaedr, Спасибо, разобрался.
Не подскажите как брать путь установки из реестра. Например: Если в реестре есть только ключ - SOFTWARE\1 Dir - C:\1 То берем C:\1 А если в реестре есть SOFTWARE\2 Dir - C:\2 То путь установки будет из 2-го. если имеется два ключа, путь бы брался из второго - C:\2 |
Цитата:
Скрытый текст
Код:
[setup] |
Доброго времени суток!
Помогите пожалуйста сделать панельку (не логотип), как на втором скрине: Скрины
Панель представлена в виде PNG-картинки. Открывается с нажатием на кнопку. В активном режиме панели деактивируются CancelButton и NextButton. MusicButton и VolPB не интересуют. |
Здравствуйте.
Подскажите, как такое реализовать. Путь установки C:\Prog в папке Prog есть папка Prog1 И в этой папке куча папок. Так вот, как сделать чтобы один файл file.hof раскидать по папкам которые находятся в папке Prog1 |
Цитата:
Код:
FileCopy(ExpandConstant('{app}\Prog\Prog1\file.hof'), ExpandConstant('{app}\Prog\Prog1\Prog1_1\file.hof'),false); |
ekspoint, для индусов такой вариант в самый раз подходит (это я про тот случай, если вложенных папок, например, 30). И не факт, что имеющиеся папки имеют не уникальные имена.
Цитата:
Код:
var |
Цитата:
Скрытый текст
Код:
[setup] |
Цитата:
|
Цитата:
|
Цитата:
а то кроме как просто копировать, ничего не получается. |
Цитата:
Код:
#include "SHFileOperation.iss" |
Цитата:
|
Вложений: 1
Цитата:
Не знаю, почему у тебя так. |
Цитата:
Еще случай, один раз инсталл пропустил папку с названием "1", при повторной попытке всетаки скопировал. |
Цитата:
|
Цитата:
|
Цитата:
|
Николай_Николаич@vk,
код
Код:
[setup] |
сори что не в тему!!!
kotyarko@fb ящик ЛС полный! новые сообщения не уходят... |
Кстати, не подскажете, давно искал пример двойного прогресс бара (Один по файловый, второй - общий прогресс), но никак не мог найти.
Есть ли таковой? |
Цитата:
|
Цитата:
|
Всем привет!
Подскажите, пожалуйста, как изменить стандартное окно выбора языков установки? Нужно точно так, как на скриншоте 1. В шапке - название программы; 2. "Выберите язык установщика" по-английски и по-русски в 2 строки; 3. Названия языков чтоб отображались через "/". |
OldGamer, вот пример автор sergey3695 я его не много подправил под твой скрин http://rghost.ru/8tQSLWRVD
вот мой скрин |
vint56, (Unicode)
Код:
[Setup] |
OldGamer, Еще один вариант, чисто средствами inno
Скрытый текст
Код:
[Setup] |
Всем большое спасибо за примеры выше - всё работает :up
|
Цитата:
|
Цитата:
|
Dodakaedr, ну понятно, что через ботву. я что-то сделал, но не работает
Код:
#include "botva2.iss" |
habib2302, здесь реализовано http://forum.oszone.net/post-2511590-643.html
|
|
Цитата:
|
habib2302,
Цитата:
|
|
Цитата:
Код:
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean); |
habib2302, http://rghost.ru/7s2pJXVgj
|
|
|
Господа, пожалуйста, помогите или хотя бы сориентируйте куда копать. :)
Задача следующая: нужно установить мод в определенную папку на жестком диске, исходя из следующих условий, размещенных в порядке важности Вариант 1 (чистая установка) а) Если есть ключ реестра "reg:HKCU\SOFTWARE\Blizzard Entertainment\Diablo II", то оттуда как "InstallPath\BFE", б) Если на жестких дисках есть файл, скажем, patch_d2.mpq, то в каталог, который содержит этот файл плюс, опять же, "\BFE" в) если нет ни того ни того, то в {pf}\BFE. Вариант 2 (установка обновления) а) просто в папку, куда была установлена предыдущая версия. Возможно ли это вообще? Заранее очень благодарен. |
TrueMage, в принципе, ничего особенного. Но в этом варианте:
Цитата:
|
Цитата:
|
Цитата:
А если нужный файл будет располагаться, например, где-то на системном диске? На его поиски могут уйти часы (в зависимости от имеющегося железа). Было бы легче, раз в 10, если бы нужно было найти определённую папку.. А тут файл, будет не поиск, а безудержное веселье) |
К сожалению не существует какого-то определенного имени папки, которое можно было бы поискать. Но вы правы, я, пожалуй, откажусь от этой идеи. Буду ставить банально либо по InstallPath из реестра, либо, если такого ключа нет, то в PF. Спасибо за помощь. :)
|
как заменить последнюю страницу на msgbox о завершении установки
|
Цитата:
Код:
[Setup] |
Всем привет. Вопрос:
Мне через реестр нужно найти папку: [HKEY_CURRENT_USER\Software\AlekseyPopovv] "CaptureFolder"="C:\\Foto" Эта папка может быть в любом другом месте и называться по другому. Потом нужно проверить существует ли папка и выдать запрос на удаление. Как это сделать? |
AlekseyPopovv, так?
Код:
var |
Как добавить checkbox в деинсталлятор для удаления сохранок\настроек
|
habib2302, через msgbox проще.
|
Dodakaedr, подскажите скрипт
|
habib2302, типа такого:
Код:
Procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); |
habib2302, Пробуйте
Скрытый текст
[code]
Код:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); |
kotyarko@fb, Да, всё получилось.
|
Как создать файл .txt через procedure CurStepChanged(CurStep: TSetupStep);?
|
AlekseyPopovv, Примерно так
Скрытый текст
Код:
procedure CurStepChanged(CurStep: TSetupStep); |
Помогите! Как поставить фоновое изображение в инсталлятор как у механиков на всех страницах.Чтоб слова и тд были видны. SOS
|
И еще! Игра пиратка. В нем есть файл rev.ini. Как изменить ник через инсталлер.(Создать страницу для смены ника)
|
Мне через файл ini нужно найти папку:
[Splash] CaptureFolder=C:\Foto Эта папка может быть в любом другом месте и называться по другому. Потом нужно проверить существует ли папка и выдать запрос на удаление. Как это сделать? |
Цитата:
Скрытый текст
Код:
procedure DeleteCaptureFolder; |
El Sanchez, А через procedure CurUninstallStepChanged как? Или не получится?
|
Цитата:
Скрытый текст
Код:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); |
Доброе время суток. как вам объяснить!? Короче. Как сделать проверку на использование команды /DIR?
Т.е инсталл запущенный с командой /DIR, то приложение указанное в разделе [Run] должно запускаться с командой (Filename: {tmp}\nsis.exe; Parameters: /D={app};) если инсталл запущенный без команды /DIR, то приложение должно запускаться без команды (Filename: {tmp}\nsis.exe;) |
habib2302, по идеи, должно работать..:
Код:
[Run] |
Цитата:
Скрытый текст
Код:
[Run] |
Парни, такая ситация. Хочу сделать чтобы у пользователя был выбор, устанавливать ли мод, или нет, вроде чекбокса. Мод в архиве. Если чекбокс нажат, то после основной установки пойдет установка мода, если нет, то и суда нет.
Как такое можно реализовать? |
Парни, проблема. Загрузил Фоновое изображение на инсталлятор через ботву. Сделал WizardForm.Innernotebook.hide и WizardForm.OuterNotebook.hide, чтобы изображение было видным, но эти параметры скрывают слова. Что надо сделать чтоб были слова и фоновая картинка одновременно. Плиз ответьте.
|
Okta_333, if Чекбокс.Checked then (а дальше распаковка архива. если используешь isdone, то читай справку)
PlanktoN, Parent:= WizardForm; и CurPageChanges (посм как правильно пишется) скрытие и показ элементов реализовывать. |
upd: разобрался. |
Мне нужно узнать версию программы из реестра:
[HKEY_LOCAL_MACHINE\SOFTWARE\MyPrograms\Program] "Version"="13.06.2015" И сделать чтобы было сообщение в окошке "Версия такая такая". Или если этого параметра нет в реестре то тогда сообщение "Версия не установлена". procedure ProgramButtonClick(Sender: TObject); var Hislo: String; begin if RegQueryStringValue(HKLM, 'SOFTWARE\MyPrograms\Program', 'Version', Hislo) and (Hislo <> '') then if MsgBox('Версия Hislo.',mbInformation, mb_ok) = IDok then end; |
AlekseyPopovv,
Код:
procedure ProgramButtonClick(Sender: TObject); |
Sergey3695, Я не понял как это сделать. Скрипт отправь пжл.
|
Как сделать, что бы файл *.exe копировался во временную папку вместе с например "iswin7logo.dll", "botva2.dll" и т.д?
|
AlekseyPopovv, по тому же самому принципу что и dll-ки.
|
Dodakaedr, понял.
|
PlanktoN,
Код:
var |
Помогите пожалуйста:
Часть кода:
procedure FullButtonClick(Sender: TObject);
var ResultCode: Integer; begin // Если нет данных в реестре, то вылазит окошко "Adobe Flash Player не установлен! Всё равно запустить?" "Да" или "Нет" if not RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPepper') then if not RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPlugin') then if not RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerActiveX') then if MsgBox('Adobe Flash Player не установлен! Всё равно запустить?', mbError, mb_yesno) = IDYES then if Exec(ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then else // До сюда всё работает, а если данные есть в реестре, то деинсталлятор не запускается! begin if RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPepper') then if RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPlugin') then if RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerActiveX') then if Exec(ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then end; end; // Чего не хватает? |
AlekseyPopovv, а так:
Код:
procedure FullButtonClick(Sender: TObject); Код:
... |
kotyarko@fb, вот так работает:
Код:
procedure FullButtonClick(Sender: TObject); |
AlekseyPopovv,
Код:
procedure FullButtonClick(Sender: TObject); Цитата:
Цитата:
Цитата:
:laugh: урок закончен. |
sergey3695, Если Вы такой умный, это не даёт Вам повода смеяться над другими! Для этого и существует форум... Участник kotyarko@fb был прав, его код подошёл, но с поправками... Ему и спасибо от души, а Вы не в ту степь пошли, либо не поняли меня! Но тем не менее спасибо всем!
|
Если кого-то оскорбил данным сообщением извините. мне просто понравилось if - then end, я ни в коем случае не пытался тут умничать, да и умным я себя назвать не могу... так среднестатистический юзер. И да, т.к. я не участвовал в начале обсуждения, я мог ни до конца понять требуемое условие.
|
sergey3695,
Цитата:
|
AlekseyPopovv, а так?
Procedure TempFile; begin ExtractTemporaryFile ('***.exe'); ExtractTemporaryFile ('botva2.dll') ExtractTemporaryFile ('ISWin7logo.dll') end; Procedure InitializeWizard(); Begin TempFile; end; |
Код:
function InitializeSetup(): Boolean; |
PlanktoN, sergey3695, спасибо, я разобрался.
|
Всем привет, не работает прокрутка колесиком мышки, работает если тока нажать на компонент тогда в низ спускает, как решить данную проблему?
|
|
habib2302, Примерно так.
Скрытый текст
Код:
procedure CurStepChanged(CurStep: TSetupStep); |
TryRooM, вы поняли что мне за код дали?
название этого раздела в реестре бывает разным в зависимости от системы и т.д. и т.п. |
habib2302, Вопрос был в чем. Создать папку с название раздела из реестра, что я и сделал.
А то, что название этого раздела в реестре бывает разным в зависимости от системы и т.д. и т.п. и так понятно. |
TryRooM, значит нужно учитывать что раздел в реестре у каждой системы будет разным. а просто взять и скопировать название раздела я и сам могу
|
habib2302, Можно добавить проверку на систему, и создавать папку исходя из этого.
Скрытый текст
Код:
|
TryRooM, я не умею предсказывать название этого раздела!
|
habib2302, для этой цели есть библа getsid. В поиске по теме найдешь.
|
Цитата:
Вам сие для чего? |
Iska, для создания папки с название раздела HKU\SID на скринах приведен пример
http://forum.oszone.net/post-2519231-707.html |
Помогите чтоб был виден текст на Выборе задач,Выборе Группы для Ярлыков и Страница Установки FreeArc(Просто там не виден текст какой файл распаковывается сколько времени осталось)
|
Цитата:
|
Цитата:
habib2302, пример: Скрытый текст
Код:
#define A = (Defined UNICODE) ? "W" : "A" |
Всем привет, уважаемые знатоки! Внимание, вопрос:
1) Есть 7 разных изображений, одинакового формата .bmp, одинакового размера в пикселях, но различных по смысловому наполнению. 2) Их обязательно нужно отобразить ТОЛЬКО по 1 согласно 7 страницам установщика - 1 картинку на стр 1, вторую - на стр 2 и тд. при этом остальных не должно быть видно. 3) Картинки должны розмещаться на Parent:= Wizardform; (смысл вы поняли). 4) Картинки имеют такой же отступ сверху, как и кнопки назад, далее и отмена по стандарту. Поиск по разделам не помог, решение ранее у меня было, но так как утеряны файлы с готовым вариантом, прошу помощи тут. Заранее спасибо за ответ. |
Как сделать, что бы при нажатии на кнопку "Установить" появлялось окошко (с одной функцией OK) "Закройте программы и нажмите кнопку OK" после чего установка продолжалась?
И можно ли как то совсем убрать страницу "FinishedPage", что бы не было "Да, перезагрузить..." и "Нет я...", а что бы всегда ответ давался "не перезагружать"? |
AlekseyPopovv, насчет перезагрузить. Покопайся в секции [setup]. Или справку почитай про [setup]. Там было. Забыл.
|
AlekseyPopovv, для того чтобы отключить radiobuttone с предложениями перезагрузить или нет, то вот пропиши это
Код:
[Setup] Код:
[Setup] Код:
[Setup] |
habib2302,
Код:
[Setup] Как сделать, что бы при нажатии на кнопку "Установить" появлялось окошко (с одной функцией OK) "Закройте программы и нажмите кнопку OK" после чего установка продолжалась? Был у меня раньше этот код... |
AlekseyPopovv, т.е. перед распаковкой файлов завершить процесс?
Код:
[Files] |
habib2302, Так конечно лучше, но я не знаю всех этих запущенных процессов. Поэтому просто предупреждение будет лучше:
Код:
procedure CurStepChanged(CurStep: TSetupStep); |
AlekseyPopovv,
Parameters Дополнительные параметры командной строки, которые могут содержать константы. Цитата:
Цитата:
|
У кого ни будь есть примеры "goto"?
Разобрался. |
С GroupPage разобрался, а с Выборами задач нет. Как сделать? (TasksList)
|
Небольшой вопрос(если где было - ткните носом) : :)
Нужно скопировать файлы в созданную временную папку в TEMP-е, запустить исполняемый файл с параметрами и после выполнения удалить временную папку в TEMP-е, как это прописать в скрипте... В файле конфигурации 7z SFX это сделано так: для примера
;!@Install@!UTF-8! InstallPath="%TEMP%\\vmware" Title="Установка VMware Workstation" BeginPrompt="Сейчас будет установлен VMware Workstation" ExtractTitle="Распаковка файлов..." ExtractDialogText="Подождите, пожалуйста..." RunProgram="\"%TEMP%\\vmware\\uninstall.exe\" /T \"%TEMP%\\vmware\\install\" /v /S \"%TEMP%\\vmware\"" RunProgram="hidcon:cmd /c REG DELETE HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v vmware-tray.exe /f" RunProgram="hidcon:cmd /c REG DELETE HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run /v vmware-tray.exe /f" RunProgram="hidcon:cmd /c REG ADD \"HKCU\\Software\\VMware, Inc.\\VMware Tray\" /v TrayBehavior /t REG_DWORD /d 00000002 /f" GUIFlags="2+4+8+16+32+2048+4096" GUIMode="1" Delete="%%T" MiscFlags="4" ;!@InstallEnd@! |
AlexM22204, в inno setup файлы распакованные в temp они сами удаляются после завершения процесса исполняемого файла
|
Alex22204, не уверен, но может быть:
[Files] Source: *.*; DestDir: {tmp}\InstallFile; Flags: сами напишите; [Run] Дальше сами... |
Подскажите пож. в локализованной винде папка Documents отображается под названием Мои документы.
Возможно ли средствами Inno Setup выполнить переименование папки Мои документы в Documents? |
ROMKA-1997, на Inno Setup не знаю. Батник (.bat) напиши и в секции [Run] пропиши путь к батнику с флагом /s или -silent, -verysilent.
|
Цитата:
|
подскажите как вывести табличку,что библиотека зарегистрировалась после ее регистрации
вот мой код
[Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{9C5632CB-B15E-4487-ADBB-C1DEB12423F5} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} CreateAppDir=yes DefaultDirName={pf}\RegOCX OutputBaseFilename=RegOCX Compression=lzma SolidCompression=yes DisableDirPage=yes DisableStartupPrompt=yes DisableWelcomePage=yes DisableReadyPage=yes [Languages] Name: ru; MessagesFile: compiler:Languages\russian.isl [Files] Source: "C:\Windows\test.ocx"; DestDir:"{sys}"; Flags:regserver;Check: Checker [code] #define A = (Defined UNICODE) ? "W" : "A" const INTERNET_OPEN_TYPE_PRECONFIG = 0; INTERNET_FLAG_NO_CACHE_WRITE = $4000000; INTERNET_FLAG_PRAGMA_NOCACHE = $100; INTERNET_FLAG_RELOAD = $80000000; INTERNET_FLAG_NEED_FILE = $10; INTERNET_FLAG_NO_AUTO_REDIRECT = $200000; HTTP_QUERY_FLAG_NUMBER = $20000000; HTTP_QUERY_LOCATION = 33; HTTP_QUERY_CONTENT_LENGTH = 5; HTTP_QUERY_STATUS_CODE = 19; ERROR_INSUFFICIENT_BUFFER = 122; HTTP_STATUS_OK = 200; HTTP_STATUS_REDIRECT = 302; GENERIC_READ = $80000000; GENERIC_WRITE = $40000000; CREATE_ALWAYS = 2; HEAP_ZERO_MEMORY = $8; IRF_SYNC = $4; type INTERNET_BUFFERS = record dwStructSize: DWORD; Next: Longint; lpcszHeader: String; dwHeadersLength: DWORD; dwHeadersTotal: DWORD; lpvBuffer: Longint; dwBufferLength: DWORD; dwBufferTotal: DWORD; dwOffsetLow: DWORD; dwOffsetHigh: DWORD; end; var g_DownloadPage: TOutputProgressWizardPage; function InternetOpen(lpszAgent: String; dwAccessType: DWORD; lpszProxyName, lpszProxyBypass: String; dwFlags: DWORD): Integer; external 'InternetOpen{#A}@wininet.dll stdcall'; function InternetOpenUrl(hInternet: Longint; lpszUrl, lpszHeaders: String; dwHeadersLength, dwFlags: DWORD; dwContext: DWORD_PTR): Integer; external 'InternetOpenUrl{#A}@wininet.dll stdcall'; function InternetReadFileEx(hFile: Longint; var lpBuffersOut: INTERNET_BUFFERS; dwFlags: DWORD; dwContext: DWORD_PTR): BOOL; external 'InternetReadFileEx{#A}@wininet.dll stdcall'; function InternetCloseHandle(hInternet: Longint): BOOL; external 'InternetCloseHandle@wininet.dll stdcall'; function HttpQueryInfo(hRequest: Longint; dwInfoLevel: DWORD; var lpvBuffer: Longint; var lpdwBufferLength, lpdwIndex: DWORD): BOOL; external 'HttpQueryInfo{#A}@wininet.dll stdcall'; function _HttpQueryInfo(hRequest: Longint; dwInfoLevel: DWORD; lpvBuffer: String; var lpdwBufferLength, lpdwIndex: DWORD): BOOL; external 'HttpQueryInfo{#A}@wininet.dll stdcall'; function StrFormatByteSize64(qdw: Currency; pszBuf: AnsiString; cchBuf: UINT): Longint; external 'StrFormatByteSize64A@shlwapi.dll stdcall'; function StrFromTimeInterval(pszOut: String; cchMax: UINT; dwTimeMS: DWORD; digits: Byte): Integer; external 'StrFromTimeInterval{#A}@shlwapi.dll stdcall'; function CreateFile(lpFileName: String; dwDesiredAccess, dwShareMode: DWORD; lpSecurityAttributes: Longint; dwCreationDisposition, dwFlagsAndAttributes: DWORD; hTemplateFile: THandle): THandle; external 'CreateFile{#A}@kernel32.dll stdcall'; function WriteFile(hFile: THandle; lpBuffer: Longint; nNumberOfBytesToWrite: DWORD; var lpNumberOfBytesWritten: DWORD; lpOverlapped: Longint): BOOL; external 'WriteFile@kernel32.dll stdcall'; function GetProcessHeap(): THandle; external 'GetProcessHeap@kernel32.dll stdcall'; function HeapAlloc(hHeap: THandle; dwFlags, dwBytes: DWORD): Longint; external 'HeapAlloc@kernel32.dll stdcall'; function HeapFree(hHeap: THandle; dwFlags: DWORD; lpMem: Longint): BOOL; external 'HeapFree@kernel32.dll stdcall'; function HeapSize(hHeap: THandle; dwFlags: DWORD; lpMem: Longint): DWORD; external 'HeapSize@kernel32.dll stdcall'; function CloseHandle(hObject: THandle): BOOL; external 'CloseHandle@kernel32.dll stdcall'; function GetTickCount: DWORD; external 'GetTickCount@kernel32.dll stdcall'; function MulDiv(nNumber, nNumerator, nDenominator: Integer): Integer; external 'MulDiv@kernel32.dll stdcall'; /////////////////////////////////////////////////// function TicksToTime(const dwTicks: DWORD): String; begin Result := StringOfChar(#0, StrFromTimeInterval(Result, 0, dwTicks, 8)); StrFromTimeInterval(Result, Length(Result)+1, dwTicks, 8); end; //////////////////////////////////////////////////////// function BytesToSize(const exBytes: Double): AnsiString; begin Result := StringOfChar(#0, 15); if Abs(exBytes) > 9.223372036854775807E18 then exBytes := 0; #ifdef UNICODE Result := CastIntegerToAnsiString(StrFormatByteSize64(Abs(exBytes div 1E4), Result, Length(Result))); #else Result := CastIntegerToString(StrFormatByteSize64(Abs(exBytes div 1E4), Result, Length(Result))); #endif end; //////////////////////////////////////////////////// function DownloadFile(const szURL: String): Boolean; var hConnect, hSession, hFile, hHeap: THandle; szHeader, szFileName: String; dwBufferLength, dwIndex, dwStartDownload, dwStart, dwElapsed, dwWritten: DWORD; lpBuffer, lpStatus, lpSize: Longint; ib: INTERNET_BUFFERS; begin try hSession := InternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG, '', '', 0); if hSession = 0 then Exit; // additional header szHeader := 'Referer: http://example.org/'#13#10; // try direct link repeat hConnect := InternetOpenUrl(hSession, szURL, szHeader, Length(szHeader), INTERNET_FLAG_NO_CACHE_WRITE or INTERNET_FLAG_PRAGMA_NOCACHE or INTERNET_FLAG_RELOAD or INTERNET_FLAG_NO_AUTO_REDIRECT, 0); if hConnect = 0 then Exit; dwBufferLength := SizeOf(lpBuffer); dwIndex := 0; lpStatus := 0; if not HttpQueryInfo(hConnect, HTTP_QUERY_STATUS_CODE or HTTP_QUERY_FLAG_NUMBER, lpStatus, dwBufferLength, dwIndex) then Exit; lpBuffer := 0; HttpQueryInfo(hConnect, HTTP_QUERY_LOCATION, lpBuffer, dwBufferLength, dwIndex); if DLLGetLastError = ERROR_INSUFFICIENT_BUFFER then begin szURL := StringOfChar(#0, dwBufferLength-1); if not _HttpQueryInfo(hConnect, HTTP_QUERY_LOCATION, szURL, dwBufferLength, dwIndex) then Exit; if lpStatus = HTTP_STATUS_REDIRECT then InternetCloseHandle(hConnect); end; until lpStatus = HTTP_STATUS_OK; // get file size dwBufferLength := 4; dwIndex := 0; if not HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH or HTTP_QUERY_FLAG_NUMBER, lpSize, dwBufferLength, dwIndex) then Exit; // save dialog szFileName := ExpandConstant('C:\Windows\' + ExtractFileName(szURL)); if szFileName <> '' then try hFile := CreateFile(szFileName, GENERIC_READ or GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); //create file if hFile = 0 then Exit; hHeap := GetProcessHeap(); lpBuffer := HeapAlloc(hHeap, HEAP_ZERO_MEMORY, 4*1024); // buffer size must be >= 512Kb ib.dwStructSize := SizeOf(ib); ib.lpvBuffer := lpBuffer; ib.dwBufferLength := HeapSize(hHeap, 0, lpBuffer); // show page g_DownloadPage.Show; g_DownloadPage.ProgressBar.Show; g_DownloadPage.SetProgress(0, lpSize); // try download try // initial labels g_DownloadPage.Msg1Label.Caption := Format( 'Файл:'#9#9'%s'#13#10 + 'Загружено:'#9'%s из %s', [ExtractFileName(szFileName), BytesToSize(0), BytesToSize(lpSize)] ); g_DownloadPage.Msg2Label.Caption := Format( 'Прогресс:'#9'%s'#13#10 + 'Скорость:'#9'%s/сек'#13#10 + 'Прошло:'#9'0 сек'#13#10 + 'Осталось:'#9'%d сек', [FormatFloat('0.#0 %', MulDiv(g_DownloadPage.ProgressBar.Position, 100, lpSize)), BytesToSize(0), MaxInt] ); // download dwStartDownload := GetTickCount; while ib.dwBufferLength > 0 do begin dwStart := GetTickCount; dwElapsed := 0; while dwElapsed < 1000 do begin // read file InternetReadFileEx(hConnect, ib, IRF_SYNC, 0); // write file WriteFile(hFile, ib.lpvBuffer, ib.dwBufferLength, dwWritten, 0); ib.dwBufferTotal := ib.dwBufferTotal + dwWritten; // update progressbar g_DownloadPage.ProgressBar.Position := ib.dwBufferTotal; // process messages Application.ProcessMessages; dwElapsed := GetTickCount - dwStart; end; // update labels dwElapsed := GetTickCount-dwStartDownload; g_DownloadPage.Msg1Label.Caption := Format( 'Файл:'#9#9'%s'#13#10 + 'Загружено:'#9'%s из %s', [ExtractFileName(szFileName), BytesToSize(ib.dwBufferTotal), BytesToSize(lpSize)] ); g_DownloadPage.Msg2Label.Caption := Format( 'Прогресс:'#9'%d %%'#13#10 + 'Скорость:'#9'%s/сек'#13#10 + 'Прошло:'#9'%s'#13#10 + 'Осталось:'#9'%d сек', [MulDiv(ib.dwBufferTotal, 100, lpSize), BytesToSize(MulDiv(ib.dwBufferTotal, 1000, dwElapsed)), TicksToTime(dwElapsed), MulDiv(lpSize-ib.dwBufferTotal, dwElapsed, 1000)/(ib.dwBufferTotal + 1)] ); end; except Result := False; // error finally end; finally CloseHandle(hFile); HeapFree(hHeap, 0, lpBuffer); Result := ib.dwBufferTotal = lpSize; // success end; except Result := False; // error finally InternetCloseHandle(hConnect); InternetCloseHandle(hSession); g_DownloadPage.Hide; end; end; ///////////////////////////////////// procedure CreateDownloadProgressPage; begin g_DownloadPage := CreateOutputProgressPage('Загрузка файла', ''); with g_DownloadPage do begin Msg1Label.Height := Msg1Label.Height shl 1; Msg2Label.Height := Msg2Label.Height shl 2; Msg2Label.Top := ProgressBar.Top + ProgressBar.Height + ScaleY(5); end; end; ///////////////////////////// procedure InitializeWizard(); begin CreateDownloadProgressPage(); end; ////////////////////////////////////////////////////// function NextButtonClick(CurPageID: Integer): Boolean; begin Result := True; case CurPageID of wpWelcome: DownloadFile('http://test.ru/test.ocx'); end; end; //check Function Checker(): Boolean; begin Result := IsComponentSelected('aa'); end; |
Цитата:
Код:
[setup] |
Dodakaedr,не такую,нужно всплывающее сообщение,чтобы понимать зарегистрировалась она или нет.
|
Romka-1997, команда help в помощь.
|
Доброе время суток.
Скрытый текст
Заменить команду /LANG на /L
Заменить команду /DIR на /D Заменить команду /COMPONENTS на /C |
habib2302, Заменить команду /DIR на /D
Код:
function GetDirFromCMD(kWord: string): string; |
как показать TasksList через CurPageChanged; (Как в скрипте от Serega.)
|
Цитата:
Как перед запуском инсталлятора проверить подключен ли компьютер к интернет? Если интернет подключен, то выдать сообщение "Имеется активное подключение к интернет! Отключите интернет и попробуйте снова!" (mb_ok), если нет то продолжить установку. |
Цитата:
Код:
Function InternetGetConnectedState(var lpdwFlags: DWORD; dwReserved: DWORD): Boolean; |
kotyarko@fb, В первом варианте вообще не собирается скрипт, во втором варианте всё собирается, но всегда пишет что интернета нет и продолжает установку!
|
Цитата:
Код:
[setup] |
Dodakaedr, Ваш код работает. Но у меня вылазит ошибка сразу после нажатия "ок". Это мешает:
Код:
procedure DeinitializeSetup(); |
Цитата:
Скрытый текст
Код:
[setup] |
доброе время суток. подскажите пожалуйста код для ansi на проверку на наличие файла перед распаковкой файлов
у меня есть один код, но при компиляции выдает ошибку Код:
[code] |
habib2302, Так пойдет. На любой версии.
Скрытый текст
Код:
var |
Я про фоновое изображение. При накладывании изображения текст становится не виден. Как показать? Имено через CurPageChanged и именно TasksList
|
как добавить в инсталлятор поддержку Windows 8,8.1 и 10?(не обновляя программу)
|
Думаю без кода должен поддерживаться на всех ОС. На крайняк: Режим Совместимости Windows.
|
Цитата:
|
Цитата:
|
Ты про Metro стиль?? Типа на Windows 7 такая тема, на Win 8, 8.1, 10 был Metro?? Два стиля в одном инсталле.Слмневаюсь что такое может быть. Если есть то код будет длинным думаю.
|
Цитата:
|
Dodakaedr, мне нужно добавить в манифест инсталлятора совместимость с Win 8/2012/8.1/2012 R2/10,сейчас если ничего не прописываю манифест Win XP/2003/Vista/2008/7/2008 R2
|
Цитата:
|
Всем привет :) Помогите пожалуйста. Нужно создать установщик, который бы распаковывал две папки, одну туда куда укажет пользователь, на любой диск, в любую папку, а вторая чтоб принудительно распаковалась просто на диск без всяких подпапок (но именно на тот диск, куда укажет пользователь в целом для приложения).Например, устанавливает пользователь приложение, указывает путь Е/Games/Игра, и вот какая то часть туда и установилась, а другая часть просто по пути Е/Приложение. Возможно ли так сделать? Спасибо, буду надеяться на ответы))
|
Цитата:
Код:
DestDir: {drive:{app}}\Приложение |
как сделать в случае отмены установки исполняемого файла
Код:
[Run] Код:
[Run] Я как понимаю никому до меня нет дела!? |
|
Цитата:
|
El Sanchez, просто в случае отмены установки допустим msi'шного инсталлятора (который запакован в мой инстал) из-за ошибки, то мой инстал продолжит установку
|
Здравствуйте! Решил перепаковать для себя VMware Workstation 11.1.2
Вот скрипт
[Setup]
AppName=VMware Workstation AppVersion=11.1.2 AppPublisher=(сборка) VersionInfoVersion=11.1.2 CreateAppDir=no OutputBaseFilename=Setup_VMware_11 SetupIconFile={app}\ws.ico SolidCompression=yes WizardImageFile=embedded\WizardImage.bmp WizardSmallImageFile=embedded\WizardSmallImage.bmp Uninstallable=no [Languages] Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl" [Files] Source: "{app}\*"; DestDir: "{tmp}\vmware"; Flags: ignoreversion recursesubdirs createallsubdirs [Tasks] Name: "rus"; Description: "{cm:SetupLangPack}"; GroupDescription: "{cm:OtherOptions}"; Flags: checkablealone; MinVersion: 0.0,5.0 Name: "trayicon"; Description: "{cm:DelTrayIcon}"; GroupDescription: "{cm:OtherOptions}"; Flags: checkablealone; MinVersion: 0.0,5.0 [Run] Filename: "{tmp}\vmware\uninstall.exe"; Parameters: "/T ""{tmp}\vmware\install"" /v /s /S ""{tmp}\vmware""" Filename: "TASKKILL"; Parameters: "/F /IM ""vmware-tray.exe"""; Flags: runhidden; MinVersion: 0.0,5.0; Tasks: trayicon Filename: "{tmp}\vmware\VMware-ru-ru.exe"; Parameters: "/s"; MinVersion: 0.0,5.0; Tasks: rus [Registry] Root: "HKCU"; Subkey: "Software\VMware, Inc.\VMware Tray"; ValueType: dword; ValueName: "TrayBehavior"; ValueData: "$00000002"; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: trayicon [CustomMessages] russian.DelTrayIcon=Отключить отображение иконки в трее russian.SetupLangPack=Установить русский языковой пакет russian.OtherOptions=Дополнительные параметры: [code] ///Удалить кнопки свернуть, развернуть из окна инсталлятора const GWL_STYLE = -16; WS_MINIMIZEBOX = $20000; WS_MAXIMIZEBOX = $10000; function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall'; function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall'; procedure initializeWizard(); begin SetWindowLong(WizardForm.handle, GWL_STYLE, GetWindowLong(WizardForm.handle, GWL_STYLE)and(not WS_MINIMIZEBOX)and(not WS_MAXIMIZEBOX)); end; Но одно но... Программа только для 64-bit систем, как организовать перед запуском инсталятора проверку, если система 64-bit - то продолжается установка, если система 32-bit - появляется окно с сообщением о несоответствии системы и предложение прекратить установку. :( |
AlexM22204, в справке про секцию [setup] прочтите, там есть ответ на ваш вопрос. По поводу битности системы.
|
Цитата:
Код:
[Setup] |
Доброго времени суток.
Есть инсталлятор (с использованием ботвы), у которого два "фоновых" изображения: Код:
img1:=ImgLoad(WizardForm.Handle, ExpandConstant('img1.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); Попытался реализовать так: Код:
procedure TestBtnHide(hBtn:HWND); |
Цитата:
Код:
procedure TestBtnHide(hBtn:HWND); |
kotyarko@fb, спасибо вам большое. Теперь все работает как надо.
|
Доброе время суток. Как сделать допустим разрегистрацию dll'ки через Exec перед установкой
|
Цитата:
Код:
procedure CurStepChanged(CurStep: TSetupStep); |
Dodakaedr, а как сделать разрегистрацию перед распаковкой файлов в зависимости от компонента
|
habib2302, в зависимости от компонента
Код:
procedure CurStepChanged(CurStep: TSetupStep); |
|
habib2302,
Код:
if CurStep = ssInstall then |
Всем доброго времени суток ! Может кто поможет реализовать такую идею : Нужно до страницы выбора папки назначения вставить страницу с выбором типа установки :
"Установка" или "Распаковка" (они должны быть взаимоисключающими т.е. с флагом exclusive ). Если выбрана "Установка" то дальше установка должна идти как обычно (выбор папки, выбор компонентов и т.д. ) При выборе "Распаковка" должна быть страница выбора папки назначения и дальше просто распаковка в указанную пользователем папку. Можно это решить ? |
Доброе время суток. У меня возникли трудности с закрытием процесса. Нашел пример и на его основе попытался изобразить для своего случая:
Код:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); На всякий случай: скриншот
Что у меня в записи с taskkil не так? Заранее спасибо. ________ P.S. И кстати ещё один момент - как видно на скриншоте этих процессов FmsProxy.exe может быть несколько - может из-за этого не работает, и тогда как убить их все разом? |
palsn2000,
На этапе установки убить процесс
Код:
[Files] На этапе деинсталляции убить процесс
Код:
[Files] |
Цитата:
Код:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); |
Dodakaedr, Большое спасибо, а то я всю голову изломал, что не так. Всё из-за моей невнимательности - всю жизнь мне мешает: пропущу какую-нибудь мелочь, а потом сам над собой смеюсь.
|
|
nik1967, спасибо большое ! Ваш скрипт отлично подходит. А как можно сделать чтобы конечные папки DestDir у распаковки и установки были разные ? Просто для установки вложенность папок большая и для распаковки это в конечном итоге не совсем удобно. Спасибо за помощь.
|
Цитата:
Скрытый текст
Код:
[Setup] |
Dodakaedr, Спасибо за помощь. Но я наверно неправильно объяснил суть
Мой скрипт
Код:
;InnoSetupVersion=5.3.10 у меня "Распаковка" идет как компонент , но так не совсем удобно и некрасиво. Как совместить скрипт который написал nik1967 с моим, но чтобы при выборе "Распаковка" все распаковывалось так как в моем скрипте при выборе компонента "Распаковка" ? |
Uragan66, вместо "Components: Extracted" используй "Check: not IsChecked". То есть, вместо
Код:
Source: "{app}\Emitter Libraries\customemiters\Misc\*"; DestDir: "{app}\Emitter Libraries\Misc"; Components: Extracted; Flags: ignoreversion Код:
Source: "{app}\Emitter Libraries\customemiters\Misc\*"; DestDir: "{app}\Emitter Libraries\Misc"; Check: not IsChecked; Flags: ignoreversion |
nik1967, спасибо большое ! Все как надо. А поменять местами " Распаковка" и " Установка" на первой странице получится ? Извини что надоедаю.
|
Цитата:
|
nik1967, отлично ! Еще раз огромный респект за помощь !
|
Еще раз здравствуйте.
Вот наткнулся на такой инсталлятор: Если флажок напротив "Я ознакомлен..." отсутствует - кнопка "Далее" будет неактивна (в любом случае). Я попытался сделать нечто похожее (за основу инсталлятора взят ЭТОТ скрипт). Сначала использовал стандартный пример: создал чекбокс Код:
function Read: Boolean; Код:
if BtnGetChecked(ReadCheck)=true then BtnSetEnabled(hNextBtn, true) else BtnSetEnabled(hNextBtn, false); 1. Обычно, если на диске недостаточно места, кнопка "Далее" будет неактивной. У меня же после установки флажка она становилась активной (независимо от свободного места). 2. Также "Далее" могла стать активной после выбора диска, на котором было достаточно места, независимо от того, был установлен флажок ("Я...") или нет. После этого решил в GetFreeSpaceCaption заменить Код:
BtnSetEnabled(hNextBtn,not (GetArrayLength(ADisk)>0)); Код:
if BtnGetChecked(ReadCheck)=true then BtnSetEnabled(hNextBtn,not (GetArrayLength(ADisk)>0)) else BtnSetEnabled(hNextBtn, false); Прошу помощи у всех, кто в этом разбирается. |
nik1967, извини, еще один небольшой вопрос : в твоем скрипте (ну или не совсем твоем, но автора мы то не знаем, хотя спасибо ему большое) создается новая страница. Я изучал код, но так и не понял где найти идентификатор этой страницы страницы чтобы предположим добавить на нее картинку или включить ее в панель ну и т.д. Для конкретного инсталятора оно может и не надо, просто изучить хочу. Конкретного руководства по по паскалю для Inno Setup найти не могу, а изучать весь паскаль нет времени. Если не трудно подсажи , пожалуйста.
|
Uragan66, Parent:= MyNewPage.Surface
|
Uragan66, если в качестве родителя, то да, как и написал Dodakaedr: Parent:= MyNewPage.Surface;. А если нужно именно id, то MyNewPage.id
|
Вложений: 1
Dodakaedr, nik1967, Спасибо большое, но ничего у меня не получается, не воспринимает ее компилятор как MyNewPage , ошибка как не в одном то в другом месте, например в этом
коде
HTML код:
; --- Generated by InnoSetup Script Joiner version 3.0, Jul 22 2009, (c) Bulat Ziganshin <Bulat.Ziganshin@gmail.com>. More info at http://issjoiner.codeplex.com/ |
Uragan66, страница кастомная, создана пользователем, и к WizardForm отношения не имеет. То есть вместо WizardForm.MyNewPage.Color := $00AB663D; нужно MyNewPage.Surface.Color := $00AB663D;
|
nik1967, спасибо !
|
Всем доброго времени суток ! Может кто подскажет как в этом
коде
[code]
Код:
|
Uragan66, попробуйте так:
Код:
procedure LogoOnClick(Sender: TObject); |
Sotonisto, так уже пробовал
Скрытый текст
[code]
Код:
|
Uragan66, вы забыли раскомментировать строку BtnPanel.OnClick:=@logoOnClick в процедуре создания лого.
|
Sotonisto, Спасибо большое за помощь, но когда раскомментирую эту строку компилятор не находит идентификатора logoOnClick.
|
Цитата:
Скрипт
Код:
procedure iswin7_add_glass(Handle:HWND; Left, Top, Right, Bottom : Integer; GDIPLoadMode: boolean);external 'iswin7_add_glass@files:iswin7.dll stdcall'; |
Sotonisto, спасибо. Но не хочет работать . Установщик компилируется нормально, но ссылки не работают, то есть клик на лого ничего не дает... Хотя вот
скрипт
Код:
procedure LogoOnClick(Sender: TObject); |
Uragan66, в каком смысле нет прозрачности?
К слову, желательно увидеть весь скрипт, а еще лучше - архив со всеми файлами (для полноты картины). Исправлять ошибки вслепую - напрасная трата времени :) |
Sotonisto, в том скрипте нельзя поставить лого на MAINPANEL. Прикрепил архив, но еще не полностью сделано, много недоработок, посмотрите, пожалуйста, если есть время...
|
как убрать PreparingPage перед распаковкой портативной версии
|
Цитата:
Код:
function ShouldSkipPage(PageID: Integer): Boolean; Код:
procedure CurPageChanged(CurPageID: Integer); |
ekspoint, не помогло
|
Uragan66, мне не удалось проверить скрипт на работоспособность т.к. использую ANSI версию IS.
Пробежался глазами по коду и признаюсь, такой мешанины из скриптов я еще ни разу не видел (не в обиду). Я понимаю, что вы сами их писали и прекрасно знаете что и где, но 9 секций [Setup], 5 [Files] и 2 [Languages] (дублирующие друг друга) в одном скрипте - как по мне, так это перебор :) Для меня уже странно то, что они вообще у вас работают :) Сейчас попытаюсь его пересобрать "под себя", потом отпишусь получилось или нет. |
|
Sotonisto, согласен, смесь еще та... Но я первый раз работаю с Inno Setup, так что не судите строго :) А секций дублирующих почему много ? отдельные скрипты собирал Join Skripts, вот так и получилось. У меня компилируется нормально и работает тоже, но "сижу" в основном на ХР -ке, а потом проверил на 8.1 x-64 там вообще нет картинок, задействованных в секции MUI_InstallShield и в скине кнопки обычные, непонятно почему. Если у вас получиться проверить и исправить ошибки буду премного благодарен
habib2302, спасибо , попробую... Цитата:
|
Цитата:
|
как сделать так что бы инсталлятор запускался от админа, в setup поставил PrivilegesRequired=admin но не помогает
|
|
Цитата:
|
kotyarko@fb, и как?
|
Всем привет ! Возник вопрос как на страницу выбора компонентов добавить кнопку с запуском программы ( это каталог html, но сделанный в формате exe ) Буду благодарен за помощь.
|
Цитата:
Цитата:
Примерно так:
Код:
Var |
Вложений: 1
kotyarko@fb, Спасибо большое за код , но на дефолтной странице Inno он работает, а когда добавляю на свою страницу нажатие на кнопку ничего не дает
код
[code]
Код:
type |
Uragan66, укажите путь к Catalog.exe
При условии что Catalog.exe находится рядом с инсталятором: Код:
Procedure ExecButtonOnClick(Sender: TObject); |
Цитата:
Код:
[Files] |
Dodakaedr, спасибо, путь пробовал по - разному указывать , не работало.
kotyarko@fb, Еще раз спасибо, извлечение в темп помогло, все нормально работает ! |
Всем доброго времени суток!
А подскажите плиз, можно ли как-то на окно выбора языка установки добавить свои компоненты? И если можно, то как? А то просмотрела всю "Support Classes Reference", но соответствующих описаний не нашла:( |
|
Цитата:
Код:
[Setup] |
Прошу помощи, потому как слегка заблудился во всей этой информации. С инсталляцией вроде бы всё понятно, но меня интересует деинсталляция, а именинно то как её костамизировать.
В идеале, мне нужно, что бы при запуске деинсталлятора выводилось окно где пользователь может выбрать компоненты для удаления(желательно через чекбокс) далее сам процесс удаление и в конце информация, что всё прошло хорошо или всё прошло плохо. Буду благодарен всем кто направит меня на путь истинный. |
Dodakaedr, ругается на SelectLanguageForm, пишет, что неизвестный идентификатор. (
|
Shkutu, Пример, который вам дали для расширенной версии компилятора.
|
|
vadjliss,
Код:
[Run] |
Цитата:
Код:
procedure CurStepChanged(CurStep: TSetupStep); |
спасибо вы как всегда на высоте
ещё вопрос создаю инсталятор что бы распаковывал на рабочий стол но он создаёт ветку в реестре и файлы unins000.exe помогите со скриптом чтобы чисто распаковывал на рабочий стол без лишних файлов |
vadjliss,
Код:
[Setup] |
ребята а скриптом помочь можете чтобы был инстолятор и распаковка portable в одном
|
|
спасибо nik1967
|
ребята у меня инстолятор и распаковка portable в одном
как сделать чтобы в portable распаковывалась другая папка Скрытый текст
#define MyAppName "Icecream PDF Converter"
#define MyAppExeName "pdfconverter.exe" [Setup] AppName=My Program AppVerName=My Program DefaultDirName={pf}\My Program OutputDir=. SetupIconFile=C:\Users\111\Desktop\скрипт\image\1.ico Uninstallable=IsChecked CreateUninstallRegKey=IsChecked [Languages] Name: ru; MessagesFile: compiler:Languages\Russian.isl; [Tasks] Name: "desktopicon"; Description: "Ярлык(и) на «Рабочем столе»"; GroupDescription: "Дополнительно:"; Check: IsChecked [Icons] Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon [Files] Source: C:\Users\111\Desktop\Новая папка\ProgramFilesFolder\Icecream PDF Converter\pdfconverter.exe; DestDir: {app}; Flags: ignoreversion Source: C:\Users\111\Desktop\Новая папка\WindowsFolder\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs [CustomMessages] HeaderLabelPage=Выбор типа установки LabelPage=Выберите нужный тип установки MyRadioCaption_1=Распаковка MyRadioCaption_2=Обычная установка PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен. MyText_1=Будет произведена распаковка в паку,%nуказанную на следующей странице MyText_2=Будет произведена стандартная установка Extracted=Распаковка — %1 ExtractedFolder=Выбор папки распаковки ExtractedFolder2=В какую папку вы хотите распаковать %1? ExtractedFolder3=Программа распакует %1 в следующую папку. ExtractedFolder4=Программа установит %1 в следующую папку. Installing=Распаковка... InstallingLabel=Пожалуйста, подождите, пока %1 распакуется на ваш компьютер. FinishedHeadingLabel=Завершение распаковки%n%1 FinishedLabelNoIcons=Программа %1 распакована на Ваш компьютер.%n%nНажмите «Завершить», чтобы выйти из программы распаковки. [UninstallDelete] Type: filesandordirs; Name: {app} [code] const DI_NORMAL = 3; var MyNewPage: TWizardPage; Rect: TRect; HIcon: LongInt; AIconFileName: String; MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton; function GetModuleHandle(lpModuleName: LongInt): LongInt; external 'GetModuleHandleA@kernel32.dll stdcall'; function ExtractIcon(hInst: LongInt; lpszExeFileName: AnsiString; nIconIndex: LongInt): LongInt; external 'ExtractIconA@shell32.dll stdcall'; function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur: LongInt; hbrFlickerFreeDraw, diFlags: LongInt): LongInt;external 'DrawIconEx@user32.dll stdcall'; function DestroyIcon(hIcon: LongInt): LongInt; external 'DestroyIcon@user32.dll stdcall'; function IsChecked: Boolean; begin Result:= MyRadioBtn_2.checked; end; procedure RadBtnOnClick(Sender: TObject); begin case Sender of MyRadioBtn_1: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; MyRadioBtn_2: begin WizardForm.Caption:= FmtMessage(SetupMessage(msgSetupWindowTitle), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder4}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; procedure GetInstTypePage(); begin MyNewPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:HeaderLabelPage}'), ExpandConstant('{cm:LabelPage}')); try // в конкретном примере из этого файла (C:\Windows\System32\shell32.dll) берём иконки, для пробного показа. // Можно использовать обычные .ico AIconFileName:= ExpandConstant('{sys}\shell32.dll'); // Rect.Left:= 0; Rect.Top:= 0; Rect.Right:= 32; Rect.Bottom:= 32; hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 26); try with TBitmapImage.Create(WizardForm) do begin Left:= ScaleX(15); Top:= ScaleY(68); Width:= 32; Height:= 32; with Bitmap do begin Width:= 32; Height:= 32; Canvas.Brush.Color:= clBtnFace; Canvas.FillRect(Rect); DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL); end; Parent:= MyNewPage.Surface; end; finally DestroyIcon(hIcon); end; hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 19); try with TBitmapImage.Create(WizardForm) do begin Left:= ScaleX(15); Top:= ScaleY(138); Width:= 32; Height:= 32; with Bitmap do begin Width:= 32; Height:= 32; Canvas.Brush.Color:= clBtnFace; Canvas.FillRect(Rect); DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL); end; Parent:= MyNewPage.Surface; end; finally DestroyIcon(hIcon); end; except end; with TNewStaticText.Create(WizardForm) do begin Width:= WizardForm.InnerNotebook.Width; Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:PageTextHeader}'); Parent:= MyNewPage.Surface; end; MyRadioBtn_1:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_1 do begin Top:= ScaleY(50); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_1}'); OnClick:= @RadBtnOnClick; Parent:= MyNewPage.Surface; end; with TNewStaticText.Create(WizardForm) do begin Left:= ScaleX(60); Top:= ScaleY(68); Width:= WizardForm.InnerNotebook.Width - ScaleX(60); Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_1}'); Parent:= MyNewPage.Surface; end; MyRadioBtn_2:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_2 do begin Top:= ScaleY(120); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_2}'); Checked:= True; OnClick:= @RadBtnOnClick; Parent:= MyNewPage.Surface; end; with TNewStaticText.Create(WizardForm) do begin Left:= ScaleX(60); Top:= ScaleY(138); Width:= WizardForm.InnerNotebook.Width - ScaleX(60); Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_2}'); Parent:= MyNewPage.Surface; end; end; function ShouldSkipPage(PageID: Integer): Boolean; begin if (PageID > wpSelectDir) and (PageID < wpInstalling) and (MyRadioBtn_1.Checked) then Result:= True; end; procedure InitializeWizard(); begin GetInstTypePage(); WizardForm.DiskSpaceLabel.Hide; end; procedure CurPageChanged(CurPageID: Integer); begin if not IsChecked then begin case CurPageID of wpSelectDir: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:ExtractedFolder}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder2}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); if IsChecked then WizardForm.DirEdit.Text := ExpandConstant( '{pf}\{#SetupSetting("AppName")}' ) else WizardForm.DirEdit.Text := ExpandConstant( '{src}\{#SetupSetting("AppName")}' ); end; wpInstalling: begin WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:Installing}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:InstallingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; wpFinished: begin WizardForm.FinishedHeadingLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedHeadingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.FinishedLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedLabelNoIcons}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; end; |
vadjliss,
Пример
Код:
[Files] |
спасибо Dodakaedr
но мне нужно чтобы portable распаковывала свою папку которая будет в инстоляторе а здесь Код:
[Files] короче надо что бы portable не трогала папку инстолятора вот мой код скрипт
[code]#define MyAppName "Icecream PDF Converter"
#define MyAppExeName "pdfconverter.exe" [Setup] AppName=My Program AppVerName=My Program DefaultDirName={pf}\My Program OutputDir=. SetupIconFile=C:\Users\111\Desktop\скрипт\image\1.ico Uninstallable=IsChecked CreateUninstallRegKey=IsChecked [Languages] Name: ru; MessagesFile: compiler:Languages\Russian.isl; [Tasks] Name: "desktopicon"; Description: "Ярлык(и) на «Рабочем столе»"; GroupDescription: "Дополнительно:"; Check: IsChecked [Icons] Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon [Files] Source: C:\Users\111\Desktop\Новая папка\ProgramFilesFolder\Icecream PDF Converter\pdfconverter.exe; DestDir: {app}; Flags: ignoreversion Source: C:\Users\111\Desktop\Новая папка\WindowsFolder\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs Source: "C:\Users\111\Desktop\Новая папка\DesktopFolder\*"; DestDir: "{app}"; Check: "not IsChecked"; Flags: ignoreversion createallsubdirs recursesubdirs [CustomMessages] HeaderLabelPage=Выбор типа установки LabelPage=Выберите нужный тип установки MyRadioCaption_1=Распаковка MyRadioCaption_2=Обычная установка PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен. MyText_1=Будет произведена распаковка в паку,%nуказанную на следующей странице MyText_2=Будет произведена стандартная установка Extracted=Распаковка — %1 ExtractedFolder=Выбор папки распаковки ExtractedFolder2=В какую папку вы хотите распаковать %1? ExtractedFolder3=Программа распакует %1 в следующую папку. ExtractedFolder4=Программа установит %1 в следующую папку. Installing=Распаковка... InstallingLabel=Пожалуйста, подождите, пока %1 распакуется на ваш компьютер. FinishedHeadingLabel=Завершение распаковки%n%1 FinishedLabelNoIcons=Программа %1 распакована на Ваш компьютер.%n%nНажмите «Завершить», чтобы выйти из программы распаковки. [UninstallDelete] Type: filesandordirs; Name: {app} [code] const DI_NORMAL = 3; var MyNewPage: TWizardPage; Rect: TRect; HIcon: LongInt; AIconFileName: String; MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton; function GetModuleHandle(lpModuleName: LongInt): LongInt; external 'GetModuleHandleA@kernel32.dll stdcall'; function ExtractIcon(hInst: LongInt; lpszExeFileName: AnsiString; nIconIndex: LongInt): LongInt; external 'ExtractIconA@shell32.dll stdcall'; function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur: LongInt; hbrFlickerFreeDraw, diFlags: LongInt): LongInt;external 'DrawIconEx@user32.dll stdcall'; function DestroyIcon(hIcon: LongInt): LongInt; external 'DestroyIcon@user32.dll stdcall'; function IsChecked: Boolean; begin Result:= MyRadioBtn_2.checked; end; procedure RadBtnOnClick(Sender: TObject); begin case Sender of MyRadioBtn_1: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; MyRadioBtn_2: begin WizardForm.Caption:= FmtMessage(SetupMessage(msgSetupWindowTitle), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder4}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; procedure GetInstTypePage(); begin MyNewPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:HeaderLabelPage}'), ExpandConstant('{cm:LabelPage}')); try // в конкретном примере из этого файла (C:\Windows\System32\shell32.dll) берём иконки, для пробного показа. // Можно использовать обычные .ico AIconFileName:= ExpandConstant('{sys}\shell32.dll'); // Rect.Left:= 0; Rect.Top:= 0; Rect.Right:= 32; Rect.Bottom:= 32; hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 26); try with TBitmapImage.Create(WizardForm) do begin Left:= ScaleX(15); Top:= ScaleY(68); Width:= 32; Height:= 32; with Bitmap do begin Width:= 32; Height:= 32; Canvas.Brush.Color:= clBtnFace; Canvas.FillRect(Rect); DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL); end; Parent:= MyNewPage.Surface; end; finally DestroyIcon(hIcon); end; hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 19); try with TBitmapImage.Create(WizardForm) do begin Left:= ScaleX(15); Top:= ScaleY(138); Width:= 32; Height:= 32; with Bitmap do begin Width:= 32; Height:= 32; Canvas.Brush.Color:= clBtnFace; Canvas.FillRect(Rect); DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL); end; Parent:= MyNewPage.Surface; end; finally DestroyIcon(hIcon); end; except end; with TNewStaticText.Create(WizardForm) do begin Width:= WizardForm.InnerNotebook.Width; Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:PageTextHeader}'); Parent:= MyNewPage.Surface; end; MyRadioBtn_1:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_1 do begin Top:= ScaleY(50); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_1}'); OnClick:= @RadBtnOnClick; Parent:= MyNewPage.Surface; end; with TNewStaticText.Create(WizardForm) do begin Left:= ScaleX(60); Top:= ScaleY(68); Width:= WizardForm.InnerNotebook.Width - ScaleX(60); Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_1}'); Parent:= MyNewPage.Surface; end; MyRadioBtn_2:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_2 do begin Top:= ScaleY(120); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_2}'); Checked:= True; OnClick:= @RadBtnOnClick; Parent:= MyNewPage.Surface; end; with TNewStaticText.Create(WizardForm) do begin Left:= ScaleX(60); Top:= ScaleY(138); Width:= WizardForm.InnerNotebook.Width - ScaleX(60); Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_2}'); Parent:= MyNewPage.Surface; end; end; function ShouldSkipPage(PageID: Integer): Boolean; begin if (PageID > wpSelectDir) and (PageID < wpInstalling) and (MyRadioBtn_1.Checked) then Result:= True; end; procedure InitializeWizard(); begin GetInstTypePage(); WizardForm.DiskSpaceLabel.Hide; end; procedure CurPageChanged(CurPageID: Integer); begin if not IsChecked then begin case CurPageID of wpSelectDir: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:ExtractedFolder}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder2}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); if IsChecked then WizardForm.DirEdit.Text := ExpandConstant( '{pf}\{#SetupSetting("AppName")}' ) else WizardForm.DirEdit.Text := ExpandConstant( '{src}\{#SetupSetting("AppName")}' ); end; wpInstalling: begin WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:Installing}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:InstallingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; wpFinished: begin WizardForm.FinishedHeadingLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedHeadingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.FinishedLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedLabelNoIcons}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; end; извините но очень нужно |
vadjliss, Сделайте вот так и все поймете.
Код:
[Files] Цитата:
|
спасибо всё как надо
|
да и ещё не могу понять как поменять иконки на свой
Скрытый текст
[Setup]
AppName=My Program AppVerName=My Program DefaultDirName={pf}\My Program OutputDir=. Uninstallable=IsChecked CreateUninstallRegKey=IsChecked [Languages] Name: ru; MessagesFile: compiler:Languages\Russian.isl; [Tasks] ; Дополнительно ; Ярлык(и) на «Рабочем столе» Name: "desktopicon"; Description: "Ярлык(и) на «Рабочем столе»"; GroupDescription: "Дополнительно:"; Check: IsChecked ; Ярлыки в меню «Пуск» Name: "starticon"; Description: "Ярлыки в меню «Пуск»"; GroupDescription: "Дополнительно:"; Check: IsChecked [Icons] Name: "{group}\My Program"; Filename: "{uninstallexe}"; Tasks: starticon; Check: not IsChecked Name: "{commondesktop}\My Program"; Filename: "{uninstallexe}"; Tasks: desktopicon; Check: IsChecked [Files] ; Файлы для проверки и демонстрации. При реальном использовании - закомментировать или удалить! Source: {win}\Help\*; DestDir: {app}; Flags: external recursesubdirs [CustomMessages] HeaderLabelPage=Выбор типа установки LabelPage=Выберите нужный тип установки MyRadioCaption_1=Распаковка MyRadioCaption_2=Обычная установка PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен. MyText_1=Будет произведена распаковка в паку,%nуказанную на следующей странице MyText_2=Будет произведена стандартная установка Extracted=Распаковка — %1 ExtractedFolder=Выбор папки распаковки ExtractedFolder2=В какую папку вы хотите распаковать %1? ExtractedFolder3=Программа распакует %1 в следующую папку. ExtractedFolder4=Программа установит %1 в следующую папку. Installing=Распаковка... InstallingLabel=Пожалуйста, подождите, пока %1 распакуется на ваш компьютер. FinishedHeadingLabel=Завершение распаковки%n%1 FinishedLabelNoIcons=Программа %1 распакована на Ваш компьютер.%n%nНажмите «Завершить», чтобы выйти из программы распаковки. [UninstallDelete] Type: filesandordirs; Name: {app} [code] const DI_NORMAL = 3; var MyNewPage: TWizardPage; Rect: TRect; HIcon: LongInt; AIconFileName: String; MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton; function GetModuleHandle(lpModuleName: LongInt): LongInt; external 'GetModuleHandleA@kernel32.dll stdcall'; function ExtractIcon(hInst: LongInt; lpszExeFileName: AnsiString; nIconIndex: LongInt): LongInt; external 'ExtractIconA@shell32.dll stdcall'; function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur: LongInt; hbrFlickerFreeDraw, diFlags: LongInt): LongInt;external 'DrawIconEx@user32.dll stdcall'; function DestroyIcon(hIcon: LongInt): LongInt; external 'DestroyIcon@user32.dll stdcall'; function IsChecked: Boolean; begin Result:= MyRadioBtn_2.checked; end; procedure RadBtnOnClick(Sender: TObject); begin case Sender of MyRadioBtn_1: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; MyRadioBtn_2: begin WizardForm.Caption:= FmtMessage(SetupMessage(msgSetupWindowTitle), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder4}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; procedure GetInstTypePage(); begin MyNewPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:HeaderLabelPage}'), ExpandConstant('{cm:LabelPage}')); try // в конкретном примере из этого файла (C:\Windows\System32\shell32.dll) берём иконки, для пробного показа. // Можно использовать обычные .ico AIconFileName:= ExpandConstant('{sys}\shell32.dll'); // Rect.Left:= 0; Rect.Top:= 0; Rect.Right:= 32; Rect.Bottom:= 32; hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 26); try with TBitmapImage.Create(WizardForm) do begin Left:= ScaleX(15); Top:= ScaleY(68); Width:= 32; Height:= 32; with Bitmap do begin Width:= 32; Height:= 32; Canvas.Brush.Color:= clBtnFace; Canvas.FillRect(Rect); DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL); end; Parent:= MyNewPage.Surface; end; finally DestroyIcon(hIcon); end; hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 19); try with TBitmapImage.Create(WizardForm) do begin Left:= ScaleX(15); Top:= ScaleY(138); Width:= 32; Height:= 32; with Bitmap do begin Width:= 32; Height:= 32; Canvas.Brush.Color:= clBtnFace; Canvas.FillRect(Rect); DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL); end; Parent:= MyNewPage.Surface; end; finally DestroyIcon(hIcon); end; except end; with TNewStaticText.Create(WizardForm) do begin Width:= WizardForm.InnerNotebook.Width; Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:PageTextHeader}'); Parent:= MyNewPage.Surface; end; MyRadioBtn_1:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_1 do begin Top:= ScaleY(50); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_1}'); OnClick:= @RadBtnOnClick; Parent:= MyNewPage.Surface; end; with TNewStaticText.Create(WizardForm) do begin Left:= ScaleX(60); Top:= ScaleY(68); Width:= WizardForm.InnerNotebook.Width - ScaleX(60); Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_1}'); Parent:= MyNewPage.Surface; end; MyRadioBtn_2:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_2 do begin Top:= ScaleY(120); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_2}'); Checked:= True; OnClick:= @RadBtnOnClick; Parent:= MyNewPage.Surface; end; with TNewStaticText.Create(WizardForm) do begin Left:= ScaleX(60); Top:= ScaleY(138); Width:= WizardForm.InnerNotebook.Width - ScaleX(60); Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_2}'); Parent:= MyNewPage.Surface; end; end; function ShouldSkipPage(PageID: Integer): Boolean; begin if (PageID > wpSelectDir) and (PageID < wpInstalling) and (MyRadioBtn_1.Checked) then Result:= True; end; procedure InitializeWizard(); begin GetInstTypePage(); WizardForm.DiskSpaceLabel.Hide; end; procedure CurPageChanged(CurPageID: Integer); begin if not IsChecked then begin case CurPageID of wpSelectDir: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:ExtractedFolder}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder2}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); if IsChecked then WizardForm.DirEdit.Text := ExpandConstant( '{pf}\{#SetupSetting("AppName")}' ) else WizardForm.DirEdit.Text := ExpandConstant( '{src}\{#SetupSetting("AppName")}' ); end; wpInstalling: begin WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:Installing}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:InstallingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; wpFinished: begin WizardForm.FinishedHeadingLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedHeadingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.FinishedLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedLabelNoIcons}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; end; |
vadjliss, Пробуйте
http://rghost.ru/7VmP5Z6Yk |
пожалуйста подскажите как реализовать на странице выбора папки - выбор дисков
имеется в виду чтобы выбор был ТОЛЬКО корень дисков доступных в системе |
Доброе время суток. Возможно ли задать кодировку создаваемого ini файла например на utf-8
|
Цитата:
Код:
OutputDir=Папка инсталлятора Код:
OutputDir=. |
извиняюсь я не правильно выразился
при распаковки создаётся 2 исполняемых файла один надо убрать как это можно сделать вот скрин Код:
#define MyAppName "My Program" |
Здесь:
Код:
[Files] Код:
Source: C:\Users\Dilan\Desktop\Output\Новая папка (2)\Новая папка\Новая папка\BlurayConverterUltimate.exe; DestDir: {app}; Flags: ignoreversion |
спасибо Nordek
а, я голову сломал |
vadjliss, Зачем удаляете сообщения? На заметку: Такое действие считается дурным тоном.
Если при вопросе получилось описать не совсем то что имели ввиду, то: могли предыдущее сообщение оставить как есть, а следующим сообщением уточнить. |
|
vadjliss, В [Setup] добавьте VersionInfoDescription.
Пример: Код:
VersionInfoDescription=Описание |
спасибо как всегда оперативно Nordek
нашёл вот этот скрипт Код:
#define MainExe "{app}\Bin32\crysis.exe" как его правильно вмонтировать сюда Код:
#define MyAppName "My Program" |
vadjliss, Пример:
Код:
#define MyAppName "My Program" |
неужели никто не знает
Цитата:
а хотелось бы устанавливать приложение только в корень любого диска (включая съёмные носители) на форуме и не только на этом нашёл много полезного, но не то что нужно,а вот квалификации написать скрипт самому не хватает требуется квалифицированная помощь :help: |
|
если такой
Код:
var |
Nordek, vadjliss, спасибо - буду пробовать
|
vadjliss, нет это не то, мне необходимо без возможности выбора папок
Nordek, в примерах по ссылкам ошибки компиляции, но зато я знаю чего искать в файлах примеров |
парни помогите с этим скриптом
мне нужно что бы было только портативная распаковка [code] [Setup] AppName=My Program AppVerName=My Program DefaultDirName={pf}\My Program OutputDir=. Uninstallable=IsChecked CreateUninstallRegKey=IsChecked [Languages] Name: ru; MessagesFile: compiler:Languages\Russian.isl; [Tasks] ; Дополнительно ; Ярлык(и) на «Рабочем столе» Name: "desktopicon"; Description: "Ярлык(и) на «Рабочем столе»"; GroupDescription: "Дополнительно:"; Check: IsChecked ; Ярлыки в меню «Пуск» Name: "starticon"; Description: "Ярлыки в меню «Пуск»"; GroupDescription: "Дополнительно:"; Check: IsChecked [Icons] Name: "{group}\My Program"; Filename: "{uninstallexe}"; Tasks: starticon; Check: not IsChecked Name: "{commondesktop}\My Program"; Filename: "{uninstallexe}"; Tasks: desktopicon; Check: IsChecked [Files] //папка портабл Source: "C:\Users\Desktop\Output\InstallFiles\*"; DestDir: "{app}"; Check: "not IsChecked"; Flags: ignoreversion createallsubdirs recursesubdirs Source: "C:\Users\Desktop\Output\InstallFiles\*"; DestDir: "{app}"; Check: "IsChecked"; Flags: ignoreversion createallsubdirs recursesubdirs ; Файлы для проверки и демонстрации. При реальном использовании - закомментировать или удалить! ;Source: {win}\Help\*; DestDir: {app}; Flags: external recursesubdirs [CustomMessages] HeaderLabelPage=Выбор типа установки LabelPage=Выберите нужный тип установки MyRadioCaption_1=Распаковка MyRadioCaption_2=Обычная установка PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен. MyText_1=Будет произведена распаковка в паку,%nуказанную на следующей странице MyText_2=Будет произведена стандартная установка Extracted=Распаковка — %1 ExtractedFolder=Выбор папки распаковки ExtractedFolder2=В какую папку вы хотите распаковать %1? ExtractedFolder3=Программа распакует %1 в следующую папку. ExtractedFolder4=Программа установит %1 в следующую папку. Installing=Распаковка... InstallingLabel=Пожалуйста, подождите, пока %1 распакуется на ваш компьютер. FinishedHeadingLabel=Завершение распаковки%n%1 FinishedLabelNoIcons=Программа %1 распакована на Ваш компьютер.%n%nНажмите «Завершить», чтобы выйти из программы распаковки. [UninstallDelete] Type: filesandordirs; Name: {app} Код:
const |
знающие подскажите где правятся надписи в форме выбора папок
например: Если вы хотите выбрать другую папку, нажмите "Обзор" |
парни помогите с этим скриптом
мне нужно что бы было только портативная распаковка Код:
const |
Помогите пож. как исправить ошибку.
Код для добавления / удаления программ из правил брандмауэра Windows: Компилируется норм но при установке вылетает ошибка: http://rghost.ru/8sbhcHrMW/image.png Компилирую стандартным Ansi |
Цитата:
В [Setup] добавьте Код:
Uninstallable=false Цитата:
Код:
[Messages] Код:
[CustomMessages] |
ROMKA-1977, Пробуйте. Проверял на Ansi - Unicode, от Restools
Скрытый текст
Код:
|
Здравствуйте! Перепаковал для себя программу InnoExtractor , используя наработки с форума, но никак не пойму как добавить в скрипт ключи для тихой установки: стандартная и портативная. Например, ключ (/VERYSILENT /Standart) - обычная установка, а ключ (/VERYSILENT /Portable) - портативная установка.
скрипт
[Setup]
#define AppExe "{app}\InnoExtractor.exe" #define AppVer GetFileVersion(AddBackslash(SourcePath) + AppExe) #define AppName "InnoExtractor" #define AppPub "(моя сборка)" #define AppURL "http://www.havysoft.cl/" AppName = {#AppName} AppPublisher = {#AppPub} AppPublisherURL = {#AppURL} UninstallDisplayIcon = {#AppExe} DefaultDirName = {pf}\{#AppName} DefaultGroupName = {#AppName} AppVersion = {#AppVer} VersionInfoVersion = {#AppVer} OutputBaseFilename = Setup_{#AppName} WizardImageFile=embedded\WizardImage.bmp WizardSmallImageFile=embedded\WizardSmallImage.bmp Uninstallable=IsChecked CreateUninstallRegKey=IsChecked [Languages] Name: ru; MessagesFile: compiler:Languages\Russian.isl; [Tasks] Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Check: IsChecked Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked; Check: IsChecked Name: context; Description: "Добавить {#AppName} в контекстное меню Проводника"; GroupDescription: {cm:AdditionalSetting}; Check: IsChecked [Registry] Root: HKCR; SubKey: exefile\shell\{#AppName}; ValueType: string; ValueData: "Открыть в {#AppName}"; Tasks: context; Flags: uninsdeletevalue uninsdeletekeyifempty Root: HKCR; SubKey: exefile\shell\{#AppName}; ValueType: string; ValueName: Icon; ValueData: {#AppExe},0; Tasks: context; Flags: uninsdeletevalue uninsdeletekeyifempty Root: HKCR; SubKey: exefile\shell\{#AppName}\command; ValueType: string; ValueData: """{#AppExe}"" ""%1"""; Tasks: context; Flags: uninsdeletevalue uninsdeletekeyifempty [Icons] Name: "{group}\{#AppName}"; Filename: "{#AppExe}"; Check: "IsChecked"; MinVersion: 0.0,5.0; Name: "{group}\{cm:UninstallProgram,{#AppName}}"; Filename: "{uninstallexe}"; Check: "IsChecked"; MinVersion: 0.0,5.0; Name: "{commondesktop}\{#AppName}"; Filename: "{#AppExe}"; Check: "IsChecked"; MinVersion: 0.0,5.0; Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#AppName}"; Filename: "{#AppExe}"; Check: "IsChecked"; MinVersion: 0.0,5.0; OnlyBelowVersion: 0.0,6.01; [Files] Source: "{app}\7z.dll"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion Source: "{app}\7z.e32"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion Source: "{app}\7zSD.e32"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion Source: "{app}\Init.dat"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: restartreplace overwritereadonly ignoreversion uninsremovereadonly Source: "{app}\InnoExtractor.exe"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion Source: "{app}\Innounp.e32"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion Source: "{app}\Rops.e32"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion Source: "{app}\Idiomas\English.lng"; DestDir: "{app}\Idiomas"; MinVersion: 0.0,5.0; Flags: ignoreversion Source: "{app}\Idiomas\Russian.lng"; DestDir: "{app}\Idiomas"; MinVersion: 0.0,5.0; Flags: ignoreversion Source: "{app}\Idiomas\Spanish.lng"; DestDir: "{app}\Idiomas"; MinVersion: 0.0,5.0; Flags: ignoreversion Source: "{userappdata}\InnoExtractor\Config.ini"; DestDir: "{userappdata}\InnoExtractor"; Check: "IsChecked"; MinVersion: 0.0,5.0; Flags: ignoreversion Source: "{app}\Config.ini"; DestDir: "{app}"; Check: "not IsChecked"; MinVersion: 0.0,5.0; Flags: ignoreversion [CustomMessages] AdditionalSetting=Дополнительные настройки: HeaderLabelPage=Выбор типа установки LabelPage=Выберите нужный тип установки MyRadioCaption_1=Распаковка MyRadioCaption_2=Обычная установка PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен. MyText_1=Будет произведена распаковка в папку, указанную на следующей странице MyText_2=Будет произведена стандартная установка Extracted=Распаковка — %1 ExtractedFolder=Выбор папки распаковки ExtractedFolder2=В какую папку вы хотите распаковать %1? ExtractedFolder3=Программа распакует %1 в следующую папку. ExtractedFolder4=Программа установит %1 в следующую папку. Installing=Распаковка... InstallingLabel=Пожалуйста, подождите, пока %1 распакуется на ваш компьютер. FinishedHeadingLabel=Завершение распаковки%n%1 FinishedLabelNoIcons=Программа %1 распакована на Ваш компьютер.%n%nНажмите «Завершить», чтобы выйти из программы распаковки. [UninstallDelete] Type: filesandordirs; Name: {app} [code] /// var MyNewPage: TWizardPage; BitmapImage1,BitmapImage2: TBitmapImage; MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton; function IsChecked: Boolean; begin Result:= MyRadioBtn_2.checked; end; procedure RadBtnOnClick(Sender: TObject); begin case Sender of MyRadioBtn_1: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; MyRadioBtn_2: begin WizardForm.Caption:= FmtMessage(SetupMessage(msgSetupWindowTitle), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder4}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; procedure GetInstTypePage(); begin MyNewPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:HeaderLabelPage}'), ExpandConstant('{cm:LabelPage}')); with TNewStaticText.Create(WizardForm) do begin Width:= WizardForm.InnerNotebook.Width; Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:PageTextHeader}'); Parent:= MyNewPage.Surface; end; MyRadioBtn_1:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_1 do begin Top:= ScaleY(50); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_1}'); OnClick:= @RadBtnOnClick; Parent:= MyNewPage.Surface; end; with TNewStaticText.Create(WizardForm) do begin Top:= ScaleY(68); Width:= WizardForm.InnerNotebook; Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_1}'); Parent:= MyNewPage.Surface; end; MyRadioBtn_2:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_2 do begin Top:= ScaleY(100); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_2}'); Checked:= True; OnClick:= @RadBtnOnClick; Parent:= MyNewPage.Surface; end; with TNewStaticText.Create(WizardForm) do begin Top:= ScaleY(118); Width:= WizardForm.InnerNotebook; Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_2}'); Parent:= MyNewPage.Surface; end; end; function ShouldSkipPage(PageID: Integer): Boolean; begin if (PageID > wpSelectDir) and (PageID < wpInstalling) and (MyRadioBtn_1.Checked) then Result:= True; end; procedure InitializeWizard(); begin GetInstTypePage(); WizardForm.DiskSpaceLabel.Hide; end; procedure CurPageChanged(CurPageID: Integer); begin if not IsChecked then begin case CurPageID of wpSelectDir: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:ExtractedFolder}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder2}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); if IsChecked then WizardForm.DirEdit.Text := ExpandConstant( '{pf}\{#SetupSetting("AppName")}' ) else WizardForm.DirEdit.Text := ExpandConstant( '{sd}\Portable_Soft\{#SetupSetting("AppName")}' ); end; wpInstalling: begin WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:Installing}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:InstallingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; wpFinished: begin WizardForm.FinishedHeadingLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedHeadingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.FinishedLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedLabelNoIcons}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; end; |
AlexM22204, Вот изучайте мой скрипт
http://goo.gl/crKGe3 |
habib2302, спасибо за пример, кое-что подсмотрел :cool:
Цитата:
|
Вложений: 1
Файл 127825 в этой форме скрыта кнопка обзор
подскажите как удлинить поле ввода (по жирной стрелке) [code] Код:
var |
us_ov, Примерно так
Скрытый текст
Код:
var |
TryRooM, СПАСИБО!
|
|
vadjliss,
[Setup] ;AllowNoIcons=yes не создавать папку в меню пуск Вы закомментировали? Посмотрите, у вас в коде нет этого. var No_Icons_CheckBox: TNewCheckBox; |
TryRooM
[Setup] ;AllowNoIcons=yes не создавать папку в меню пуск не отключает |
vadjliss, Удалите:
Код:
AllowNoIcons=yes Код:
AllowNoIcons=no |
Здравствуйте.
Решил сделать слайдшоу, нашел пример с использованием isgsg.dll: А можно ли как нибудь прописать показ изображений с помощью цикла - чтобы Inno сам формировал себе список для слайдшоу из изображений, которые найдёт в папке {tmp} ? |
|
Цитата:
Скрипт
Код:
#define gameid "{11110000-2222-3333-4444-555500000000}" |
Цитата:
не отображаются надписи ред установкой необходимо удалить предыдущую версию приложения. Удалить? Удаление предыдущей версии приложения завершилось неудачей. |
Цитата:
|
Цитата:
Пример почти как на скрине. Зачем вам такой велосипед?
Код:
#define MyAppName "Test" Так как на скрине не получится, потому что надо генерировать новый идентификатор программы(AppID). |
vadjliss,
Код:
[Setup] |
habib2302, я уже предлагал vadjliss использовать этот пример (на предыдущей странице), но он ответил, что скрипт у него не работает.
Надеюсь, что Dodakaedr ему поможет. |
Цитата:
У меня работает, у vadjliss не работает - Вопрос: Почему? Может всё-таки проблема в этом [Code_] (Отметил красным), которое vadjliss не удалил? Читайте. |
Sotonisto, ну вы сами видите, что постоянно вопросы задает те, которые легко решаются поиском по темам в печатной версии особенно про портативну. я ему дал легки код и спасибо не сказал. может он appid не сменил или код не правильно вставил. хотя смотрю он пишет, что не отображается текст в msgbox. значит забыл сменить название языка в разделе [CustomMessages] и в [Languages] с rus на свой
|
Цитата:
Код:
[Run] |
Lanirius, используйте IsWin64
Через секцию Code
Код:
if IsWin64 then Через секцию Run
Код:
[Run] |
boss911, Спасибо, работает, однако мне надо что-бы тот файл запускался от администратора (иначе не запускает его). Ну или сам сетапник надо запускать от админа... не подскажите где это надо прописать?
|
Цитата:
Код:
[Setup] |
Dodakaedr, Спасибо
|
поменял координаты почти всего в procedure InitializeWizard
добавил стекло ISWIN7, окно черное, только кнопки на стекле, подскажите что добавить или указать правильно вот пример мой небольшой Скрытый текст
Код:
procedure InitializeWizard; |
кто сможет вот это выложить http://forum.oszone.net/post-2137995-275.html
решил опять заняться. все растерял без всяких выкрутасов, все по дефолту |
парни что за папка APPDIR
и как её прописать подскажите и покажите пожалуйста |
audiofeel, Комплект, упаковщики - распаковщики.
http://rghost.ru/85k69DsmC |
|
Чем правильно заменить выделенную область что бы вносились данные в реестр под любым SID и на любом компьютере:
Root: HKU; SubKey: S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-XXXX\Software |
Sobol37,
HKU и HKCU это одно и тоже |
Ага. Теперь я понял. Если его прописать в HKCU то те же данные появляются и в HKU. Мне просто нужно было что бы при удалении программы удалялись и данные с HKU. Причём эти данные появляются не при инсталляции самой программы, а при первом её запуске и появляются они только в HKU. В HKCU их нет. При деинсталляции программы данные в HKU просто оставались в реестре и мусорили его. Вот я решил их заблаговременно прописать дабы не мусорить лишний раз.
|
Sobol37, вот возьмите и сравните один раздел. допустим run
http://forum.oszone.net/post-2104385-1795.html |
Мне вот интересно каким образом программа вносит при первом запуске данные в раздел HKU минуя раздел HKCU.
|
Sobol37, Если для удаления мусора попробуйте этот код
http://forum.oszone.net/post-2519766-719.html |
Сделал проще. Просто внёс все те данные что программа создаёт при первом запуске в скрипт. Теперь при деинсталляции эти данные будут автоматически удалены из реестра. Там всё равно прописываются
стандартные режимы работы (разрешение экрана и т.п.), поэтому вряд ли будут конфликты если на другой машине её инсталлировать. Большое спасибо за наводку, а то со вчерашнего дня мучался с кодом. |
Sobol37, пож
|
подскажите почему у меня не включаются программы в основной пакет
если кто знает исправьте скрипт
Код:
[Setup] |
Подскажите пожалуйста, как сделать если выбран русский язык установщика, то компонент выбирался один, если выбрать английский язык установщика то компонент выбирался другой.
Вот пример моего кода: Код:
[Languages] а надо чтобы при выборе английского языка, компонент выбирался: "Name: ENG" |
|
qwea234, если выбран русский язык установщика, то компонент выбирался один, если выбрать английский язык установщика то компонент выбирался другой.
Код:
[Components] |
TryRooM, Хорошая идея и возьму на заметку, но немного другая задача была, видать не полностью расписал.
Смотрите нужно чтобы отображалось два пункта RUS, ENG в установке компонента, но если выбран русский, то активный компонент был RUS, а если выбран интерфейс инсталлятора английский то на странице компоненты было два выбора языка но активный был ENG. |
Цитата:
Код:
[setup] |
Dodakaedr, Благодарю - работает.
|
ребята помогите кто может исправте скрипт
когда устанавливаю все 3 программы всё нормально но когда снимаю галочки с 2 или 1 программ выдаёт ошибку (типо не найдена программа с которых снял галочки) всё перепробЫвал ну ни как скрипт
[Setup] AppName=Браузеры AppVersion=2.0 AppVerName=2.0 SetupIconFile=C:\Users\WWW\Desktop\скрипт\image\1.ico VersionInfoDescription=Браузеры 2.0 OutputDir=C:\Users\WWW\Desktop\скрипт Compression=lzma2/ultra64 SolidCompression=true InternalCompressLevel=ultra WizardImageFile=image\portable.bmp WizardSmallImageFile=image\portable2.bmp Uninstallable=IsChecked CreateUninstallRegKey=IsChecked DisableReadyPage=True DisableReadyMemo=True CreateAppDir=False UsePreviousGroup=False DisableProgramGroupPage=yes CompressionThreads=2 [Languages] Name: ru; MessagesFile: compiler:Languages\Russian.isl; [Files] ;Source: "C:\Users\WWW\Desktop\скрипт\soft\*"; DestDir: "{app}"; Check: "not IsChecked"; Flags: ignoreversion createallsubdirs recursesubdirs Source: dll\BASS.dll; DestDir: {tmp}; Flags: dontcopy noencryption nocompression Source: Sound\sound.mp3; DestDir: {tmp}; Flags: dontcopy noencryption nocompression Source: image\Splash.png; Flags: dontcopy Source: dll\isgsg.dll; Flags: dontcopy Source: dll\VclStylesinno.dll; DestDir: {app}; Flags: dontcopy Source: CobaltXEMedia.vsf; DestDir: {app}; Flags: dontcopy Source: image\portable.bmp; DestDir: {tmp}; Flags: dontcopy Source: soft\Chromodo Browser 44.5.7.268.exe; Components: ChromodoBrowser; DestDir: "{tmp}" Source: soft\Google Chrome 44.0.2403.157 Stable 64.exe; Components: GoogleChrome; DestDir: "{tmp}" Source: soft\Google Chrome 44.0.2403.157 Stable.exe; Components: GoogleChrome; DestDir: "{tmp}" [CustomMessages] MyRadioCaption_1=Распаковка MyText_1=Будет произведена распаковка в паку,%nуказанную на следующей странице Extracted=Распаковка — %1 ExtractedFolder=Выбор папки распаковки ExtractedFolder2=В какую папку вы хотите распаковать %1? ExtractedFolder3=Программа распакует %1 в следующую папку. Installing=Распаковка... InstallingLabel=Пожалуйста, подождите, пока %1 установится на ваш компьютер. FinishedHeadingLabel=Завершение распаковки%n%1 FinishedLabelNoIcons=Программа %1 распакована на Ваш компьютер.%n%nНажмите «Завершить», чтобы выйти из программы распаковки. [UninstallDelete] Type: filesandordirs; Name: {app} [Types] Name: "polnaya"; Description: "Полная установка" Name: "viborochnaya"; Description: "Выборочная установка"; Flags: iscustom [Components] Name: "ChromodoBrowser"; Description: "Chromodo Browser 44.5.7.268"; Types: polnaya viborochnaya Name: "GoogleChrome"; Description: "Google Chrome 44.0.2403.157 Stable 64"; Types: polnaya viborochnaya Name: "GoogleChrome"; Description: "Google Chrome 44.0.2403.157 Stable"; Types: polnaya viborochnaya [Run] FileName: "{tmp}\Chromodo Browser 44.5.7.268.exe"; StatusMsg: "Выполнение программы Chromodo Browser 44.5.7.268"; Flags: skipifsilent hidewizard FileName: "{tmp}\Google Chrome 44.0.2403.157 Stable 64.exe"; StatusMsg: "Выполнение программы Google Chrome 44.0.2403.157 Stable 64"; Flags: skipifsilent hidewizard FileName: "{tmp}\Google Chrome 44.0.2403.157 Stable.exe"; StatusMsg: "Выполнение программы Google Chrome 44.0.2403.157 Stable"; Flags: skipifsilent hidewizard [code] { RedesignWizardFormBegin } // Не удалять эту строку! // Не изменять эту секцию. Она создана автоматически. procedure RedesignWizardForm; begin with WizardForm.WelcomeLabel2 do begin Caption := ''; end; with WizardForm.WelcomeLabel1 do begin Caption := ''; end; with WizardForm.WizardBitmapImage2 do begin Width := ScaleX(500); end; with WizardForm.RunList do begin Left := ScaleX(477); Top := ScaleY(299); Width := ScaleX(0); Height := ScaleY(6); end; with WizardForm.NoRadio do begin Left := ScaleX(16); Top := ScaleY(313); Width := ScaleX(13); Height := ScaleY(9); Caption := ''; end; with WizardForm.YesRadio do begin Left := ScaleX(477); Width := ScaleX(3); Caption := ''; end; with WizardForm.FinishedLabel do begin Caption := ''; Left := ScaleX(477); Top := ScaleY(151); Width := ScaleX(0); Height := ScaleY(12); end; with WizardForm.FinishedHeadingLabel do begin Caption := ''; Left := ScaleX(477); Top := ScaleY(312); Width := ScaleX(12); Height := ScaleY(2); end; { ReservationBegin } // Вы можете добавить ваш код здесь. { ReservationEnd } end; // Не изменять эту секцию. Она создана автоматически. { RedesignWizardFormEnd } // Не удалять эту строку! //картинка var WelcomeLabel1, WelcomeLabel2, FinishedLabel, FinishedHeadingLabel: TLabel; procedure InitializeWizard3(); begin ExtractTemporaryFile('portable.bmp'); WizardForm.WizardBitmapImage.Width:= ScaleX(500); WizardForm.WizardBitmapImage2.Width:= ScaleX(314); WizardForm.WizardBitmapImage2.Bitmap.LoadFromFile(ExpandConstant('{tmp}\portable.bmp')); WelcomeLabel1:= TLabel.Create(WizardForm); WelcomeLabel1.AutoSize:= False; with WizardForm.WelcomeLabel1 do WelcomeLabel1.SetBounds(Left, Top, Width, Height); WelcomeLabel1.Font:= WizardForm.WelcomeLabel1.Font WelcomeLabel1.Font.Color:= clWhite; WelcomeLabel1.Transparent:= True; WelcomeLabel1.WordWrap:= true; WelcomeLabel1.Caption:= WizardForm.WelcomeLabel1.Caption; WelcomeLabel1.Parent:= WizardForm.WelcomePage WelcomeLabel2:= TLabel.Create(WizardForm); WelcomeLabel2.AutoSize:= False; with WizardForm.WelcomeLabel2 do WelcomeLabel2.SetBounds(Left, Top, Width, Height); WelcomeLabel2.Font:= WizardForm.WelcomeLabel2.Font WelcomeLabel2.Font.Color:= clWhite; WelcomeLabel2.Transparent:= True; WelcomeLabel2.WordWrap:= true; WelcomeLabel2.Caption:= WizardForm.WelcomeLabel2.Caption; WelcomeLabel2.Parent:= WizardForm.WelcomePage FinishedHeadingLabel:= TLabel.Create(WizardForm); FinishedHeadingLabel.AutoSize:= False; with WizardForm.FinishedHeadingLabel do FinishedHeadingLabel.SetBounds(Left, Top, Width, Height); FinishedHeadingLabel.Font:= WizardForm.FinishedHeadingLabel.Font FinishedHeadingLabel.Font.Color:= clWhite; FinishedHeadingLabel.Transparent:= True; FinishedHeadingLabel.WordWrap:= true; FinishedHeadingLabel.Caption:= WizardForm.FinishedHeadingLabel.Caption; FinishedHeadingLabel.Parent:= WizardForm.FinishedPage FinishedLabel:= TLabel.Create(WizardForm); FinishedLabel.AutoSize:= False; with WizardForm.FinishedLabel do FinishedLabel.SetBounds(Left, Top, Width, Height); FinishedLabel.Font:= WizardForm.FinishedLabel.Font FinishedLabel.Font.Color:= clWhite; FinishedLabel.Transparent:= True; FinishedLabel.WordWrap:= true; FinishedLabel.Caption:= WizardForm.FinishedLabel.Caption; FinishedLabel.Parent:= WizardForm.FinishedPage WizardForm.WelcomeLabel1.Hide; WizardForm.WelcomeLabel2.Hide; WizardForm.FinishedLabel.Hide; WizardForm.FinishedHeadingLabel.Hide; end; procedure CurPageChanged1(CurPageID: Integer); begin FinishedLabel.Caption:= WizardForm.FinishedLabel.Caption; end; // procedure WelcomeLabel1Click(Sender: TObject); forward; procedure RedesignWizardForm6; begin with WizardForm do begin Caption := 'Dilan'; end; with WizardForm.WelcomeLabel2 do begin Top := ScaleY(310); Width := ScaleX(101); Height := ScaleY(1); end; with WizardForm.WelcomeLabel1 do begin Caption := 'Распаковка программы' + #13#10 + ''; OnClick := @WelcomeLabel1Click; Top := ScaleY(72); end; end; procedure WelcomeLabel1Click(Sender: TObject); begin end; const DI_NORMAL = 3; var MyNewPage: TWizardPage; Rect: TRect; HIcon: LongInt; AIconFileName: String; MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton; function GetModuleHandle(lpModuleName: LongInt): LongInt; external 'GetModuleHandleA@kernel32.dll stdcall'; function ExtractIcon(hInst: LongInt; lpszExeFileName: AnsiString; nIconIndex: LongInt): LongInt; external 'ExtractIconA@shell32.dll stdcall'; function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur: LongInt; hbrFlickerFreeDraw, diFlags: LongInt): LongInt;external 'DrawIconEx@user32.dll stdcall'; function DestroyIcon(hIcon: LongInt): LongInt; external 'DestroyIcon@user32.dll stdcall'; function IsChecked: Boolean; begin Result:= MyRadioBtn_1.checked; end; procedure RadBtnOnClick(Sender: TObject); begin case Sender of MyRadioBtn_1: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; procedure GetInstTypePage(); begin try AIconFileName:= ExpandConstant('{sys}\shell32.dll'); Rect.Left:= 0; Rect.Top:= 0; Rect.Right:= 32; Rect.Bottom:= 32; hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 26); try with TBitmapImage.Create(WizardForm) do begin Left:= ScaleX(15); Top:= ScaleY(68); Width:= 32; Height:= 32; with Bitmap do begin Width:= 32; Height:= 32; Canvas.Brush.Color:= clBtnFace; Canvas.FillRect(Rect); DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL); end; end; finally DestroyIcon(hIcon); end; finally DestroyIcon(hIcon); end; with TNewStaticText.Create(WizardForm) do begin Width:= WizardForm.InnerNotebook.Width; Height:= ScaleY(26); WordWrap:= True; end; MyRadioBtn_1:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_1 do begin Top:= ScaleY(50); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_1}'); OnClick:= @RadBtnOnClick; end; with TNewStaticText.Create(WizardForm) do begin Left:= ScaleX(60); Top:= ScaleY(68); Width:= WizardForm.InnerNotebook.Width - ScaleX(60); Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_1}'); end; end; function ShouldSkipPage(PageID: Integer): Boolean; begin if (PageID > wpSelectDir) and (PageID < wpInstalling) and (MyRadioBtn_1.Checked) then Result:= True; end; procedure InitializeWizard5(); begin RedesignWizardForm; GetInstTypePage(); WizardForm.DiskSpaceLabel.Hide; end; procedure CurPageChanged(CurPageID: Integer); begin if not IsChecked then begin case CurPageID of wpSelectDir: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:ExtractedFolder}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder2}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); if IsChecked then WizardForm.DirEdit.Text := ExpandConstant( '{pf}\{#SetupSetting("AppName")}' ) else WizardForm.DirEdit.Text := ExpandConstant( '{src}\{#SetupSetting("AppName")}' ); end; wpInstalling: begin WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:Installing}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:InstallingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; wpFinished: begin WizardForm.FinishedHeadingLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedHeadingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.FinishedLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedLabelNoIcons}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; end; // переход на сайт procedure CurStepChanged(CurStep: TSetupStep); var ErrorCode: Integer; begin If CurStep = ssDone then begin ShellExec('open', 'http://dilan.at.ua/', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode) end; end; // скин procedure LoadVCLStyle(VClStyleFile: String); external 'LoadVCLStyleW@files:VclStylesInno.dll stdcall'; procedure UnLoadVCLStyles; external 'UnLoadVCLStyles@files:VclStylesInno.dll stdcall'; function InitializeSetup(): Boolean; begin ExtractTemporaryFile('CobaltXEMedia.vsf'); LoadVCLStyle(ExpandConstant('{tmp}\CobaltXEMedia.vsf')); Result := True; end; var MouseLabel,SiteLabel: TLabel; procedure SiteLabelOnClick(Sender: TObject); var ErrorCode: Integer; begin ShellExec('open', 'http://dilan.at.ua/', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode) end; procedure SiteLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin SiteLabel.Font.Color:=clRed end; procedure SiteLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin SiteLabel.Font.Color:=clBlue end; procedure SiteLabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin SiteLabel.Font.Color:=clGreen end; procedure SiteLabelMouseMove2(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin SiteLabel.Font.Color:=clBlue end; procedure InitializeWizard1(); begin MouseLabel:=TLabel.Create(WizardForm) MouseLabel.Width:=WizardForm.Width MouseLabel.Height:=WizardForm.Height MouseLabel.Autosize:=False MouseLabel.Transparent:=True MouseLabel.OnMouseMove:=@SiteLabelMouseMove2 MouseLabel.Parent:=WizardForm SiteLabel:=TLabel.Create(WizardForm) SiteLabel.Left:=10 SiteLabel.Top:=330 SiteLabel.Cursor:=crHand SiteLabel.Font.Color:=clBlue SiteLabel.Caption:='RePack by Dilan' SiteLabel.OnClick:=@SiteLabelOnClick SiteLabel.OnMouseDown:=@SiteLabelMouseDown SiteLabel.OnMouseUp:=@SiteLabelMouseUp SiteLabel.OnMouseMove:=@SiteLabelMouseMove SiteLabel.Parent:=WizardForm end; // Splash procedure ShowSplashScreen(p1:HWND;p2:AnsiString;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload'; procedure InitializeWizard2; begin ExtractTemporaryFile('Splash.png'); ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}\Splash.png'),1000,3000,1000,0,255,True,$FFF FFF,10); end; const BASS_SAMPLE_LOOP = 4; var mp3Handle: HWND; mp3Name: String; function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean; external 'BASS_Init@files:BASS.dll stdcall delayload'; function BASS_StreamCreateFile(mem: BOOL; f: PAnsiChar; offset1: DWORD; offset2: DWORD; length1: DWORD; length2: DWORD; flags: DWORD): DWORD; external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload'; function BASS_Start: Boolean; external 'BASS_Start@files:BASS.dll stdcall delayload'; function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean; external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload'; function BASS_Stop: Boolean; external 'BASS_Stop@files:BASS.dll stdcall delayload'; function BASS_Free: Boolean; external 'BASS_Free@files:BASS.dll stdcall delayload'; function InitializeSetup4(): Boolean; begin ExtractTemporaryFile('BASS.dll'); ExtractTemporaryFile('sound.mp3'); mp3Name := ExpandConstant('{tmp}\sound.mp3'); BASS_Init(-1, 44100, 0, 0, 0); mp3Handle := BASS_StreamCreateFile(FALSE, PAnsiChar(mp3Name), 0, 0, 0, 0, BASS_SAMPLE_LOOP); BASS_Start(); BASS_ChannelPlay(mp3Handle, False); Result := True; end; procedure InitializeWizard7(); begin WizardForm.FilenameLabel.Hide //Прячем извлекаемые файлы WizardForm.ProgressGauge.Hide //Прячем прогресс-бар end; procedure InitializeWizard(); begin RedesignWizardForm; InitializeWizard1(); InitializeWizard2; InitializeWizard3(); InitializeSetup4() InitializeWizard5(); RedesignWizardForm6; InitializeWizard7(); end; procedure DeinitializeSetup(); begin BASS_Stop(); BASS_Free(); UnLoadVCLStyles; end; [ISFormDesigner] WizardForm=FF0A005457495A415244464F524D0030100505000054504630F10B5457697A617264466F726D0A57697A61726 4466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C656674020 00B4578706C69636974546F7002000D4578706C6963697457696474680301020E4578706C69636974486569676874038F010 D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724 E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D65506167650D4578706C6963697457696 4746803F1010E4578706C6963697448656967687403390100F10E544E6577537461746963546578740D57656C636F6D654C6 162656C320743617074696F6E12000000000000F10E544E6577537461746963546578740D57656C636F6D654C6162656C310 743617074696F6E1200000000000000F110544E65774E6F7465626F6F6B5061676509496E6E6572506167650D4578706C696 36974576964746803F1010E4578706C6963697448656967687403390100F10C544E65774E6F7465626F6F6B0D496E6E65724 E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650E496E7374616C6C696E67506167650D4578706C6963697 4576964746803A1010E4578706C6963697448656967687403ED0000000000F110544E65774E6F7465626F6F6B506167650C4 6696E6973686564506167650B4578706C69636974546F7002400D4578706C69636974576964746803F1010E4578706C69636 97448656967687403390100F10C544269746D6170496D6167651257697A6172644269746D6170496D6167653205576964746 803F4010D4578706C69636974576964746803F4010000F110544E6577436865636B4C697374426F780752756E4C697374044 C65667403DD0103546F70032B0105576964746802000648656967687402060C4578706C696369744C65667403DD010B45787 06C69636974546F70032B010D4578706C69636974576964746802000E4578706C6963697448656967687402060000F10F544 E6577526164696F427574746F6E074E6F526164696F044C656674021003546F70033901055769647468020D0648656967687 402090743617074696F6E12000000000C4578706C696369744C65667402100B4578706C69636974546F700339010D4578706 C696369745769647468020D0E4578706C6963697448656967687402090000F10F544E6577526164696F427574746F6E08596 573526164696F044C65667403DD0105576964746802030743617074696F6E12000000000C4578706C696369744C65667403D D010D4578706C69636974576964746802030000F10E544E6577537461746963546578740D46696E69736865644C6162656C0 44C65667403DD0103546F70039700055769647468020006486569676874020C0743617074696F6E12000000000C4578706C6 96369744C65667403DD010B4578706C69636974546F700397000D4578706C69636974576964746802000E4578706C6963697 4486569676874020C0000F10E544E6577537461746963546578741446696E697368656448656164696E674C6162656C044C6 5667403DD0103546F70033801055769647468020C0648656967687402020743617074696F6E12000000000C4578706C69636 9744C65667403DD010B4578706C69636974546F700338010D4578706C696369745769647468020C0E4578706C69636974486 56967687402020000000000 |
Цитата:
Код:
[Files] |
Dodakaedr спасибо :clapping:
|
почему при компиляции версия файла всегда 0.0.0.0
скрипт
#define MyAppName "Acronis True Image 2016" #define MyAppVersion "19.0 Build 5586" #define MyAppPublisher "Acronis" #define MyAppURL "" #define MyAppExeName "TrueImageLauncher.exe" [Setup] AppId={{2F983EE9-A521-4D68-83F4-626DEC61E945} AppName={#MyAppName} AppVersion={#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} VersionInfoDescription=Acronis True Image 2016 19.0 Build 5586 OutputDir=C:\Users\\WWW\Desktop\скрипт OutputBaseFilename=Acronis True Image 2016 19.0 Build 5586 SetupIconFile=C:\Users\\WWW\Desktop\скрипт\image\1.ico PrivilegesRequired=admin Compression=lzma/ultra64 SolidCompression=true InternalCompressLevel=ultra64 WizardImageFile=image\1.bmp WizardSmallImageFile=image\2.bmp UsePreviousGroup=False DisableProgramGroupPage=yes |
vadjliss,
Цитата:
AppVersion=1.5 VersionInfoVersion=1.0 где "AppVersion" это - Версия файла и VersionInfoVersion это Версия продукта (так же будет видна в Панели управления "Программы и компоненты" |
господа состоятельные кроты
подскажите, как определить установлен ли вкредист2013 http://www.microsoft.com/ru-ru/downl....aspx?id=40784 этот способ не прокатывает тк МС в великой мудрости сменила инсталлер с MSI на что-то другое |
затупил
как удалить последний символ в строке если это '.' |
R.i.m.s.k.y., как определить установлен ли вкредист2013
а по ключу Uninstall не прокатит. Скрытый текст
Код:
[Registry] |
Цитата:
так же ключ Uninstall может блокироваться во время установки - как раз когда isvcredist13_install отрабатывает вощем предпочтительно штатными средствами ругается на синтаксис case (syntax error) что ему не нравится? FileSize(path_m1+'\game.exe', FileSize_m1); case FileSize_m1 of 900096 : version_m1 := "1.0" 2486272 : version_m1 := "1.0" 2443129 : version_m1 := "1.0" 2469888 : version_m1 := "1.0" 2989430 : version_m1 := "1.0" 2351104 : version_m1 := "1.1" 2355200 : version_m1 := "1.2" else version_m1 := "0"; end; |
вот такой
procedure DeinitializeSetup(); begin BASS_DeInit; //Освобождаем процесс gdipShutdown ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0); WizardForm.Hide; Sleep(200); ShowWindow(WizardForm.Handle,0); UnloadSkin(); RF(ExpandConstant('{src}\!!!.txt')); end; если при старте установщика в окне выбора языка нажать "отмена" то вываливается ошибка на строчке ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0); Подскажите, как избавиться? |
Цитата:
Цитата:
Цитата:
Цитата:
Если в DeinitializeSetup есть обращение к WizardForm или {wizardhwnd}, то нужно делать проверку: Код:
if ExpandConstant('{wizardhwnd}') <> '0' then |
Цитата:
где он лежит или как его вытащить? Цитата:
сталкивался с тем что во время установки чтение оттуда выдает пустые строки Цитата:
теперь выдает ошибку could not call proc на строчке if ExpandConstant('{wizardhwnd}') <> '0' then begin |
а как называется функция, инициализирующая окошко выбора языка? что-то initializelanguagewindow чтоле? попробую через нее
|
вывернулся
var FormInitialized : boolean; function InitializeLanguageDialog(): Boolean; begin FormInitialized := false; ... end; procedure DeinitializeSetup(); begin if (FormInitialized) then begin BASS_DeInit; // gdipShutdown ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0); WizardForm.Hide; Sleep(200); ShowWindow(WizardForm.Handle,0); UnloadSkin(); RF(ExpandConstant('{src}\!!!.txt')); end; end; procedure InitializeWizard(); begin FormInitialized := true; ... end; |
Подскажите, а есть ли адекватное решение для работы с REG_BINARY?
Код:
function GetHKLM: Integer; Код:
Windows Registry Editor Version 5.00 Решение найдено: Код:
function GetRegBinStr(key: integer; subkey, value: string): string; P.P.S. Ключ для теста лучше заменить, например, на такой 'SOFTWARE\Test', 'Test', т.к. в моем примере закрытый ключ на запись, но это уже другая история(SetACL). |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
Код:
// читать |
Цитата:
Цитата:
Поэтому и пояснил этот момент, в плане того, что учел эту особенность и проверил работоспособность именно на x64, где есть Wow6432Node. |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Stealthmax,
HKLM64 Этот ключ предназначен исключительно для 64 битной системы. Без ключа 64,т.е. HKLM, запись будет происходить в секцию Wow6432Node, в 32-разрядную ветку. А при наличии ключа, т.е. HKLM64, запись будет идти в верхний раздел реестра, до секции Wow6432Node, в 64-разрядную ветку. Этот ключ типа переключателя. Бывает очень даже нужен, в некоторых случаях. На 32 битной системе, при установке, сразу выдаст ошибку. Ставьте запрет, установка только, if IsWin64 then и все. |
Вложений: 1
почему текст при нажатии "обводится" пунктиром каким то ? в скрипте только VclStylesinno, ни чего нет, чек бокс не через ботву
|
TryRooM, El Sanchez, спасибо, теперь порядок, пойду дальше "пилить". Убрал срам
Код:
RegWriteDWordValue(GetHKLM(), 'SOFTWARE\Wow6432Node\Classes\CLSID\{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}\ShellFolder','Attributes', $b0940064); |
как сделать TMemo со списком копирующихся файлов в ISDone?
пример нашел, но на этом все, ни чего не понял http://krinkels.org/threads/faq-po-i...tup.7/#post-42 еще вопрос. как сделать быстрый выбор диска установки. его буквы, как на скрине ?? и еще вопрос как реализовать прозрачность появляющуюся при перемещении окна , а также "медленный" выход(исчезновение) как на видео ? пример |
подскажите как сделать интеграцию в меню по запросу
|
Цитата:
|
Цитата:
|
Как правильно задать параметр?
Exec(ExpandConstant('{win}\regedit.exe'), '/EA (ExpandConstant({commondesktop}\settings.reg HKEY_CURRENT_USER\Software\DWGTool\CADConverter)', '', SW_SHOW, ewWaitUntilTerminated, ResultCode); |
парни подскажите скрипт что бы в 1 инстоляторе было и 32и 64 битная сис.
и чтоб автоматически выбирала систему очень очень надо |
vadjliss,
[Setup] ArchitecturesInstallIn64BitMode=x64 [...] ; х64 Check: "Is64BitInstallMode"; ; х86 Check: "not Is64BitInstallMode"; |
а на примере можешь показать куда и как ставить
я так понял вот так скрипт
#define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" [Setup] AppId={{D19EE6F3-07CC-4C29-A911-0F50BC5F659F} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} OutputBaseFilename=setup Compression=lzma SolidCompression=yes ArchitecturesInstallIn64BitMode=x64 [Languages] Name: "default"; MessagesFile: "compiler:Default.isl" Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "C:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent ; х64 Check: "Is64BitInstallMode"; ; х86 Check: "not Is64BitInstallMode"; |
TryRooM,
Цитата:
пример Скрытый текст
[code]; Скрипт создан через Мастер Inno Setup Script. ; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP! #define MyAppName "Моя программа" #define MyAppVersion "1.5" #define MyAppPublisher "Моя компания, Inc." #define MyAppURL "http://www.сайт.com/" #define MyAppExeName "MyProg.exe" [Setup] ; Примечание: Значение AppId идентифицирует это приложение. ; Не используйте одно и тоже значение в разных установках. ; (Для генерации значения GUID, нажмите Инструменты | Генерация GUID.) AppId={{B5BB5779-8526-4769-95BB-7F54ACCBC64A} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} OutputBaseFilename=setup Compression=lzma SolidCompression=yes [Languages] Name: "default"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion ; Примечание: Не используйте "Flags: ignoreversion" для системных файлов [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent Код:
var |
Цитата:
Скрытый текст
Код:
[Code] |
El Sanchez,
просто отлично, все работает, только как теперь быть с лейблом "требуется место...." , он у меня менял цвет при нехватке Скрытый текст
Код:
procedure DirEditOnChange(Sender: TObject); |
El Sanchez,
Тебе видимо тут спокойно не живётся. Аудиозоофил, До оригинала тебе как от Москвы до Пекина пешком. На данный момент ты добился лишь того что мод VCL Styles Inno выпилен и новых версий не будет для паблика. |
подскажите как сделать или хоть примерный скрипт 32-64 бит
имеется 2 папки одна 32 другая 64 бит программы как их реализовать в один инстал. и автоматически что бы выбирала ось |
Цитата:
Код:
[Files] |
Доброе время суток. Подскажите как правильно сделать распаковку vcomp140.dll в sys и syswow64. Все перепробЫвал либо 1 файл не распаковывается либо оба файла в syswow64
Код:
Source: vcomp140.dll; DestDir: {sys}; Flags: ignoreversion; Check: IsWin64; Components: BDC\I; |
Цитата:
Код:
[Files] |
Добрый день уважаемые гуру! Прошу помочь начинающей.. :)
Нужно в зависимости от разрядности ОС (32 или 64) установить библиотеку (без регистрации) в нужную папку, т.е. если 32, то в папку system32, если 64 - в SysWOW64. Как это сделать? |
marinaU,
Код:
[Files] |
Цитата:
Скажите пожалуйста, а будут ли заменены файлы при совпадении имен? |
Цитата:
Код:
[Files] |
подскажите, пожалуйста, как опознаются в GetWindowsVersionEx винды 8, 8.1, 10
|
инно от китайцев 5,5,1 для вин 8,1 и 10 возвращает
version.major=6 version.minor=2 version.build=9200 подскажите, пожалуйста, как их различать? |
еще вопросик - можно как-то свойствам ярлыка выставлять совместимость с вин хр сп2 к примеру?
|
Вложений: 1
Цитата:
Цитата:
P.S. Во вложении китаец с правленным манифестом, чтобы у установщиков волосы были мягкими и шелковистыми. Бонус: командный файл внутри для быстрой смены компилятора с ANSI на Unicode и обратно. Цитата:
R.i.m.s.k.y., пост с картинкой удали/отредактируй, а то пожалуюсь. |
R.i.m.s.k.y., GetWindowsVersionEx винды 8, 8.1, 10
Код:
function ForWindows10(): Boolean; |
Цитата:
Compil32A.exe ISCC.exe ISCCA.exe кто из них кто для контроля процесса? |
Цитата:
|
Цитата:
контроль - на случай если батник сглючит по размеру будет видно где анси, а где юникод версии файлов |
Вложений: 1
Цитата:
скриншот
Цитата:
|
nik1967, дзинкуе, El Sanchez уже ответил тоже самое ;)
|
Вложений: 1
El Sanchez, наверное вы еще забыли добавить в архив файл ISCmplr.dll Ansi версии. Или убрать переименовку этого файла в батнике?
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
парни помогите использую вот этот скрипт но иконки не появляются на рабочем столе может кто поправит
Код:
#define MyAppName "Photoshop" |
vadjliss, попробуйте использовать константу {userdesktop}, вместо {commondesktop}.
|
vadjliss,
Код:
#define MainExe "{app}\Photoshop.exe" Код:
[Icons] |
vadjliss, а если после установки щелкнуть ПКМ по десктопу и нажать F5?
тогда в [Setup] пропишите ChangesAssociations=true и ChangesEnvironment=true смысл у них другой но эксплорер заодно передернет десктоп |
Цитата:
Цитата:
В #define MyAppName, задано имя "Photoshop" Код:
#define MyAppName "Photoshop" В DefaultDirName назначен путь установки {pf}\{#MyAppName} Код:
DefaultDirName={pf}\{#MyAppName} Далее в #define MainExe задано "{app}\Photoshop\Photoshop.exe" Код:
#define MainExe "{app}\Photoshop\Photoshop.exe" Далее секция [Icons] В Name указано "{commondesktop}\{#AppName}" Код:
Name: "{commondesktop}\{#AppName}" |
Добрый день. Есть вопрос, который надо решить. При установке программы надо чтобы была возможность выбрать путь установки программы и выбрать отдельно путь хранения дополнительных файлов и потом второй путь внести в переменную среды.
Главный вопрос как сделать еще один момент с вопросом куда сохранять вторые файлы и как их передать, чтобы внести в переменную среды. Спасибо. Сам же и отвечу на свой вопрос. Код:
[Registry] Код:
var |
Цитата:
1. В NextButtonClick проверку DataDirPage.Values[0] = '' сделайте только в CurPageID = wpReady, незачем после каждого клика ее делать. 2. Там же литерал 'С:\' заменить на ExpandConstant('{sd}'), не у всех диск C: есть. 3. В InitializeWizard вторым параметром GetPreviousData написать ExpandConstant('{sd}'). Если первая установка и DataDir неоткуда читать, то DataDirPage.Values[0] получит значение по умолчанию (второй параметр). 4. Локальные переменные I и UsageMode не используются. |
|
Здравствуйте.
Подскажите пожалуйста, какой код добавить в .iss, чтоб файл .xml добавить в планировщик заданий. Заранее благодарен. |
Цитата:
|
kotyarko@fb, https://cloud.mail.ru/public/DWT3/JGbnbafFD
|
habib2302, проблемного места, которое есть в первом прикреплённом вами скрипте, нет во втором (полном). Они отличаются.
|
kotyarko@fb, это понятно, что они отличаются. Вот ссылка на скрипт который был добавлен в первый прикрепленный скрипт https://yadi.sk/i/V_hiV_Sqjcvw5 и добавил реестр из пользовательского раздела sid
|
Цитата:
|
господа состоятельные кроты
подскажите, пожалуйста, как сделать кнопку проверки установщика по чексумме я в своих установщиках использую стандартные методы сжатия самим инно (bzip или 7zip) |
Приветствую всех!
Подскажите решение с бэкапом ветки/веток реестра. Возможно ли добавить бэкап в {uninstallexe}, т.е. наподобие функции GetFromRes, но наоборот. Дабы после установки содержимое бэкапа сохранилось в деинсталляторе для последующего восстановления при удалении. Бэкап реестра
Код:
[Setup] Мой вариант
Код:
[Setup] Восстановить из файла RegBackup.dat и RegBackup_1.dat ничто не мешает, но хотелось бы некой эстетики и не плодить множество файлов *.dat. Цитата:
|
R.i.m.s.k.y., ISMD5.
|
Тут как-то поднимали вопрос по поводу ключей командной строки, т.е. сделать их менее подробными и компактными.
Измененные ключи
/SILENT- /NS /VERYSILENT- /S /NOICONS- /NI /DIR- /D /SUPPRESSMSGBOXES- /SMB /NOCANCEL- /NC /NORESTART- /NR /RESTARTEXITCODE- /REC /NOCLOSEAPPLICATIONS- /NCA /LANG- /L /GROUP- /G /TASKS- /T /TYPE- /TP /MERGETASKS- /MT /PASSWORD- /PASS /NORESTARTAPPLICATIONS- /NRA /COMPONENTS- /C Также убрана приставка _is1 при создании ключа деинсталляции в реестре. Выкладываю 3 версии для Restools 5.5.1.ee2(u) (build 121216). Скопировать с заменой в папку, не забывайте про бэкап. Setup.e32<-- без изменений деинсталлятора, т.е. имеет вид unins000.exe(стабильный вариант) Setup.e32(with _is1)<-- без изменений деинсталлятора, возвращена приставка _is1 Setup.e32_(uninstall) <-- в этой версии деинсталлятор имеет вид uninstall.exe, но есть баг, при установке поверх выдает ошибку и откатывает установку. |
Цитата:
Цитата:
Цитата:
|
Всем привет. Делаю сборку CS:S nosteam. Гуглил на просторах интернета скрипт, который сможет изменять ник и клан тэг в файле rev.ini. Нашёл, пришлось, правда, доделать ввод клантэга. Проблема в следующем: как заставить установщик по дефолту сохранять клантэг и ник в UTF-8 и убрать чекбокс "сохранить в UTF-8". Может кто подсказать решение проблемы? Скрипт прилагаю ниже. Заранее спасибо!
Код:
#ifndef UNICODE |
Цитата:
Цитата:
Цитата:
|
Цитата:
Скрытый текст
Код:
var Я бы оставил как есть (запись бекапа во отдельный файл) или способ с GetPreviousData/SetPreviousData. Цитата:
Скрытый текст
Код:
[Setup] |
Цитата:
|
Цитата:
|
Доброго всем времени. Подскажите пожалуйста как добавить информацию из рег файла через секцию [_Run_] в скрытом режиме и без вопросов о добавлении из небезопасного источника.
Сразу оговорюсь, что секция реестра инно не подходит, так как цель моя заключается в следующем: Делаю сборку программ (одной из которых является Notepad++) так вот этот Notepad++ интегрируется в проводник при помощи регистрируемой библиотеки, которая сама генерирует строку в реестре Edit with &Notepad++ и заменяет то, что пишет инно из секции реестра. Вот я и хочу, добавить данные (заменить Edit with на Открыть с помощью) на этапе postinstall. или подскажите пожалуйста как это реализовать через секцию [_Code_] Заранее спасибо. |
palsn2000, Пробуйте.
Скрытый текст
Код:
procedure CurStepChanged(CurStep: TSetupStep); |
Всем добрый день!
Подскажите пожалуйста - создаю дистрибутив - устанавливаю его. После установки в меню "Пуск" не появляется пункт с установленным ПО, а появится он только после установки другого дистрибутива или после перезагрузки ПК. С чем может быть связано? |
Народ, тупой вопрос , в какой переменной находиться путь к %userprofile%?
|
Цитата:
|
Цитата:
|
Painkiller, Если так показать, разберетесь?
Код:
[setup] |
Цитата:
Код:
[setup] |
Цитата:
|
Цитата:
Скрытый текст
|
Цитата:
|
Цитата:
|
Всем привет. Решил установить ISWin7 в свой скрипт, но не тут-то было:
Как видно, в прозрачную область не попали: ссылка на сайт, кастомная кнопка и BeveledLabel. Может кто подсказать, как это исправить? Код ниже. Заранее спасибо! Код:
#define MyAppURL "http://yandex.ru/" |
Цитата:
Цитата:
Код:
iswin7_add_button(InfoButton.Handle); Цитата:
|
Цитата:
|
Цитата:
|
|
парни как прописать ярлыки имеется программа на рабочий стол надо 4 ярлыка вывести как сделать?
|
vadjliss, Как это читать? Знаки препинания где?
Цитата:
Код:
[Icons] |
:clapping: Nordek
спасибо! всё работает |
Всем привет! Таки доделываю скрипт для сборки CS:S, но столкнулся с одним нюансом при установке на Windows 8:
Этот файл запускается после завершения установки Код:
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent _________________________________ Второй глюк. Ниже код создания ярлыков: Код:
[Icons] |
Здравствуйте уважаемые форумчане.
У меня такой вопрос - имеется кусок скрипта со слайдшоу для препроцессора: Код
Код:
[Files] Так вот можно ли каким-нибудь образом организовать автоматическое создание списка изображений (циклом или ещё как) в зависимости от количества файлов в папке, чтобы если Source: SlideShou\* содержит 15 изображений то ExtractTemporaryFile('Screen (1).jpg'); ssAddImage(ExpandConstant('{tmp}')+'\Screen (1).jpg'); ....... ExtractTemporaryFile('Screen (15).jpg'); ssAddImage(ExpandConstant('{tmp}')+'\Screen (15).jpg'); ssStartShow; а если содержит 30 изображений то ExtractTemporaryFile('Screen (1).jpg'); ssAddImage(ExpandConstant('{tmp}')+'\Screen (1).jpg'); ....... ExtractTemporaryFile('Screen (30).jpg'); ssAddImage(ExpandConstant('{tmp}')+'\Screen (30).jpg'); ssStartShow; |
Цитата:
Скрытый текст
Код:
try |
El Sanchez, Спасибо за пример, только вот, даже стыдно в этом признаваться, у меня проблема типа unknown identifier 'i' :blush:
когда указываю в константах i = 0; - ругается на строке i := i + 1; когда в Var - ошибка с двоеточием. |
Цитата:
Объявление переменной выглядит так (это вы должны знать чуть-ли не в первую очередь): Код:
Var |
kotyarko@fb, Ошибка с двоеточием у меня была когда я в Var пытался занести i: 0; - потому, что при i: Integer; у меня выскакивает окошко с сообщением "Identifier expected." на строке procedure CurPageChanged2(CurPageID: Integer);
|
Цитата:
Цитата:
|
kotyarko@fb, Чтобы не быть голословным решил скинуть пример (пришлось всё слепить в одну папку для удобства)
Выкладываю архив Скрипт.zip с набором файлов для примера (для компиляции использую расширенную версию Ansi от restools с препроцессором) 17 и 18 строки: //#include "Soft\ISS\Code\5_Слайдшоу_IW4_DS3_CPC2.iss" ;;;; IW4 DS3 CPC2 --> изначальный вариант (работает, но приходится вручную править список файлов в зависимости от их количества) #include "Soft\ISS\Code\6_Слайдшоу_IW4_DS3_CPC2.iss" ;;;; IW4 DS3 CPC2 --> вариант, предложенный El Sanchez (тут я не могу разобраться с параметром i - отсюда, видимо, и возникают ошибки). |
Вложений: 1
palsn2000, "Soft\ISS\Code\6_Слайдшоу_IW4_DS3_CPC2.iss": в процедуре CurStepChanged не закрыты операторные скобки (не хватает одного end).
Работоспособность скрипта проверить не удалось, скрин прикреплён. з.ы. не захватывайте букву диска, когда указываете пути к файлам. Путь достаточно указывать от папки, лежащей на уровне с основным скриптом. |
palsn2000, end; пропустил в 6_Слайдшоу_IW4_DS3_CPC2.iss.
С помощью какого тэга сделать код inno разноцветным? Хе, опоздал. Ну и ладно, пусть будет. Я кстати тоже замаялся J:\ отрезать. Кстати, папка в temp не удаляется - остаётся Screen (3).jpg |
Цитата:
Конкретно цвета в: Tools>Editor Options...>Script colors \ [code] colors. |
Цитата:
|
nik1967,
Скрытый текст
;#define Video
[Setup] AppName=My Program AppVersion=1.5 DefaultDirName={pf}\My Program WizardImageFile=Fon.bmp OutputBaseFilename=2 [Files] Source: compiler:Dll Pack\IsPicture_for_all.dll; Flags: dontcopy Source: Fon.bmp; Flags: dontcopy #ifdef Video Source: XVID\fon.avi; Flags: dontcopy #endif [code] //----------------------------------------- procedure Initialize(AhWnd,BhWnd:hWnd);external 'Initialize@{tmp}\IsPicture_for_all.dll stdcall delayload'; // Здесь указываем хендлы окон, на данный момент, лучше пока указывать // WizardForm.Handle - первым и MainForm.Handle вторым. //----------------------------------------- procedure XvidVideo(fn:String;Seth:string);external 'XvidVideo@{tmp}\IsPicture_for_all.dll stdcall delayload'; // Эта процедура загружает фоновое avi-видео. // Seth - задаем координаты через пробел в одинарных кавычках // пример: XvidVideo(ExpandConstant('{tmp}\fon.avi'), '351 201 236 132'); //----------------------------------------- procedure Deinitialize;external 'Deinitialize@{tmp}\IsPicture_for_all.dll stdcall delayload'; // отменяет свзывание форм между собой, выгружает видео. //----------------------------------------- function NewFont(Height:Integer;thickness,italic,underline,strikeout:DWORD;name:String):hWnd;external 'NewFont@{tmp}\IsPicture_for_all.dll stdcall delayload'; // Создает шрифты для замены стандартных. Необходима для борьбя с артефактами сглаживания. // Height, // высота шрифта // thickness, // насыщенность шрифта // italic, // курсив // underline, // Подчеркнутый // strikeout, // Зачеркнутый // name // имя шрифта //----------------------------------------- procedure SplashWnd(FileName:PAnsiChar;Time,width,height:Integer);external 'SplashWnd@{tmp}\IsPicture_for_all.dll stdcall delayload'; // Создает Splash-заставку // Прозрачность, пока, не поддерживается // FileName, // имя файла // Time, // скорость появления в миллисекундах // width, // ширина // height, // высота procedure EndSplash(Time1,Time2:Integer);external 'EndSplash@{tmp}\IsPicture_for_all.dll stdcall delayload'; // Закрываем Splash-заставку // Time1, // выжидание до закрытия в миллисекундах // Time, // скорость закрытия в миллисекундах //----------------------------------------- //----------------------------------------- |
nik1967, расширенная от restools или вручную "все делать"
Цитата:
|
Вложений: 1
kotyarko@fb, извините, за пути к файлам с буквой диска - основной скрипт исправил, а про блоки кода, подхватываемые препроцессором забыл.
J:\Soft\ISS\Resource\btnimage.bmp -- > это в данном случае должно было быть Soft\ISS\Resource\btnimage.bmp На всякий случай исправил и перепаковал архив -- может быть кому-то пригодится для примера. |
nik1967, "Правая кнопка мыши » Копировать как UBB код."
Данный пункт доступен на уровне расширенной версии Inno. Цитата:
"Инструменты » Настройки редактора » Копирование текста" Поставьте флажок напротив "Использовать тег [code]" Для того, чтоб вместо тега цитаты [quote][/quote] Цитата:
Код:
[Setup] Для того, чтоб исключить из заголовка "Имя_скрипта.iss, Дата и время". Цитата:
Цитата:
"имя.iss, дата и время" допустимо для тега [quote][/quote] Цитата:
При добавлении в сообщение вы сами заметите: [code= Inno Setup Script.iss,29.10.2015 23:15:35 ][Setup] AppName=My Program AppVersion=1.5 AppPublisher=My Company, Inc. DefaultDirName={pf}\My Program DefaultGroupName=My Program[/code] Далее: В одном случае по желанию: Т.е дополнительная обработка, а именно: В начале удаление [font=Courier New][color=#000000], в конце удаление [/color][/font]. В первом случае шрифт в теге [code][/code] ненужен: По-умолчанию используется шрифт HTML тега <pre></pre> Во втором случае цвет (чёрный), цвет без тега чёрный. В другом случае [Сode] не жирный как в редакторе Inno, либо вовсе повторяет код форума. В лучшем случае если в тег [Сode] будет добавлен дополнительный тег [color=none][/color], т.е: [color=none][[/color]Code], иначе самостоятельное указание [Co[u][/u]de] чтоб не сливался тег [code][/code] c секцией [code] из скрипта. |
Доброе время суток. Как сделать, если отсутствует файл с импортируемыми настройками инсталлятор не выполнял команду в разделе Run.
Код:
[Run] |
Цитата:
Код:
[Run] |
Dodakaedr, только почему-то из-за этой проверки не срабатывает команда, но при этом файл лежит рядом с инстайллом
Код:
[Run] |
habib2302, а точно с инсталлятором, т.е. Setup.exe? По умолчанию данный файл создаётся в папке Output. Что бы Setup.exe создавался в той же папке, где запущен скрипт, в секции [Setup] нужно прописать OutputDir=. Т.е.
Код:
[Setup] |
nik1967, я просто для проверки работает ли эта команда убрал проверку и сработало. а файл с настройками лежит в папке \Output радом с инсталлятором
Скрытый текст
Код:
; Скрипт создан через Мастер Inno Setup Script. |
Цитата:
Код:
[Run] |
Dodakaedr, сори... не обратил внимания
|
Dodakaedr,
Есть код возвращения исходного пути установки и распаковки, не могу найти где ошибка. Помогите исправить. Сам код: procedure dirBackClick(Sender: TObject); begin Edit.Text:=AddBackslash(ExpandConstant('{pf}\')+'ACD Systems'); DirTreeView.ChangeDirectory(AddBackslash(ExpandConstant('{pf}\')), True); if Portable.Checked then Edit.Text:=(ExpandConstant('{src}\')+'ACDSeePortable'); DirTreeView.ChangeDirectory(AddBackslash(ExpandConstant('{src}\')), True); end; |
ZVSRus, где (как) вы используете процедуру dirBackClick?
|
Используется в function InitializeSetup(): Boolean;
|
Цитата:
|
Вот весь скрипт
Скрытый текст
#define MyAppName "Almeza MultiSet Professional" #define MyAppVersion "1.5" #define MyAppExeName "MyProg.exe" [Setup] AppName={#MyAppName} AppVersion={#MyAppVersion} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} DirExistsWarning=no Uninstallable=not PortableCheck WizardImageFile=1.bmp WizardSmallImageFile=57x57.bmp ShowComponentSizes=yes SetupIconFile=1.ico OutputBaseFilename=ACDSee5_Setup ;AppSupportPhone= AppCopyright=Copyright (C) 2003-2015 My Company, Inc. ;AppPublisher=My Company, Inc. ;AppPublisherURL=http://www.example.com/ OutputDir=. DisableReadyPage=yes [Languages] Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl" Name: "english"; MessagesFile: "compiler:Languages\English.isl" [Files] Source: rus.bmp; Flags: dontcopy solidbreak Source: eng.bmp; Flags: dontcopy solidbreak Source: Installer.bmp; Flags: dontcopy solidbreak Source: Portable.bmp; Flags: dontcopy solidbreak Source: "C:\Program Files (x86)\Inno Setup v.5.5.1\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: RusLang and InstallerCheck; Source: "C:\Program Files (x86)\Inno Setup v.5.5.1\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: EngLang and InstallerCheck; Source: "C:\Program Files (x86)\Inno Setup v.5.5.1\Examples\MyProg.exe"; DestDir: "{commondesktop}\Portable"; Flags: ignoreversion uninsrestartdelete; Check: RusLang and PortableCheck; Source: "C:\Program Files (x86)\Inno Setup v.5.5.1\Examples\MyProg.exe"; DestDir: "{commondesktop}\Portable"; Flags: ignoreversion uninsrestartdelete; Check: EngLang and PortableCheck; Source: {win}\Help\*; DestDir: {app}; Flags: external recursesubdirs; Check: RusLang and InstallerCheck; Source: {win}\Help\*; DestDir: {app}; Flags: external recursesubdirs; Check: RusLang and PortableCheck; [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" ; Check: StartmenuCheck; Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; Check: StartmenuCheck; Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Check: IconsCheck; [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent; Check: RusLang and InstallerCheck; Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent; Check: EngLang and InstallerCheck; Filename: "{commondesktop}\Portable\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent; Check: RusLang and PortableCheck; Filename: "{commondesktop}\Portable\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent; Check: EngLang and PortableCheck; [UninstallDelete] Name: {app}\multiset.ini; Type: filesandordirs [code] var Component: TWizardPage; Portable,Installer,LangRus,LangEng: TNewRadioButton; FlagImage,InstallerImage,PortableImage: TBitmapImage; Lang,IconsLabel: TLabel; Icons,Startmenu: TNewCheckBox; InstallerGroupBox,IconsGroupBox,LanguageGroupBox: TNewGroupBox; dirBrowseForm: TSetupForm; dirBrowse, dirOK, dirNO, dirback: TButton; DirTreeView: TFolderTreeView; Edit: TNewEdit; BrowseBevel: TBevel; BrowsePanel: TPanel; BrowsePanel2: TPanel; BrowseBevel2,BrowseBevel3: TBevel; BrowseForm : TSetupForm; function InitializeSetup(): Boolean; begin if not FileExists(ExpandConstant('{tmp}\rus.bmp')) then ExtractTemporaryFile('rus.bmp'); if not FileExists(ExpandConstant('{tmp}\eng.bmp')) then ExtractTemporaryFile('eng.bmp'); if not FileExists(ExpandConstant('{tmp}\Installer.bmp')) then ExtractTemporaryFile('Installer.bmp'); if not FileExists(ExpandConstant('{tmp}\Portable.bmp')) then ExtractTemporaryFile('Portable.bmp'); Result := True; end; function RusLang: Boolean; begin Result:= LangRus.Checked; end; function EngLang: Boolean; begin Result:= LangEng.Checked; end; function IconsCheck: Boolean; begin Result:= Icons.Checked; end; function StartmenuCheck: Boolean; begin Result:= Startmenu.Checked; end; function InstallerCheck: Boolean; begin Result := Installer.Checked; end; function PortableCheck: Boolean; begin Result := Portable.Checked; end; procedure CopmpClick(Sender: TObject); begin case TNewRadioButton(Sender) of Portable: begin PortableImage.Show; Icons.Checked:=False; Icons.Enabled:= Icons.Checked; Startmenu.Checked:=False; Startmenu.Enabled:= Startmenu.Checked; WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{src}')) + 'Almeza MultiSet Professional Portable'; //wizardform.GroupEdit.enabled:= false; //wizardform.GroupBrowseButton.enabled:= false; end; Installer: begin PortableImage.Hide; Icons.Checked:=True; Icons.Enabled:= Icons.Checked; Startmenu.Checked:=True; Startmenu.Enabled:= Startmenu.Checked; WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{pf}')) + 'Almeza MultiSet Professional'; //wizardform.GroupEdit.enabled:= true; //wizardform.GroupBrowseButton.enabled:= true; end; end; end; procedure LangClick(Sender: TObject); begin case TNewRadioButton(Sender) of LangRus: begin FlagImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\rus.bmp')); FlagImage.Width := ScaleX(110); FlagImage.Height := ScaleY(70); FlagImage.Left := ScaleX(250); end; LangEng: begin FlagImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\eng.bmp')); FlagImage.Width := ScaleX(110); FlagImage.Height := ScaleY(70); FlagImage.Left := ScaleX(250); end; end; end; procedure dirOkclick(Sender: TObject); begin dirBrowseForm.Close; WizardForm.Enabled:=True; WizardForm.DirEdit.Text:=Edit.Text; end; procedure dirBackClick(Sender: TObject); begin Edit.Text:=AddBackslash(ExpandConstant('{pf}\')+'{#MyAppName}'); DirTreeView.ChangeDirectory(AddBackslash(ExpandConstant('{pf}\')), True); end; procedure dirNOclick(Sender: TObject); begin dirBrowseForm.Close; WizardForm.Enabled:=true; end; procedure DirFolderChange(Sender: TObject); Begin Edit.Text:=AddBackslash(DirTreeView.Directory) + '{#MyAppName}'; if Portable.Checked then Edit.Text:=AddBackslash(DirTreeView.Directory) + 'Almeza MultiSet Professional Portable'; end; procedure FormClosedir(Sender: TObject; var Action: TCloseAction); begin WizardForm.Enabled:=true; end; procedure BrowseClick(Sender: TObject); begin dirBrowseForm := CreateCustomForm(); with dirBrowseForm do begin ClientWidth := ScaleX(352); ClientHeight := ScaleY(388); CenterInsideControl(WizardForm, False); Caption:='Обзор папок'; onClose:=@FormClosedir; with tlabel.create(dirBrowseForm) do begin SetBounds(ScaleX(15),ScaleY(15),ScaleX(350),ScaleY(15)); caption:='Выберите папку из списка и нажмите «ОK».'; parent:=dirBrowseForm; Font.Color:=clBlack; Font.Size:=8; BrowseBevel := TBevel.Create(WizardForm); BrowseBevel.SetBounds(ScaleX(0),ScaleY(40),ScaleX(352),ScaleY(2)); BrowseBevel.parent:=dirBrowseForm; BrowseBevel3 := TBevel.Create(WizardForm); BrowseBevel3.SetBounds(ScaleX(0),ScaleY(342),ScaleX(352),ScaleY(2)); BrowseBevel3.parent:=dirBrowseForm; BrowsePanel := TPanel.Create(WizardForm); with BrowsePanel do begin parent:=dirBrowseForm; Left := ScaleX(5); Top := ScaleY(45); Width := ScaleX(342); Height := ScaleY(292); Caption := ''; end; BrowsePanel2 := TPanel.Create(WizardForm); with BrowsePanel2 do begin BrowsePanel2.Parent := BrowsePanel; Left := ScaleX(5); Top := ScaleY(5); Width := ScaleX(332); Height := ScaleY(282); BevelOuter := bvLowered; Caption := ''; end; BrowseBevel2 := TBevel.Create(WizardForm); with BrowseBevel2 do begin BrowseBevel2.Parent := BrowsePanel2; Left := ScaleX(5); Top := ScaleY(5); Width := ScaleX(322); Height := ScaleY(272); Style := bsRaised; end; Edit:= TNewEdit.Create(dirBrowseForm); with edit do begin SetBounds(ScaleX(10),ScaleY(10),ScaleX(311),ScaleY(21)); Text:=WizardForm.DirEdit.text; Parent:= BrowsePanel2; Font.Color:=clBlack; end; DirTreeView:= TFolderTreeView.Create(dirBrowseForm) with DirTreeView do begin SetBounds(ScaleX(10),ScaleY(35),ScaleX(311),ScaleY(235)); OnChange:=@DirFolderChange; Parent:=BrowsePanel2; end; dirback:=tbutton.create(dirBrowseForm) with dirback do begin SetBounds(ScaleX(16),ScaleY(351),ScaleX(100),ScaleY(30)); parent:=dirBrowseForm; Caption:='Сброс'; onclick:=@dirBackClick; end; dirok:=tbutton.create(dirBrowseForm) with dirok do begin SetBounds(ScaleX(126),ScaleY(351),ScaleX(100),ScaleY(30)); parent:=dirBrowseForm; Caption:='OK'; onclick:=@dirOKclick; end; dirno:=tbutton.create(dirBrowseForm) with dirno do begin SetBounds(ScaleX(236),ScaleY(351),ScaleX(100),ScaleY(30)); parent:=dirBrowseForm; Caption:='Отмена'; onclick:=@dirNOclick; end; end; end; DirTreeView.ChangeDirectory(AddBackslash(WizardForm.dirEdit.Text), true); Edit.Text:=(DirTreeView.Directory); dirBrowseForm.Show; WizardForm.Enabled:=false; end; procedure InitializeWizard(); begin WizardForm.DirBrowseButton.Visible:=false; Component := CreateCustomPage(wpInfoBefore, 'Выбор типа и компонентов установки', '...'); FlagImage := TBitmapImage.Create(WizardForm); with FlagImage do begin Name := 'FlagImage'; Parent := Component.Surface; Left := ScaleX(250); Top := ScaleY(167); Width := ScaleX(110); Height := ScaleY(70); end; InstallerImage := TBitmapImage.Create(WizardForm); with InstallerImage do begin Name := 'InstallerImage'; Parent := Component.Surface; Left := ScaleX(220); Top := ScaleY(5); Width := ScaleX(189); Height := ScaleY(160); InstallerImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Installer.bmp')); end; PortableImage := TBitmapImage.Create(WizardForm); with PortableImage do begin Name := 'PortableImage'; Parent := Component.Surface; Left := ScaleX(220); Top := ScaleY(5); Width := ScaleX(186); Height := ScaleY(160); PortableImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Portable.bmp')); end; InstallerGroupBox := TNewGroupBox.Create(WizardForm); with InstallerGroupBox do begin Parent := Component.Surface; Left := ScaleX(0); Top := ScaleY(0); Width := ScaleX(205); Height := ScaleY(74); Caption := 'Тип:'; end; Portable := TNewRadioButton.Create(WizardForm); with Portable do begin Parent := InstallerGroupBox; Left := ScaleX(5); Top := ScaleY(47); Width := ScaleX(190); Height := ScaleY(17); Caption := 'Распаковка портативной версии'; OnClick:=@CopmpClick; end; IconsGroupBox := TNewGroupBox.Create(WizardForm); with IconsGroupBox do begin Parent := Component.Surface; Left := ScaleX(0); Top := ScaleY(80); Width := ScaleX(205); Height := ScaleY(74); Caption := 'Компоненты:'; end; Icons := TNewCheckBox.Create(WizardForm); with Icons do begin Parent := IconsGroupBox; Left := ScaleX(5); Top := ScaleY(20); Width := ScaleX(190); Height := ScaleY(17); Caption := 'Ярлык(и) на «Рабочем столе»'; Checked:=True; end; Startmenu := TNewCheckBox.Create(WizardForm); with Startmenu do begin Parent := IconsGroupBox; Left := ScaleX(5); Top := ScaleY(47); Width := ScaleX(190); Height := ScaleY(17); Caption := 'Ярлык в меню «Пуск»'; Checked:=True; end; Installer := TNewRadioButton.Create(WizardForm); with Installer do begin Parent := InstallerGroupBox; Left := ScaleX(5); Top := ScaleY(20); Width := ScaleX(190); Height := ScaleY(17); Caption := 'Установка обычной версии'; OnClick:=@CopmpClick; Checked:=True; end; LanguageGroupBox := TNewGroupBox.Create(WizardForm); with LanguageGroupBox do begin Parent := Component.Surface; Left := ScaleX(0); Top := ScaleY(160); Width := ScaleX(205); Height := ScaleY(74); Caption := 'Язык интерфейса:'; end;; LangRus := TNewRadioButton.Create(WizardForm); with LangRus do begin Parent := LanguageGroupBox; Left := ScaleX(5); Top := ScaleY(20); Width := ScaleX(190); Height := ScaleY(17); Caption := 'Язык интерфейса Русский'; OnClick:=@LangClick; Checked:=True; end; LangEng := TNewRadioButton.Create(WizardForm); with LangEng do begin Parent := LanguageGroupBox; Left := ScaleX(5); Top := ScaleY(47); Width := ScaleX(190); Height := ScaleY(17); Caption := 'Язык интерфейса Английский'; OnClick:=@LangClick; end; dirBrowse:=tbutton.create(WizardForm); with dirBrowse do begin Parent := WizardForm.SelectDirPage; SetBounds(ScaleX(342),ScaleY(80),ScaleX(75),ScaleY(23)); Caption:='Обзор...'; OnClick:=@BrowseClick; end; end; function ShouldSkipPage(PageID: Integer): Boolean; // Должен пропустить страницу begin if Portable.Checked then if (PageID = 8) then Result:= True; end; procedure CurStepChanged(CurStep: TSetupStep); // Измененный шаг begin if (CurStep = ssPostInstall) then if Installer.Checked and RusLang then SetIniString('general', 'language', 'russian', ExpandConstant('{app}\multiset.ini')); if Installer.Checked and EngLang then SetIniString('general', 'language', 'english', ExpandConstant('{app}\multiset.ini')); end; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure CurPageChanged(CurPageID: Integer); // Измененная страница begin case CurPageID of wpSelectDir: if Portable.Checked then begin WizardForm.PageNameLabel.Caption:='Выбор папки распаковки'; WizardForm.PageDescriptionLabel.Caption:='В какую папку вы хотите распаковать {#SetupSetting("AppName")}?'; WizardForm.SelectDirLabel.Caption:='Программа распакует {#SetupSetting("AppName")} в следующую папку.'; WizardForm.SelectDirBrowseLabel.Caption:='Нажмите «Распаковать» чтобы начать распаковку. Если вы хотите выбрать другую папку, нажмите «Обзор».'; WizardForm.NextButton.Caption:='Распаковать'; WizardForm.Caption:= 'Распаковка — {#SetupSetting("AppName")}' WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{src}')) + 'Almeza MultiSet Professional Portable'; end else begin WizardForm.NextButton.Caption:= 'Далее'; WizardForm.PageNameLabel.Caption:= 'Выбор папки установки'; WizardForm.Caption:= 'Установка — {#SetupSetting("AppName")}'; WizardForm.PageDescriptionLabel.Caption:= 'В какую папку вы хотите установить {#SetupSetting("AppName")}?'; WizardForm.SelectDirLabel.Caption:= 'Программа установит {#SetupSetting("AppName")} в следующую папку.'; WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{pf}')) + '{#SetupSetting("AppName")}'; WizardForm.SelectDirBrowseLabel.Caption:='Нажмите «Далее» чтобы продолжить. Если вы хотите выбрать другую папку, нажмите «Обзор».'; end; //wpInstalling: //begin //WizardForm.PageNameLabel.Caption:='Распаковка'; //WizardForm.PageDescriptionLabel.Caption:='Пожалуйста, подождите, пока Almeza MultiSet Professional Portable распакуется на ваш компьютер.'; //end else begin //WizardForm.PageNameLabel.Caption:='Установка'; //WizardForm.PageDescriptionLabel.Caption:='Пожалуйста, подождите, пока Almeza MultiSet Professional установится на ваш компьютер.'; //end; //end; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// wpSelectProgramGroup: if Installer.Checked then begin WizardForm.NextButton.Caption:= 'Установить'; WizardForm.SelectStartMenuFolderBrowseLabel.Caption:= 'Нажмите «Установить», чтобы начать установку. Если вы хотите выбрать другую папку, нажмите «Обзор».'; end; wpInstalling: if Installer.Checked then begin WizardForm.PageNameLabel.Caption:='Установка'; WizardForm.PageDescriptionLabel.Caption:='Пожалуйста, подождите, пока Almeza MultiSet Professional установится на ваш компьютер.'; end else begin WizardForm.PageNameLabel.Caption:='Распаковка'; WizardForm.PageDescriptionLabel.Caption:='Пожалуйста, подождите, пока Almeza MultiSet Professional Portable распакуется на ваш компьютер.'; end; end; end; |
Цитата:
Код:
procedure dirBackClick(Sender: TObject); |
Большое спасибо помогло!
|
подскажите, пожалуйста, какие параметры в инно [setup] отвечают за цифровую подпись установщика?
когда-то помнил но вот подзабыл |
R.i.m.s.k.y., Справка » Секция скриптов » Директивы секции [Setup] » SignTool
Также: "Справка » Вкладка "Указатель" В окне под "Введите ключевое слово для поиска:", введите: signature |
ребята помогите с дополнительным по убираю галочку а по всё равно устанавливается
Код:
#define MyAppName "My Program" |
Цитата:
Отметил красным жирным шрифтом: Скрытый текст
Код:
[Components] |
Nordek Спасибо |
Подскажите пожалуйста.
Создавал инсталятор с уменьшенными размерами формы(картинка 460х200). Кусок скрипта: Код:
with WizardForm do |
Dodakaedr
Есть страница SelectDirPage на которой отображены компоненты со страницы SelectProgramGroupPage т.е. GroupEdit, GroupBrowseButton и т.д. Как сделать чтобы при выборе InstallerRadioButton страница отображалась как есть, а при выборе PortableRadioButton компоненты относящиеся к SelectProgramGroupPage не отображались. Сам скрипт Скрытый текст
[Setup] AppName=My Program AppVersion=1.5 DefaultDirName={pf}\My Program DefaultGroupName=My Program [ISFormDesigner] WizardForm=FF0A005457495A415244464F524D0030108704000054504630F10B5457697A617264466F726D0A57697A61726 4466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C656674020 00B4578706C69636974546F7002000D4578706C6963697457696474680301020E4578706C69636974486569676874038E010 D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724 E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D6550616765084E65787450616765070D4 36F6D706F6E656E74506167650D4578706C69636974576964746803F1010E4578706C696369744865696768740339010000F 110544E65774E6F7465626F6F6B5061676509496E6E6572506167650D4578706C69636974576964746803F1010E4578706C6 963697448656967687403390100F10C544E65774E6F7465626F6F6B0D496E6E65724E6F7465626F6F6B00F110544E65774E6 F7465626F6F6B506167650B4C6963656E7365506167650C50726576696F757350616765070D436F6D706F6E656E745061676 50D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6 F6B506167650D53656C656374446972506167650D4578706C69636974576964746803A1010E4578706C69636974486569676 87403ED00000010544E65774E6F7465626F6F6B506167650D436F6D706F6E656E74506167650743617074696F6E142400000 0D092D18BD0B1D0BED18020D182D0B8D0BFD0B020D183D181D0B0D0BDD0BED0B2D0BAD0B80B4465736372697074696F6E142 A000000D092D18BD0B1D0B5D180D0B8D182D0B520D182D0B8D0BF20D183D181D182D0B0D0BDD0BED0B2D0BAD0B80C5072657 6696F757350616765070B57656C636F6D6550616765084E65787450616765070B4C6963656E736550616765000C544E65774 7726F7570426F7811496E7374616C6C657247726F7570426F78044C656674020003546F70020005576964746803CD0006486 56967687402460743617074696F6E1419000000D0A2D0B8D0BF20D183D181D182D0B0D0BDD0BED0B2D0BAD0B8085461624F7 26465720200000F544E6577526164696F427574746F6E09496E7374616C6C6572044C656674020A03546F700210055769647 46803BE000648656967687402110743617074696F6E142E000000D0A3D181D182D0B0D0BDD0BED0B2D0BAD0B020D0BED0B1D 18BD187D0BDD0BED0B920D0B2D0B5D180D181D0B8D0B807436865636B656409085461624F726465720200074F6E436C69636 B070E496E7374616C6C6572436C69636B00000F544E6577526164696F427574746F6E08506F727461626C65044C656674020 A03546F70022B05576964746803BE000648656967687402110743617074696F6E1438000000D0A0D0B0D181D0BFD0B0D0BAD 0BED0B2D0BAD0B020D0BFD0BED180D182D0B0D182D0B8D0B2D0BDD0BED0B920D0B2D0B5D180D181D0B8D0B8085461624F726 465720201074F6E436C69636B070D506F727461626C65436C69636B0000000000000000448656967687403ED000000F11054 4E65774E6F7465626F6F6B506167650D53656C656374446972506167650D4578706C69636974576964746803A1010E457870 6C6963697448656967687403ED00000010544E65774E6F7465626F6F6B506167650D436F6D706F6E656E7450616765074361 7074696F6E1426000000D092D18BD0B1D0BED18020D182D0B8D0BFD0B020D183D181D182D0B0D0BDD0BED0B2D0BAD0B80B44 65736372697074696F6E142A000000D092D18BD0B1D0B5D180D0B8D182D0B520D182D0B8D0BF20D183D181D182D0B0D0BDD0 BED0B2D0BAD0B80C50726576696F757350616765070B57656C636F6D6550616765084E65787450616765070B4C6963656E73 6550616765000C544E657747726F7570426F7811496E7374616C6C657247726F7570426F78044C656674020003546F700200 05576964746803CD000648656967687402460743617074696F6E1419000000D0A2D0B8D0BF20D183D181D182D0B0D0BDD0BE D0B2D0BAD0B8085461624F726465720200000F544E6577526164696F427574746F6E09496E7374616C6C6572044C65667402 0A03546F70021005576964746803BE000648656967687402110743617074696F6E142E000000D0A3D181D182D0B0D0BDD0BE D0B2D0BAD0B020D0BED0B1D18BD187D0BDD0BED0B920D0B2D0B5D180D181D0B8D0B807436865636B656409085461624F7264 657202000754616253746F7009074F6E436C69636B070E496E7374616C6C6572436C69636B00000F544E6577526164696F42 7574746F6E08506F727461626C65044C656674020A03546F70022B05576964746803BE000648656967687402110743617074 696F6E1438000000D0A0D0B0D181D0BFD0B0D0BAD0BED0B2D0BAD0B020D0BFD0BED180D182D0B0D182D0B8D0B2D0BDD0BED0 B920D0B2D0B5D180D181D0B8D0B8085461624F726465720201074F6E436C69636B070D506F727461626C65436C69636B0000 000000000000 [code] { RedesignWizardFormBegin } // Не удалять эту строку! // Не изменять эту секцию. Она создана автоматически. var ComponentPage: TWizardPage; InstallerGroupBox: TNewGroupBox; Installer: TNewRadioButton; Portable: TNewRadioButton; procedure InstallerClick(Sender: TObject); forward; procedure PortableClick(Sender: TObject); forward; procedure RedesignWizardForm; begin { Creates custom wizard page } ComponentPage := CreateCustomPage(wpWelcome, 'Выбор типа установки', 'Выберите тип установки'); { InstallerGroupBox } InstallerGroupBox := TNewGroupBox.Create(WizardForm); with InstallerGroupBox do begin Parent := ComponentPage.Surface; Left := ScaleX(0); Top := ScaleY(0); Width := ScaleX(205); Height := ScaleY(70); Caption := 'Тип установки'; end; { Installer } Installer := TNewRadioButton.Create(WizardForm); with Installer do begin Parent := InstallerGroupBox; Left := ScaleX(10); Top := ScaleY(16); Width := ScaleX(190); Height := ScaleY(17); Caption := 'Установка обычной версии'; Checked := True; OnClick := @InstallerClick; end; { Portable } Portable := TNewRadioButton.Create(WizardForm); with Portable do begin Parent := InstallerGroupBox; Left := ScaleX(10); Top := ScaleY(43); Width := ScaleX(190); Height := ScaleY(17); Caption := 'Распаковка портативной версии'; OnClick := @PortableClick; end; Installer.TabOrder := 0; Portable.TabOrder := 1; InstallerGroupBox.TabOrder := 0; { ReservationBegin } // Вы можете добавить ваш код здесь. { ReservationEnd } end; procedure PortableClick(Sender: TObject); begin end; procedure InstallerClick(Sender: TObject); begin end; //////////////////////////////////////////////////////////////////////////////// var // StartMenuIcon,DesktopIcon: TCheckBox; // // function MakeDesktopIcon: Boolean; begin Result:=DesktopIcon.Checked; end; // function MakeStartMenuIcon: Boolean; begin Result:=StartMenuIcon.Checked;end; // // procedure NoStartMenuIcon(Sender: TObject); // begin // if StartMenuIcon.Checked = true then // begin // wizardform.GroupEdit.enabled:= false; // wizardform.GroupBrowseButton.enabled:= false; // end else begin // wizardform.GroupEdit.enabled:= true; // wizardform.GroupBrowseButton.enabled:= true; // end; // end; // //////////////////////////////////////////////////////////////////////////////// procedure InitializeWizard(); begin RedesignWizardForm; WizardForm.DiskSpaceLabel.Hide; ////////////////////////////////////////////////////////////////////////////////////////////// begin // // wizardform.SelectDirBrowseLabel.top:= wizardform.GroupEdit.top - ScaleY(48); // wizardform.SelectDirLabel.left:= wizardform.GroupEdit.left + ScaleY(40); // // wizardform.GroupEdit.parent:= wizardform.SelectDirPage; // wizardform.GroupEdit.top:= wizardform.GroupEdit.top + ScaleY(71); // // wizardform.GroupBrowseButton.parent:= wizardform.SelectDirPage; // wizardform.GroupBrowseButton.top:= wizardform.GroupBrowseButton.top + ScaleY(70); // // wizardform.DirEdit.top:= wizardform.GroupEdit.top - ScaleY(90); // wizardform.DirBrowseButton.top:= wizardform.GroupEdit.top - ScaleY(92); // // wizardform.SelectGroupBitmapImage.parent:= wizardform.SelectDirPage; // wizardform.SelectGroupBitmapImage.left:= wizardform.GroupEdit.left + ScaleY (0); // wizardform.SelectGroupBitmapImage.top:= wizardform.GroupEdit.top - ScaleY(64); // // wizardform.SelectStartMenuFolderLabel.parent:= wizardform.SelectDirPage; // wizardform.SelectStartMenuFolderLabel.left:= wizardform.GroupEdit.left + ScaleY (40); // wizardform.SelectStartMenuFolderLabel.top:= wizardform.GroupEdit.top - ScaleY(56); // // wizardform.SelectStartMenuFolderBrowseLabel.parent:= wizardform.SelectDirPage; // wizardform.SelectStartMenuFolderBrowseLabel.left:= wizardform.GroupEdit.left + ScaleY (0); // wizardform.SelectStartMenuFolderBrowseLabel.top:= wizardform.GroupEdit.top - ScaleY(30); // ////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// DesktopIcon := TCheckBox.Create(WizardForm); // DesktopIcon.Parent := WizardForm.SelectDirPage; // DesktopIcon.Caption := 'Добавить ярлык на Рабочий стол'; // DesktopIcon.SetBounds(ScaleX(0),WizardForm.DirEdit.Top+ScaleY(140),ScaleX(300),ScaleY(25)); // DesktopIcon.TabOrder := 0; // DesktopIcon.Checked:= true; // ////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////// StartMenuIcon := TCheckBox.Create(WizardForm); // StartMenuIcon.Parent := WizardForm.SelectDirPage; // StartMenuIcon.Caption := 'Не создавать папку в меню Пуск'; // StartMenuIcon.SetBounds(ScaleX(220),WizardForm.DirEdit.Top+ScaleY(140),ScaleX(300),ScaleY(25)); // StartMenuIcon.TabOrder := 0; // StartMenuIcon.Checked:= false; // StartMenuIcon.OnClick:= @NoStartMenuIcon; // end; // ////////////////////////////////////////////////////////////////////////////////////////////////// end; |
Цитата:
Скрытый текст
Код:
procedure CurPageChanged(CurPageID: Integer); |
Dodakaedr, Большое спасибо!
|
ребята подскажите как сделать что бы инсталлятор запускался от администратора
|
vadjliss, Справка » Секция скриптов » Директивы секции [Setup] » PrivilegesRequired
Скрытый текст
Цитата:
|
Подскажите пожалуйста.
Можно как-то сделать чтоб при установке в WelcomeLabel дописывалась разрядность устанавливаемого приложения(если есть файлы NOT IsWin64 и IsWin64)? И чтоб потом в "Установка и удаление программ" в названии программы тоже стояла разрядность? |
kotyarko@fb, спасибо.
Цитата:
kotyarko@fb, как-то у меня не очень коректно работает: 1. Не отрабатывает "AppName"-пишет просто "Вас приветствует мастер установки х32. 2. В установка и удаление в имени программы отсутствует х64(х86). 3. В таком виде как Вы дали при запуске в виндовс х64 и х86 пишет "Вас приветствует мастер установки х32". 4. У меня свой WelcomeLabel1 указанный в [CustomMessages] и он с ним не срабатывает, только со стандартным. Подскажите пожалуйста как исправить, или может есть другой вариант как задать данный параметр? |
МИШАНЧИК, я неправильно понял ваше сообщение, и привёл нерабочий пример (не было возможности проверить). Когда понял - удалил своё сообщение, но, видимо, вы его ещё застали.
Цитата:
Код:
[Messages] |
Цитата:
Скрытый текст
Код:
[setup] |
Dodakaedr, спасибо.
Все хорошо, только теперь еще Welcx... прописывается в SetupWindowTitle, вместо моего SetupWindowTitle указанного в [Messages]. Т.е. если в [CustomMessages] Welcx... задать значение: "Будет установлена программа х", то эта же надпись будет и в самом верху инсталятора в SetupWindowTitle, а не только в WelcomeLabel1. Можно как-то избавиться от этого в SetupWindowTitle? |
МИШАНЧИК, удалите строку WizardForm.Caption := WizardForm.WelcomeLabel1.Caption;
|
Как организовать подхват настроек через раздел Files с проверкой и без копирования в инсаллятор?
|
Dodakaedr, Как правильно зарегестрировать программу. Прописывать в секции [Registry] все записи найденные в реестре или только те строки что относятся к ключу. Или можно как-то прописать в скрипте reg файл.
|
ZVSRus, если программа не делает прочих проверок, то достаточно записи ключа: экспортируете из реестра ключ и через конвертер, который в шапке темы есть, конвертируете в формат inno, потом копируете строки в свой скрипт в секцию [Registry].
habib2302, если правильно помню, то как-то так: Код:
[Files] |
Цитата:
Код:
[Files] skipifsourcedoesntexist - Пропустить, если источник отсутствует. Т.е пропускает файл или каталог, если таковые отсутствуют. Цитата:
Код:
[Run] |
Вопрос ко-всем знающим форум-чанам. Как правильно экспортировать ключ реестра. Какими программами лучше всего пользоваться для снятия снимков реестра. Как это делается. Не могу сделать ACDSee 5.0 PowerPack зарегестрированной, не могу корректно экспортировать из реестра данные. Опишите как все это делается на своих конкретных примерах.
|
ZVSRus, Любая программа по работе с реестром. Но можно и стандартным способом: кнопка "Пуск" > "Выполнить" вводите regedit > жмете "Enter", перед вами появится стандартный обозреватель реестра.
Скрытый текст
Цитата:
|
Dodakaedr, Экспортирую как на вашем рисунке. В regedit в строке поиск ввожу название программы, выдает список в около 1000 строк, все экспортирую в reg файл. Далее делаю в секции [Run]
Filename: regedit.exe; Parameters: "/S ""{src}\MyRegistryFile.reg""" в итоге выдает ошибки при запуске программы. Или ACDSee 5.0 такая хитрозадая или что-то делаю неправильно с реестром. За 2 дня всю голову сломал. |
Так программа вносит данные в реестр
|
ZVSRus, чтобы вам помочь, надо знакомится с работой программы, на что сейчас нету времени.
|
Dodakaedr, Как правильно сделать чтобы ярлыки реально закреплялись на панели задач и в меню пуск
|
|
Цитата:
На примере ACDSee 5 Pro:
Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\ACD Systems\ACDSee Pro\50\InTouch2] Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\ACD Systems\ACDSee Pro\50\LClient] Не показывать Quick Start Guide: Код:
[HKEY_CURRENT_USER\Software\ACD Systems\ACDSee Pro\50] |
Цитата:
Код:
[Icons] |
Dodakaedr, подскажите пожалуйста, а как сделать:
1. чтоб разрядность отображалась и в SetupWindowTitle 2. убрать слово моя программа setup в описании инсталятора создаваемого инно, или заменить его на программа и т.п.? |
|
Цитата:
|
Какой Flags нужно подставить чтобы эти две папки устанавливались в данных директориях, но их не было видно,
а чтобы появлялись они только после первого запуска программы. Или нужно сделать что-то другое. Код:
Source: C:\Installer\Roaming\ACD Systems\ImageDB\*; DestDir: {userappdata}\ACD Systems\ImageDB; Flags: ignoreversion recursesubdirs createallsubdirs; Check: RusLang and InstallerCheck |
Цитата:
Скрытый текст
Код:
[setup] Цитата:
Цитата:
|
Dodakaedr, Есть программа (Ваша) Windows Player 3.0.0.0 RePack Portable by Dodakaedr вместо страницы финиша появляется окно.
Код:
if MsgBox |
Dodakaedr, подскажите пожалуйста. Пытался заменить окно "о прграмме" этим скриптом:
скрипт
[Files]
Source: compiler:CallbackCtrl.dll; Flags: dontcopy [code] type TWFProc = function(h:hWnd;Msg,wParam,lParam:Longint):Longint; function CallWindowProc(lpPrevWndFunc: Longint; hWnd: HWND; Msg: UINT; wParam: Longint; lParam: Longint): Longint; external 'CallWindowProcA@user32.dll stdcall'; function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall'; function WrapWFProc(Callback: TWFProc; ParamCount: Integer): Longword; external 'wrapcallbackaddr@files:CallbackCtrl.dll stdcall'; var OldProc:Longint; procedure AboutSetupClick; begin //здесь обрабатываем нажатие на пункт меню "О программе ..." MsgBox('bla-bla-bla', mbInformation, MB_OK); end; function WFWndProc(h:HWND;Msg,wParam,lParam:Longint):Longint; begin if (Msg=$112) and (wParam=9999) then begin Result:=0; AboutSetupClick; end else begin if Msg=$2 then SetWindowLong(WizardForm.Handle,-4,OldProc); Result:=CallWindowProc(OldProc,h,Msg,wParam,lParam); end; end; procedure InitializeWizard; begin OldProc:=SetWindowLong(WizardForm.Handle,-4,WrapWFProc(@WFWndProc,4)); end; и на windows 7 х86 при отказе от дальнейшей установки(скрипт скомпилирован в 7х64) и закрытии инсталятора, выдает ошибку: |
Цитата:
Скрытый текст
Код:
[Files] Цитата:
Скрытый текст
Код:
;#include "botva2.iss" |
Dodakaedr, Сделал как описано. Все иконки на своих местах. Но почему то программа не запускается. Путь к файлу прописан вручную.
Разобрался. Exec(ExpandConstant('{pf}\ArtIcons Pro\ARTICONS.exe'), '', '', SW_SHOW, ewNoWait, ResultCode); при этом пути запуск происходит. Exec(ExpandConstant('Program Files (x86)\ArtIcons Pro\ARTICONS.exe'), '', '', SW_SHOW, ewNoWait, ResultCode); при этом пути запуск не происходит. В чём разница подскажите? |
Цитата:
В Код:
Exec(ExpandConstant('Program Files (x86)\ArtIcons Pro\ARTICONS.exe'), '', '', SW_SHOW, ewNoWait, ResultCode); Код:
Exec(ExpandConstant('C:\Program Files (x86)\ArtIcons Pro\ARTICONS.exe'), '', '', SW_SHOW, ewNoWait, ResultCode); Можно жёстко указать: {pf32} - Путь для 32-разрядного системного каталога Program Files {pf64} - Путь для 64-разрядного системного каталога Program Files |
Забыл выставить C:\ Блин глаз за мылился.
|
Цитата:
Скрытый текст
Код:
#ifndef IS_ENHANCED |
Цитата:
Скрытый текст
Код:
#define icon "myicon.ico" |
Nordek, Так проще, но как к этому прикрурить этот скрипт.
Скрытый текст
Код:
[Setup] |
парни помогите решить проблему надо что бы создался 1 файл ехе. а в этом скрипте создаётся ехе. и bin. то есть 2 файла
Код:
#define MyAppName "CorelCAD 2016" |
ZVSRus, чукча не читатель, чукча писатель.
Скрытый текст
Код:
#ifndef IS_ENHANCED vadjliss, из справки Inno
[Setup]: DiskSpanning
Возможные значения: yes или no Значение по умолчанию: no Опмсание: При значении yes будет производиться разбиение на диски. Определяет, создавать ли компилятору один файл SETUP.EXE, или делить его на файлы (SETUP-*.BIN), которые помещаются на дискету, CD-ROM, DVD-ROM или другой носитель. |
как совместить если имеется уже уже токая строка procedure CurStepChanged(CurStep: TSetupStep);
|
vadjliss,
Код:
Procedure CurStepChanged1(CurStep: TSetupStep); |
nik1967, Все хорошо. Только не отображается иконка в левом верхнем углу на бордюре.
И второй вопрос. Можно ли к данному скрипту прикрутить InstallerCheck и PortableCheck Скрытый текст
#ifndef IS_ENHANCED
#error Enhanced edition of Inno Setup (restools) is required to compile this script #endif [Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application OutputDir=. [Files] Source: 1.ico; Flags: dontcopy; [Languages] Name: ru; MessagesFile: compiler:Languages\russian.isl [code] function LoadImage(hInst: THandle; ImageName: PansiChar; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external 'LoadImageA@user32.dll stdcall delayload'; procedure InitializeWizard; begin ExtractTemporaryFile('1.ico'); end; procedure CurStepChanged(CurStep: TSetupStep); var ResultCode: Integer; begin if CurStep = ssDone then if MsgBoxEx(0,'Программа '+'{#SetupSetting("AppName")}'+' установлена!'+#10#10#13+'Запустить '+'{#SetupSetting("AppName")}'+'?', 'Установка — '+'{#SetupSetting("AppName")}',MB_YESNO,LoadImage(0,ExpandConstant('{tmp}')+'\1.ico',1,32,32,$1010), 0) = IDYES then Exec(ExpandConstant('{win}\notepad.exe'), '', '', SW_SHOW, ewNoWait, ResultCode); end; |
Цитата:
Код:
[Setup] Цитата:
Скрытый текст
Код:
procedure CurStepChanged(CurStep: TSetupStep); |
Dodakaedr, Не отображается иконка в левом верхнем углу на бордюре в данном куске скрипта
т.е. на бордюре маленького окошечка вместо финишной страницы от nik1967 Скрытый текст
Код:
#ifndef IS_ENHANCED |
Цитата:
|
Вложений: 1
Подскажите, пожалуйста. Решил сделать собственное окно выхода из инсталла, кнопки сделал через ботву. На всех страницах окно выхода работает нормально, но на странице установки при нажатии "отмена" появляется ошибка Ничего не могу понять. Скрипт прикрепил.
|
Bartron, http://rghost.ru/79vcWlr9H
Пробуйте. |
TryRooM, всё равно та же ошибка на странице установки...
|
Вот скриншот страницы установки. Проверял на Ansi и Unicode версии от Restools
|
TryRooM, у вас на скриншоте Readypage, а ошибка появляется непосредственно на Installingpage (когда уже идёт сама установка).
|
Bartron, http://rghost.ru/6tRGNZ995
Тогда так. Стандартная установка, ошибки нет. |
TryRooM, не помогает. Что странно, если прикрутить распаковку через Isdone, то окно работает нормально, ошибки нет, но если распаковка стандартная (что мне и нужно), то появляется ошибка; и если ботву убрать, окно тоже работает нормально, ничего понять не могу...
|
Bartron, При стандартной установке, скрипт работает. А понять, что у вас не клеится, я не телепат.
|
|
habib2302,
Исходя из вашего кода, файл Settings.reg должен находиться, в папке WinRAR, тогда, ошибки не будет. |
Dodakaedr, Как это все реализовать
|
TryRooM, он там и лежит. Тем более вы сами подумайте зачем я делаю еще проверку на файл??
|
Вложений: 1
habib2302, Вот ваш пример. Скомпилируйте и посмотрите.
|
Цитата:
|
Цитата:
ZVSRus, вот код для закрепления Код:
|
Цитата:
|
ZVSRus, ага
|
Цитата:
Есть наброски, т.е. на вновь созданной странице прикрутить 2 чекбокса. И сразу 2 вопрос, где-то в справке находил как закрепить в меню пуск. {userstartmenu} & {commonstartmenu} Путь к "корню" меню Пуск. А закрепить на панели задач никак. 2 вопрос заключается в том, можно-ли закрепить ярлык на панели задач через секцию [Icons], чтобы реально закреплялся. Сам скрипт. Скрытый текст
Код:
[Setup] |
Доброе время суток. Помогите с кодом. Пытаюсь выполнить удаление файлов через unlocker, но происходит "exit code: 1" после запуска
Код:
[Files] |
Цитата:
Код:
Exec(ExpandConstant('{tmp}\Unlocker.exe'), Format('"%s\RarExt.dll" /S /D', [lpBuff]), '', SW_HIDE, ewWaitUntilTerminated, RC) |
|
Подскажите, как проверить синтаксис ввода. Через edit забиваются параметры в конфиг, должны соответствовать шаблону --param1 --param2 и т.д.
|
Всем привет, нужны компоненты с галочкой без галочки с кружочком и зачеркнутые компоненты с галочкой и кружочком.
|
Не у кого нет примеров компонентов что ли?
|
Цитата:
Скрытый текст
Код:
[Components] |
kotyarko@fb, а как со снятыми галочками выставить
|
Цитата:
|
Всем Доброго времени суток.
Есть скрипт где на странице Welcome присутствует кнопка "Назад" при нажатии ничего не происходит. Можно ли как-то реализовать эту кнопку, чтобы она возвращала назад на диалоговое окно выбора языка. Скрипт Скрытый текст
Код:
[Setup] |
Цитата:
|
Цитата:
на стр. Приветствия наверное что-то имел ввиду. А так для чего это все. |
kotyarko@fb, Все норм спасибо большое
|
Всем привет. Нашёл функции для определения типа дисков
Скрытый текст
function REMOVABLE(Drive: String): Boolean;
begin Result:= GetDriveType(Drive) = 2; end; function REMOTE(Drive: String): Boolean; begin Result:= GetDriveType(Drive) = 4; end; function CDROM(Drive: String): Boolean; begin Result:= GetDriveType(Drive) = 5; end; |
Цитата:
Цитата:
Цитата:
|
Цитата:
Наверное из того же репертуара. |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Как сделать проверку наличие папок с любым названием и чтобы инсталлятор копировал из {src} в {app}?
|
Цитата:
Код:
Procedure CurStepChanged(CurStep: TSetupStep); |
kotyarko@fb,
а что нибудь попроще допустим через DirExists |
Цитата:
|
Цитата:
Код:
[Run] |
При компиляции выводится ошибка из-за апострофа в названии (Alan Wake's American Nightmare). Как можно скомпилировать скрипт не убирая его?
Код:
function ApplicationName(Default:String):String; Всё, разобрался. Нужно было два апострофа делать и тогда всё нормально. |
Знающие люди подскажите, как под стандартные "DirEdit и DirBrowseButton" сделать подложку "TNewGroupBox"
|
ZVSRus, В свойствах DirEdit и DirBrowseButton задайте parent TNewGroupBox
|
Dodakaedr, А можно поподробнее
|
ZVSRus,
Скрытый текст
[Setup]
AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application DisableProgramGroupPage=yes [code] var GroupBox1,GroupBox2: TNewGroupBox; procedure InitializeWizard(); begin GroupBox1 := TNewGroupBox.Create(WizardForm); with GroupBox1 do begin Parent := WizardForm.SelectDirPage; Left := ScaleX(0); Top := ScaleY(75); Width := ScaleX(417); Height := ScaleY(65); end; GroupBox2 := TNewGroupBox.Create(WizardForm); with GroupBox2 do begin Parent := WizardForm.SelectDirPage; Left := ScaleX(0); Top := ScaleY(150); Width := ScaleX(417); Height := ScaleY(65); end; with WizardForm.DirEdit do begin Left := ScaleX(10); Top := ScaleY(20); Width := ScaleX(310); Parent := GroupBox1; end; with WizardForm.DirBrowseButton do begin Left := ScaleX(330); Top := ScaleY(20); Parent := GroupBox1; end; with WizardForm.GroupEdit do begin Left := ScaleX(10); Top := ScaleY(20); Width := ScaleX(310); Parent := GroupBox2; end; with WizardForm.GroupBrowseButton do begin Top := ScaleY(20); Left := ScaleX(330); Parent := GroupBox2; end; end; |
Ребята помогите пожалуйста.
Скрипт Скрытый текст
Код:
[Setup] Как сделать что-бы при возвращении с Portable распаковки на Installer установку два нижних чекбокса были видны но галочки не стояли. Нужно что-то поменять, не знаю что. |
ZVSRus, Так
Скрытый текст
Код:
Installer: |
помогите переместить на задний план NewGroupBox1
NewGroupBox1
Код:
[Code] Мой скрипт |
|
Цитата:
то чуть выше скрипт от vint56 |
Всем Доброе время суток.
Может кто знает, как в оригинальный INNO установщик запихнуть DLL,ку, и прописать ее в реестре, что-бы при деинсталляции она удалялась. |
|
vadjliss,
Код:
[Setup] |
Цитата:
Код:
[_Code] |
Парни подскажите, как сделать чтобы файл удалялся вместе со всеми файлами при деинсталляции.
Файл (DLL) добавлен в дистрибутив отдельно для регистрации. |
ZVSRus,
Код:
[UninstallDelete] |
sergey3695,
[UninstallDelete] Type: FilesAndOrDirs; Name: {app}; Результат нулевой, как не удалялся, так и не удаляется. Наверное надо как-то через скрипт. |
Цитата:
Т.е: Код:
[Files] |
Цитата:
Когда msimg32.dll находится в папке с программой, программа становится зарегестрированной. Если ее убрать программа не зарегестрирована. Прога Light Image Resizer 4.7.6.1 |
ZVSRus,
Цитата:
Код:
Procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); |
Цитата:
наверное надо что-то дописать к процедуре. |
|
Цитата:
Код:
UnloadDLL(ExpandConstant('{app}\msimg32.dll')); что часть элементов осталась, вы можете остальное удалить вручную. Хотя ничего нет, все удалилось. |
Как убрать это сообщение:
|
Как в компоненты добавить установку шрифтов в папку Windows fonts.
|
BMODS,
Код:
[Files] |
kotyarko@fb, а путь как указать ?
|
Примеры тут были знаю может кто скинуть :)
|
Цитата:
|
Подскажите, как можно заменить несколько десятков значений на свое в ini файле?
Имеется ini файл на 1130 строк и в разных секциях в разных ключах есть определенное значение (%Programm Path%) вот и требуется его заменить. Через секцию [INI] не вариант. Цитата:
Скрытый текст
Код:
[Setup] |
Цитата:
Где-то в системе наверное остались папки, (или в реестре записи) не могу найти. Это сообщение напрягает. |
Цитата:
Скрытый текст
Код:
[Setup] |
Цитата:
Код:
Name: "{userstartmenu}\Light Image Resizer 4"; Filename: "{app}\{#MyAppExeName}"; Check: PanelPuskCheck and UserIconCheck; C:\ProgramData\Microsoft\Windows\Start Menu\Programs\ObviousIdea\Light Image Resizer 4\Light Image Resizer 4.lnk C:\Users\ZVSRus\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\ObviousIdea\Light Image Resizer 4\Light Image Resizer 4.lnk Если так: Код:
Procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); |
Цитата:
|
В секции Run есть ссылка на запуск интернет страницы через чекбокс на финишной странице.
Как прикрутить эту ссылку к кнопкам на диалоговом окне вместо финишной страницы. (FinishedPage) пропущена. Код:
[Run] |
Цитата:
Так
Код:
[Setup] Либо так
Код:
[Setup] Кнопку на диалоговом окне, насколько я знаю не создать. |
|
Цитата:
Но хотелось бы запуск страницы прикрутить к скрипту ниже. Прикрутить к чекбоксу. Скрипт Скрытый текст
Код:
//#include "botva2.iss" |
|
мне нужно саму рамку увеличить не внутриннию а наружную
|
vadjliss, кликаешь на любое место WizardForm и растягиваешь, как тебе надо.
|
пишет что блокировано
|
Цитата:
Цитата:
что я вам ответил в #1176 сообщении. Или, как вы собрались увеличивать OuterNotebook, если WizardForm не увеличена? Т.е у WizardForm не хватает области для дальнейшего растягивания, чтобы растянуть OuterNotebook нужно сначала растянуть WizardForm: а уже тогда растягивать OuterNotebook: Или вы на столько изменили форму, что невозможно определить что вам нужно, и в действительности вам нужно растянуть InnerNotebook? InnerNotebook: |
Цитата:
Скрытый текст
Код:
[Setup] |
Цитата:
Чекбокс создал, скрипт прикрутить не смог. Большое спасибо. |
парни подскажите как сделать что бы программа добавлялась в контекстное меню
в справке не нашёл и ещё ни как не могу понять в чём причина [code][Setup] AppName=My Program AppVerName=My Program v 1.5 DefaultDirName={pf}\My Program OutputDir=. Compression=lzma/ultra InternalCompressLevel=ultra SolidCompression=yes [Languages] Name: rus; MessagesFile: compiler:Languages\Russian.isl Код:
type |
Цитата:
Код:
Result := FloatToStr(round(Bytes/oneMB/oneMB*1000)/1000) + ' Тб'; |
|
Доброго времени суток.
Прошу помочь 1. Свернуть дерево компонентов - что необходимо прописать кроме флага Collapsed в [Components]? 2. Как изменить код "запрет установки в пустое место", чтобы можно было продолжить установку после предупреждения, и вместо ок - выдавало запрос:все равно продолжить? - да/нет Скрытый текст
function NextButtonClick(CurPageID: Integer): Boolean; begin Result := True; case CurPageID of wpSelectDir: if not FileExists(ExpandConstant('{app}\file.xxx')) then begin MsgBox('Установка невозможна. Проверьте правильность указаного пути!' #13#13'Installation is not possible. Check the correctness of the specified path!', mbError, MB_OK); Result := False; end; end; end; 3. Отображение компонентов в зависимости от языка. Если выбирается Русский, то в последствии видны компоненты только А В С, если английский, то только D E F |
vadjliss,
Код:
[setup] ToBeLife, 1. Не знаю и думаю это не хорошая идея. 2. Код:
function NextButtonClick(CurPageID: Integer): Boolean; Код:
[Languages] |
Цитата:
Код:
[Setup] |
ребята нашёл скрипт отключение музыки кнопкой там стоит файл waw, а у меня mp3 как исправить , а то выдаёт ошибку менял на mp3 толку нет
[code] [Files] Source: compiler:sound.wav; DestDir: "{tmp}"; Flags: dontcopy nocompression Код:
|
Цитата:
|
Требуется помощь исправления пути под кнопкой Обзор... программной группы.
Скрипт Скрытый текст
Код:
#include "Include\botva2.iss" |
|
всё разабрался
|
ZVSRus, вопрос не ясен.
|
Цитата:
|
парни вопрос запись в host вот этот код работает только на 32 битной системе а как сделать что бы и на 64 битную записывала
if exist %systemroot%\SysWOW64 ( set hosts=%systemroot%\SysWOW64\drivers\etc\hosts ) else ( set hosts=%systemroot%\System32\drivers\etc\hosts ) cacls %hosts% /E /G All:F cacls %hosts% /E /G ‚бҐ:F attrib -s -r -h %hosts% (echo. echo # echo 127.0.0.1 cap.cyberlink.com echo 127.0.0.1 activation.cyberlink.com echo # )>>%hosts% cacls %hosts% /E /R All cacls %hosts% /E /R ‚ᥠipconfig /flushdns |
Всем привет может кто скинуть простой скрипт.
|
dimantv_wot@vk, краткость, может быть, и сестра таланта, но не в данном случае.
Вот вам самый простой скрипт: Код:
[Setup] |
kotyarko@fb, почти точто нужно но как можно включить начальную страницу для смены картинки слева сбоку
|
Цитата:
Цитата:
Код:
[Setup] |
|
|
Вложений: 1
|
Как по умолчанию выставить свой путь к установки вроде что то типо того .\
|
Каков размер етой иконки?
|
Цитата:
Код:
[Code] Цитата:
|
всё грамотно спасибо Nordek
|
Как в DefaultDirName= выставить пустой путь не создавая лишние папки т.е что бы в компонентах распаковывался путь как прописываю в file
|
Цитата:
Код:
CreateAppDir=no |
Как из страницы Компонентов отключить [Types]
|
Цитата:
Пример
Код:
[Setup] |
нужна помощь парни сделал побольше инсталлятор теперь ни как не могу растянуть картинку баковую на весь инсталлятор что бы она отображалась на всех страницах Код:
#define A = (Defined UNICODE) ? "W" : "A" |
Собрал инсталлятор. Есть-ли возможность указать в скрипте, чтобы в Programs and Features не указывалась версия продукта, и наименование было взято не из MyAppName ?
|
Нашел - UninstallDisplayName
|
Подскажите, как правильно реализовать описание компонентов, когда часть из них доступно только для определенного языка.
Варианты для русской локализации скрыты, а описание к ним остается. В примере вместо описания английских компонентов E и F описываются скрытые компоненты В и С. Скрытый текст
[Components] Name: Mode; Description: mode; Types: custom; Languages: rus; flags: fixed Name: Mode/A; Description: {cm:C1}; Languages: rus; Flags: disablenouninstallwarning Name: Mode/B; Description: {cm:C2}; Languages: rus; Flags: disablenouninstallwarning Name: Mode/C; Description: {cm:C3}; Languages: rus; Flags: disablenouninstallwarning Name: Mode/D; Description: {cm:C4} Languages: rus; Flags: disablenouninstallwarning Name: Mode/E; Description: {cm:C5}; Languages: rus; Flags: disablenouninstallwarning Name: Mode2; Description: mode; Types: custom; Languages: eng; flags: fixed Name: Mode2/A; Description: {cm:C1}; Languages: eng; Flags: disablenouninstallwarning Name: Mode2/E; Description: {cm:C5}; Languages: eng; Flags: disablenouninstallwarning Name: Mode2/F; Description: {cm:C6} Languages: eng; Flags: disablenouninstallwarning [_code] function enabledesc(ComponentsListHandle: HWND; DescLabelHandle: HWND; DescStrings: PChar): BOOL; external 'enabledesc@files:descctrl.dll stdcall'; function disabledesc(): BOOL; external 'disabledesc@files:descctrl.dll stdcall'; var Info: TNewStaticText; InfoCaption: TNewStaticText; InfoPanel: TPanel; procedure DeinitializeSetup3(); begin disabledesc(); end; procedure InitializeWizard3(); begin WizardForm.TypesCombo.Visible:=True; //WizardForm.TypesCombo.Height := ScaleY(20) WizardForm.TypesCombo.Top := ScaleY(45); WizardForm.TypesCombo.Width := ScaleX(417); WizardForm.ComponentsList.Height := ScaleY(186) - WizardForm.TypesCombo.Top; WizardForm.ComponentsList.Top := ScaleY(68); WizardForm.ComponentsList.Width := ScaleX(417); InfoPanel := TPanel.Create(WizardForm); InfoPanel.Parent := WizardForm.SelectComponentsPage; InfoPanel.Caption := ''; InfoPanel.Top := ScaleY(2); InfoPanel.Left := ScaleX(0); InfoPanel.Width := ScaleX(418); InfoPanel.Height := ScaleY(42); InfoPanel.BevelInner := bvRaised; InfoPanel.BevelOuter := bvLowered; InfoCaption := TNewStaticText.Create(WizardForm); InfoCaption.Parent := WizardForm.SelectComponentsPage; InfoCaption.Caption := ExpandConstant('{cm:ComponentsInfoPanel1}'); InfoCaption.Left := ScaleX(7); InfoCaption.Top := InfoPanel.Top - ScaleY(6); InfoCaption.Font.Color := clActiveCaption; Info := TNewStaticText.Create(WizardForm); Info.Parent := InfoPanel; Info.AutoSize := False; Info.Left := ScaleX(6); Info.Width := ScaleX(403); Info.Top := ScaleY(6); Info.Height := ScaleY(26); Info.Caption := ExpandConstant('{cm:ComponentsInfoPanel2}'); Info.WordWrap := true; enabledesc(WizardForm.ComponentsList.Handle,Info.Handle, ExpandConstant('{cm:W1};')+ ExpandConstant('{cm:W2};')+ ExpandConstant('{cm:W3};')+ ExpandConstant('{cm:W4};')+ ExpandConstant('{cm:W5};')+ ExpandConstant('{cm:W6};') // ExpandConstant('{cm:W7};')+ // ExpandConstant('{cm:W8};')+ // ExpandConstant('{cm:W9};') ); end; |
Скрытый текст
#define MyAppName "My Program"
#define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" //---Сюда вставлять include---\\ #include "SHFileOperation.iss"; [Setup] ; Примечание: Значение AppId идентифицирует это приложение. ; Не используйте одно и тоже значение в разных установках. ; (Для генерации значения GUID, нажмите Инструменты | Генерация GUID.) AppId={{FD7CFF3B-3C19-4FAE-A164-CA3A90B2C135} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} OutputBaseFilename=setup Compression=lzma SolidCompression=yes [Languages] Name: "default"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "D:\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion ; Примечание: Не используйте "Flags: ignoreversion" для системных файлов [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent [code] //---Сюда вставлять скрипт---\\ var BackupPage: TWizardPage; DeleteRadioButton, MoveRadioButton, NoneRadioButton: TNewRadioButton; const BackupDescText = 'Во избежание проблем совместимости и конфликтов между модификациями рекомендуется удалить уже установленные на данный момент в игровом клиенте.' #13#13 'Выберите необходимый пункт из представленных. При этом будет очищено содержимое папки "res_mods\0.8.11", удалена папка "res_mods\xvm" или созданы резервные копии Ваших файлов.'; DeleteDescText = 'Установщик удалит все файлы в папках.'; MoveDescText = 'Установщик сделает резервную копию всех файлов в папках.'; NoneDescText = 'Установщик оставит всё как есть.'; function BackupCheck_1(): Boolean; var BackupDescLabel, DeleteDescLabel, MoveDescLabel, NoneDescLabel: TLabel; begin BackupPage:=CreateCustomPage(wpWelcome, 'Создание резервных копий файлов перед установкой', 'Пожалуйста, прочтите следующую важную информацию перед тем, как продолжить.'); BackupDescLabel:=TLabel.Create(WizardForm); BackupDescLabel.Parent:=BackupPage.Surface; BackupDescLabel.Left:=0; BackupDescLabel.Top:=0; BackupDescLabel.Width:=BackupPage.SurfaceWidth; BackupDescLabel.Height:=90; BackupDescLabel.AutoSize:=False; BackupDescLabel.Wordwrap:=True; BackupDescLabel.Caption:=BackupDescText; DeleteRadioButton:=TNewRadioButton.Create(WizardForm); DeleteRadioButton.Parent:=BackupPage.Surface; DeleteRadioButton.Checked:=False; DeleteRadioButton.Top:=95; DeleteRadioButton.Width:=BackupPage.SurfaceWidth; DeleteRadioButton.Font.Style:=[fsBold]; DeleteRadioButton.Font.Size:=9; DeleteRadioButton.Caption:='Удалить файлы' DeleteDescLabel:=TLabel.Create(WizardForm); DeleteDescLabel.Parent:=BackupPage.Surface; DeleteDescLabel.Left:=18; DeleteDescLabel.Top:=DeleteRadioButton.Top + DeleteRadioButton.Height + 4; DeleteDescLabel.Width:=BackupPage.SurfaceWidth; DeleteDescLabel.Height:=40; DeleteDescLabel.AutoSize:=False; DeleteDescLabel.Wordwrap:=True; DeleteDescLabel.Caption:=DeleteDescText; MoveRadioButton:=TNewRadioButton.Create(WizardForm); MoveRadioButton.Parent:=BackupPage.Surface; MoveRadioButton.Checked:=True; MoveRadioButton.Top:=140; MoveRadioButton.Width:=BackupPage.SurfaceWidth; MoveRadioButton.Font.Style:=[fsBold]; MoveRadioButton.Font.Size:=9; MoveRadioButton.Caption:='Сделать резервную копию файлов' MoveDescLabel:=TLabel.Create(WizardForm); MoveDescLabel.Parent:=BackupPage.Surface; MoveDescLabel.Left:=18; MoveDescLabel.Top:=MoveRadioButton.Top + MoveRadioButton.Height + 4; MoveDescLabel.Width:=BackupPage.SurfaceWidth; MoveDescLabel.Height:=40; MoveDescLabel.AutoSize:=False; MoveDescLabel.Wordwrap:=True; MoveDescLabel.Caption:=MoveDescText; NoneRadioButton:=TNewRadioButton.Create(WizardForm); NoneRadioButton.Parent:=BackupPage.Surface; NoneRadioButton.Checked:=False; NoneRadioButton.Top:=185; NoneRadioButton.Width:=BackupPage.SurfaceWidth; NoneRadioButton.Font.Style:=[fsBold]; NoneRadioButton.Font.Size:=9; NoneRadioButton.Caption:='Ничего не трогать' NoneDescLabel:=TLabel.Create(WizardForm); NoneDescLabel.Parent:=BackupPage.Surface; NoneDescLabel.Left:=18; NoneDescLabel.Top:=NoneRadioButton.Top + NoneRadioButton.Height + 4; NoneDescLabel.Width:=BackupPage.SurfaceWidth; NoneDescLabel.Height:=40; NoneDescLabel.AutoSize:=False; NoneDescLabel.Wordwrap:=True; NoneDescLabel.Caption:=NoneDescText; end; function BackupCheck_2(): Boolean; begin If DeleteRadioButton.Checked then begin DelTree(ExpandConstant('{app}\res_mods\0.8.11'), True, True, True); DelTree(ExpandConstant('{app}\res_mods\xvm'), True, True, True); CreateDir(ExpandConstant('{app}\res_mods\0.8.11')); end; end; function BackupCheck_3(): Boolean; begin If MoveRadioButton.Checked then begin MoveDir(ExpandConstant('{app}\res_mods\0.8.11\'),ExpandConstant('{app}\res_mods\backup\0.8.11')); MoveDir(ExpandConstant('{app}\res_mods\xvm\'),ExpandConstant('{app}\res_mods\backup\xvm')); CreateDir(ExpandConstant('{app}\res_mods\0.8.11')); DelTree(ExpandConstant('{app}\res_mods\xvm'), True, True, True); end; end; procedure CurStepChanged(CurStep: TSetupStep); begin If CurStep=ssInstall then begin BackupCheck_2(); BackupCheck_3(); end; end; procedure InitializeWizard(); begin BackupCheck_1(); end; Скрытый текст
[Setup]
WizardSmallImageFile=C:\Users\PowerTanks\Desktop\Без имени-1.bmp WizardImageFile=D:\FFOutput\PowerTanks.bmp AppName=PowerTanks ModPack-0.9.2-Extendet AppVerName=1 DefaultDirName={code:MyDirName} Compression=lzma/max SetupIconFile=D:\Mods\Иконки проги и т.д\powertanks.ico AppId={{DE24C6EE-F032-412E-8A6D-A594EA2C8BF5} AppVersion=[2] DefaultGroupName=PowerTanks ModPack-0.9.2-Extendet [Files] //------- ваши картинки ------------ Source: 5.bmp; Flags: dontcopy nocompression Source: 6.bmp; Flags: dontcopy nocompression //------- ваши файлы ------------ Source: BELIE TRUPI\*; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: BT; Source: KRUG15M\*; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: K5; [Components] Name: BT; Description: 1.Белые трупы таков.; Name: K5; Description: 2.Круг 15м.; [code] { RedesignWizardFormBegin } // Не удалять эту строку! // Не изменять эту секцию. Она создана автоматически. var OldEvent_BackButtonClick: TNotifyEvent; procedure WizardFormCreate(Sender: TObject); forward; procedure MainPanelClick(Sender: TObject); forward; procedure PageDescriptionLabelClick(Sender: TObject); forward; procedure _BackButtonClick(Sender: TObject); forward; function MyDirName(S:String): String; var InsPath: String; er: boolean; myFile:String; begin Result:=ExpandConstant('C:\Games\World_of_Tanks\'); //если ключа нет то будем ставить сюда er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', InsPath); if er and (InsPath<>'') then //если ключ существует и там что-то записано begin Result := InsPath; end; end; procedure RedesignWizardForm; begin with WizardForm do begin OnCreate := @WizardFormCreate; AutoScroll := False; ClientHeight := ScaleY(490); ClientWidth := ScaleX(740); end; with WizardForm.Bevel do begin Top := ScaleY(243); Width := ScaleX(457); Height := ScaleY(70); end; with WizardForm.OuterNotebook do begin Width := ScaleX(745); Height := ScaleY(457); end; with WizardForm.WizardBitmapImage do begin Width := ScaleX(740); Height := ScaleY(458); end; with WizardForm.WelcomeLabel2 do begin Caption := '' + #13#10 + ''; Left := ScaleX(744); Top := ScaleY(-23); Width := ScaleX(125); Height := ScaleY(25); end; with WizardForm.WelcomeLabel1 do begin Caption := ''; Left := ScaleX(744); Top := ScaleY(-23); Width := ScaleX(13); Height := ScaleY(25); end; with WizardForm.Bevel1 do begin Top := ScaleY(57); Width := ScaleX(523); Height := ScaleY(1); end; with WizardForm.InnerNotebook do begin Width := ScaleX(659); Height := ScaleY(357); end; with WizardForm.LicenseNotAcceptedRadio do begin Top := ScaleY(312); end; with WizardForm.LicenseAcceptedRadio do begin Top := ScaleY(292); end; with WizardForm.LicenseMemo do begin Width := ScaleX(617); Height := ScaleY(244); end; with WizardForm.DiskSpaceLabel do begin Top := ScaleY(344); Width := ScaleX(353); end; with WizardForm.DirBrowseButton do begin Left := ScaleX(574); Top := ScaleY(79); end; with WizardForm.DirEdit do begin Left := ScaleX(16); Width := ScaleX(540); end; with WizardForm.ComponentsDiskSpaceLabel do begin Top := ScaleY(344); Width := ScaleX(273); end; with WizardForm.ComponentsList do begin Width := ScaleX(657); Height := ScaleY(227); end; with WizardForm.TypesCombo do begin Width := ScaleX(657); end; with WizardForm.SelectComponentsLabel do begin Caption := 'Выберите моды которые хотите установить, и нажмите далее'; Height := ScaleY(16); end; with WizardForm.TasksList do begin Width := ScaleX(465); Height := ScaleY(240); end; with WizardForm.ReadyMemo do begin Width := ScaleX(657); Height := ScaleY(333); end; with WizardForm.ProgressGauge do begin Left := ScaleX(8); Width := ScaleX(641); end; with WizardForm.InfoAfterMemo do begin Width := ScaleX(465); Height := ScaleY(253); end; with WizardForm.MainPanel do begin Width := ScaleX(745); Height := ScaleY(66); OnClick := @MainPanelClick; end; with WizardForm.WizardSmallBitmapImage do begin Left := ScaleX(0); Top := ScaleY(3); Width := ScaleX(735); Height := ScaleY(63); end; with WizardForm.PageDescriptionLabel do begin OnClick := @PageDescriptionLabelClick; Left := ScaleX(-288); Top := ScaleY(-5); Width := ScaleX(285); Height := ScaleY(5); end; with WizardForm.PageNameLabel do begin Left := ScaleX(-104); Top := ScaleY(-14); Width := ScaleX(101); end; with WizardForm.WizardBitmapImage2 do begin Top := ScaleY(-24); Width := ScaleX(740); Height := ScaleY(484); end; with WizardForm.RunList do begin Left := ScaleX(-128); Top := ScaleY(459); Width := ScaleX(125); Height := ScaleY(62); end; with WizardForm.NoRadio do begin Left := ScaleX(736); Top := ScaleY(-7); Width := ScaleX(245); Height := ScaleY(9); Caption := ''; end; with WizardForm.YesRadio do begin Left := ScaleX(736); Top := ScaleY(459); Width := ScaleX(173); Height := ScaleY(1); Caption := ''; end; with WizardForm.FinishedLabel do begin Caption := ''; Left := ScaleX(736); Top := ScaleY(-57); Width := ScaleX(269); Height := ScaleY(59); end; with WizardForm.FinishedHeadingLabel do begin Caption := ''; Left := ScaleX(736); Top := ScaleY(-16); Width := ScaleX(213); Height := ScaleY(18); end; with WizardForm.BeveledLabel do begin Left := ScaleX(-48); Top := ScaleY(402); end; with WizardForm.CancelButton do begin Left := ScaleX(617); Top := ScaleY(463); end; with WizardForm.NextButton do begin Left := ScaleX(533); Top := ScaleY(463); end; with WizardForm.BackButton do begin Left := ScaleX(445); Top := ScaleY(463); OldEvent_BackButtonClick := OnClick; OnClick := @_BackButtonClick; end; { ReservationBegin } // Вы можете добавить ваш код здесь. { ReservationEnd } end; // Не изменять эту секцию. Она создана автоматически. { RedesignWizardFormEnd } // Не удалять эту строку! procedure NewButton1Click(Sender: TObject); begin end; procedure MainPanelClick(Sender: TObject); begin end; procedure PageDescriptionLabelClick(Sender: TObject); begin end; procedure _BackButtonClick(Sender: TObject); begin OldEvent_BackButtonClick(Sender); end; procedure WizardFormCreate(Sender: TObject); begin end; const UNDEF_INDEX = -777; function GetCursorPos(var lpPoint: TPoint): BOOL; external 'GetCursorPos@user32.dll stdcall'; var InfoPic: TBitmapImage; LastIndex: Integer; TempPath: String; procedure ShowPicHint(const PicFilePath: String); var pt: TPoint; begin if not GetCursorPos(pt) then Exit; InfoPic.Bitmap.LoadFromFile(PicFilePath); InfoPic.SetBounds(ScaleX(360), ScaleY(40), ScaleX(290), ScaleY(278)); InfoPic.Show; end; procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea); var UndefPic: String; begin if Index = -1 then Exit; if Index = LastIndex then Exit; try case TNewCheckListBox(Sender).ItemCaption[Index] of '2.Белые трупы танков.': UndefPic := '5.bmp'; // пишем точно так же, как прописано в компонентах '4.Боевое меню TRJ.': UndefPic := '6.bmp'; else begin LastIndex := UNDEF_INDEX; InfoPic.Hide; Exit; end; end; if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic); ShowPicHint(TempPath + UndefPic); finally LastIndex := Index; end; end; procedure CompOnMouseLeave(Sender: TObject); begin InfoPic.Hide; LastIndex := -1; end; procedure InitInfo(); begin WizardForm.TypesCombo.Hide; WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(40), ScaleX(310), ScaleY(278)); WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove; WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave; TempPath := AddBackslash(ExpandConstant('{tmp}')); LastIndex := UNDEF_INDEX; with TBevel.Create(WizardForm) do begin Parent := WizardForm.SelectComponentsPage; SetBounds(ScaleX(360), ScaleY(40), ScaleX(290), ScaleY(278)); Shape := bsFrame; end; InfoPic := TBitmapImage.Create(WizardForm) with InfoPic do begin Parent := WizardForm.SelectComponentsPage; AutoSize := True; end; end; procedure InitializeWizard(); begin RedesignWizardForm; InitInfo(); end; [ISFormDesigner] WizardForm=FF0A005457495A415244464F524D0030101812000054504630F10B5457697A617264466F726D0A57697A61726 4466F726D0C436C69656E7448656967687403EA010B436C69656E74576964746803E402134F6E436F6E73747261696E65645 26573697A65071057697A617264466F726D437265617465084F6E437265617465071057697A617264466F726D43726561746 50C4578706C696369744C65667402000B4578706C69636974546F7002000D4578706C69636974576964746803F4020E45787 06C696369744865696768740310020D506978656C73506572496E636802600A54657874486569676874020D00F1065442657 6656C05426576656C03546F7003F30005576964746803C9010648656967687402460B4578706C69636974546F7003F3000D4 578706C69636974576964746803C9010E4578706C6963697448656967687402460000F302010C544E65774E6F7465626F6F6 B0D4F757465724E6F7465626F6F6B05576964746803E9020648656967687403C9010D4578706C69636974576964746803E90 20E4578706C6963697448656967687403C90100F110544E65774E6F7465626F6F6B506167650B57656C636F6D65506167650 D4578706C69636974576964746803F1010E4578706C6963697448656967687403390100F10C544269746D6170496D6167651 157697A6172644269746D617 Помогите пожалуйста соединить два верхних скрипта |
ТимКрай, лучше изучите основы Inno Setup и используемого языка.
|
Требуется помощь опытных пользователей.
Как прописать в Inno Setup картинки .gif, имеется ввиду флаги rus и eng развиваюшиеся. Знаю что через botvy, но почему то не получается. на строке FlagImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\rus.gif')); выдает ошибку. |
Цитата:
|
Цитата:
|
Задаю вопрос 2 раз опытным пользователям.
Как в данном куске скрипта вместо .bmp картинки, прописать каратинки .gif или .png botva2.iss, botva2.dll, b2p.dll в скрипте прикручены. Если можно реальный пример. Скрипт
Код:
procedure LangClick(Sender: TObject); |
ZVSRus, создайте панелки и используйте их в качестве родителя при вызове такого кода:
Код:
ImgLoad(FlagImagePanel.Handle, ExpandConstant('{tmp}\rus.png'), ScaleX(0), ScaleY(0), ScaleX(69), ScaleY(44), True, True); |
Цитата:
Компилируется нормально, но при запуске ошибка. Что-то нужно дописать, или убрать в данной процедуре. |
Все разобрался.
|
Всем привет.
Как сделать поиск папки в корне всех дисках\разделах? Такая фишка реализована у z10yded. setup.exe ищет папку Games на всех дисках\разделах, если находит, предлагает установить игру в эту папку, иначе C:\Games. Если создать две папки на разных дисках\разделах, то предлагает установку на первый найденный. P.S сам setup.exe. |
Привет, как сделать ?
Inno Setup при запуске тихо копирует файлы в папку допустим "My Appу" в корне сис диска {sd} от туда же запускает Setup.exe. если удалось запустить файл то тихо закрывается, если нет, проблемы с правами или еще чем то выдает ошибку пробовал пример тихой установки, но видно прогресс бар P.S это все нужно для установки драйверов |
|
kotyarko@fb,
Цитата:
|
Код:
ValueData: "C:\Program Files (x86)\test.exe" -f "%1" |
kotyarko@fb,
z10yded использует толстую Tools.dll (1.5mb) может в ней секрет спрятан. Serjione, """C:\Program Files (x86)\test.exe"" -f ""%1""" |
Цитата:
Поясняйте, чтоб иметь представление. Представляйте рабочую часть кода, чтоб можно было воспроизвести. Цитата:
Примеры
Код:
[Registry] Если путь зависит от DefaultDirName из секции [Setup], то так: Код:
[Registry] |
Цитата:
Спасибо за ответ, ABBAT уже помог. |
Как можно убрать Types что бы не было выбора компактный полный и т.д
|
dimantv_wot@vk,
Через [Tasks] делайте, а [Components] и [Types] удалить. (в справке пример есть) |
Цитата:
Код:
[Code] |
Разобрался, del...
|
Всем привет скачал готовый скрипт Steam закоз но не запускает выдает ошибку, использую расширенный inno setup 5.5.1 Unicode
|
Где в коде программы Inno Setup найти размеры данных двух диалоговых окон. (Restorator'ом)
Как они называются, и можно-ли на них прикрепить свою кнопку 'Сброс'. (т.е. какое названия родителя написить .Parent := WizardForm.????????????) Картинка снизу. |
Вопрос выше остался без ответа.
Или никто не знает, что мало вероятно, или не хотят, что печально! Тогда может кто знает как растянуть InnerPage в расширенной InnoSetup |
нашел на предыдущей странице |
привет
есть несколько .exe файлов к игре ( игра старая) почему несколько ? каждый под "свое" разрешение экрана, допустим 1280х720, 1280х1024, 1366х768, и тд возможно ли сделать "автоматический" выбор этого файла в зависимости от разрешения экрана ?? допустим проверить так Скрытый текст
Код:
function GetDC(HWND: DWord): DWord; external 'GetDC@user32.dll stdcall'; или не получится ? и просто сделать выбор компонентов ?: |
Maratina, пример
Скрытый текст
Код:
function Sides: String; |
Nothing..
|
Цитата:
ANSI-cтрока Hello World! (последовательность байт): 48(H) 65(e) 6C(l) 6C(l) 6F(o) 20( ) 57(W) 6F(o) 72(r) 6C(l) 64(d) 21(!)Unicode-строка Hello World! (последовательность байт, 2 байта на символ): 48 00 (H) 65 00(e) 6C 00(l) 6C 00(l) 6F 00(0) 20 00( ) 57 00(W) 6F 00(o) 72 00(r) 6C 00(l) 64 00(d) 21 00(!)ANSI-cтрока Hello World!, которую пытаются трактовать как Unicode-строку (последовательность байт): 48 65(效) 6C 6C(汬) 6F 20(漠 в UTF-16BE, но у нас UTF-16LE и такого символа нет, поэтому не отображается ) 57 6F(潗) 72 6C(汲) 64 21(Ⅴ)P.S. Да, и так строки в dll не передаются. Так вообще нельзя делать, ну совсем нельзя. Курите для начала комментарий в dpr-файле dll, а потом, к примеру, http://www.gunsmoker.ru/2009/01/blog-post.html |
El Sanchez, Модуль ShareMem я подключал, ничего не вышло, я в Delphi не так силен, Вы не могли бы пример показать? Насчет кодировки я понимал сразу, но так и не понял как правильно передавать строки.
|
Всем привет. Ребят подскажите пожалуйста... Собрал только что китайской версией установщик. В тотал командер видно что файл создан 22.01.2016 в 16:21, а если навести курсор на сам экзешник, то пишет следующее: Дата создания: 08.01.2016 19:04
Скриншот
Подскажите пожалуйста что надо сделать чтобы писались правильные дата и время? |
dracosha, а если правой кнопкой на сетап => свойства => подробно, дата изменения?
|
nik1967, там правильная дата, сегодняшняя, такая же как и в тотале, но на всплывающей подсказке какая-то "левая" дата :(
Думал может в тотале кривая подсказка, но нет, в проводнике такая же история. Скриншоты
|
dracosha, ну тогда, файл был создан именно 08.01.2016, а 22.01.2016 он был обновлён. О чём и докладывают свойства файла.
|
nik1967, файл я удалил и скомпилил по новой - без изменений :(
|
|
Nordek, файл я удаляю, затем открываю свой скрипт.iss китайским компилятором Inno и жму кнопку Компиляция, через 20 секунд новый файл появляется на диске, которого не было. Вопрос: какие даты создания и изменения должны быть у этого файла? Разницу в несколько секунд я конечно же допускаю, но разница та почти в две недели. Я как-то раньше обращал на это внимание и все было в порядке, это точно... Может какие системные глюки.
|
Цитата:
Дата в столбце "Дата создания" условная. Т.е может меняться от перемещения, копирования, скачивания и т.д. Цитата:
Пример: Код:
OutputBaseFilename=setup1 |
|
Nordek, спасибо большое. Хоть файл я и удалял, но данные о его создании где-то все равно оставались. После твоего совета удалил свой файл и рестартанул систему - все стало на место.
Возник вопрос... Можно ли через препроцессор в китайской версии организовать удаление файла указанного в директиве OutputBaseFilename секции [Setup] до того как начнется компиляция? p.s. варианты с ком.строкой не интересны. |
Цитата:
Код:
#DeleteFile(SetupSetting("OutputBaseFilename")) |
kotyarko@fb, не прокатило :(
Скриншот
|
dracosha, тогда как-то так:
Код:
#expr DeleteFile(AddBackslash(SetupSetting("OutputDir")) + SetupSetting("OutputBaseFilename")) |
kotyarko@fb, да, так собирается, только я не успеваю проверить удаляется файл или нет :(
А вообще да, товарищ Nordek прав, дата создания файла условная и зависит от времени перемещения, копирования и скачивания. И совсем не стоит заморачиваться на этой дате. |
парни помогите два скрипта соединить вместе голову уже сломал
Код:
procedure CurStepChanged(CurStep: TSetupStep); Код:
procedure CurStepChanged(CurStep: TSetupStep); |
vadjliss,
Код:
SaveStringToFile(ExpandConstant('{sys}\drivers\etc\hosts'), #13#10 + '127.0.0.1 www.example.com', True); |
всё разобрался
Код:
SaveStringToFile(ExpandConstant('{sys}\drivers\etc\hosts'), #13#10 + '127.0.0.1 www.example.com', True); |
vadjliss, извиняюсь, не увидел 127 страницу.
Устарело
Код:
procedure CurStepChanged(CurStep: TSetupStep); |
|
Цитата:
В левой колонке переключаетесь на SelectComponentsPage. На странице SelectComponentsPage выбираете элемент ComponentsList. В правой колонке находите TreeViewStyle. В TreeViewStyle меняете значение вместо False, на True. В конечном итоге получите код: Код:
[Code] Чтоб компоненты были скрытыми изначально, в секции [Components], к компоненту добавьте флаг collapsed т.е: Код:
[Components] |
[Setup]
DisableReadyPage=yes [code] procedure CurPageChanged(CurPageID: Integer); begin if CurPageID = wpSelectProgramGroup then WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall) else WizardForm.NextButton.Caption := SetupMessage(msgButtonNext); end; Как сделать чтобы название кнопки изменилось ? Нужно сменить название кнопки "Next" на "Install" |
Цитата:
Код:
procedure CurPageChanged(CurPageID: Integer); |
Цитата:
|
Цитата:
Код:
#define MyAppName "My Program" Какие еще доказательства предоставить?
|
Цитата:
;Inno Setup 5.5.8 Unicode #define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" [Setup] AppId={{795448DE-FE12-4DD9-BD5B-A573E2345282} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} DisableProgramGroupPage=yes OutputBaseFilename=setup Compression=lzma SolidCompression=yes DisableReadyPage=yes [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [code] procedure CurPageChanged(CurPageID: Integer); begin if CurPageID = wpSelectProgramGroup then WizardForm.NextButton.Caption := 'Install'; end; Inno Setup 5.5.8 Unicode не берет... |
Aneshoharilian, в изначальном вашем огризке было wpSelectProgramGroup а на скрине вы показываете страницу wpSelectDir, перейдите на следующую страницу и будет вам счастье или замените страницу в коде (с wpSelectProgramGroup на wpSelectDir) и отключите SelectProgramGroupPage, потому что она идет следующей....
|
Цитата:
procedure CurPageChanged(CurPageID: Integer); begin if (CurPageID = wpSelectDir) or (CurPageID = wpReady) then WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall) else if (CurPageID = wpFinished) then WizardForm.NextButton.Caption := SetupMessage(msgButtonFinish) else WizardForm.NextButton.Caption := SetupMessage(msgButtonNext); end; Доработанный код на основе ваших рекомендации =) ------------------------------------------------------------------------------ более правильный вариант,дает сбой с капчой procedure CurPageChanged(CurPageID: Integer); begin // On fresh install the last pre-install page is "Select Program Group". // On upgrade the last pre-install page is "Read to Install" // (forced even with DisableReadyPage) if (CurPageID = wpSelectProgramGroup) or (CurPageID = wpReady) then WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall) // On the Finished page, use "Finish" caption. else if (CurPageID = wpFinished) then WizardForm.NextButton.Caption := SetupMessage(msgButtonFinish) // On all other pages, use "Next" caption. else WizardForm.NextButton.Caption := SetupMessage(msgButtonNext); end; |
Цитата:
Скрытый текст
Код:
#define MyAppName "My Program" |
|
Aneshoharilian, перед else не ставится ";".
|
Как в данном скрипте прикрутить кнопку "Сброс" к PortableCheck,
чтобы был правильный путь и сброс. Скрипт
Код:
#define Name "Test" |
Цитата:
Скрытый текст
Код:
#define Name "Test" |
saurn,
Цитата:
|
Цитата:
Скрытый текст
Код:
#define Name "Test" P.S. Точнее формулируйте вопрос. |
saurn,
Цитата:
|
Цитата:
Код:
EditTreeView.Text := AddBackslash(DirTreeView.Directory) + ExtractFileName( _szPath ); |
saurn,
Цитата:
|
ZVSRus,
Скрытый текст
Имена папок к логике скрипта не имеют никакого отношения. Инсталятору указано автоматически подставлять имя последней папки в пути установки. Данный скрипт вполне самодостаточен, однако имена каталогов в нем указаны, лишь для примера того, как все это будет работать. Как оперировать с именами каталогов в скрипте - это уже ваше дело.
=================================================================================== Код:
#define Name "Test" |
Доброе время суток. помогите решить проблему с этим компонентом.
Код:
Name: AFP\I; Description: Установить {#MyAppName}; Flags: disablenouninstallwarning; Types: full; ИЛИ
или подскажите как сделать так, чтобы при выборе 1-го или нескольких этих компонентов
Код:
[Components] Код:
[Components] Скрипт |
Цитата:
Скрытый текст
Код:
#define MyAppName "My Program" |
Помогите пожалуйста со скриптом (или хотя бы ссылкой, где описано решение).
Задача такая: 1. создать простой установщик (на данном этапе проблем не возникает) 2. установщик должен заменить файлы (в разных директориях) и сделать бэкап оригиналов в отдельную папку 3. при деинсталляции оригинальные файлы должны вернуться обратно на свои места |
Подскажите, как сделать, чтобы после установки программы, она не просила регистрацию?
То есть если у меня уже зарегестрированная версия, она же и перенеслась на другой комп. |
Цитата:
Скрытый текст
Код:
#define MyAppName "My Program" Цитата:
|
Dodakaedr,
от души благодарю! Скрипт работает. А то я сижу второй день, вчитываюсь в документацию. Если вас не затруднит, подскажите пожалуйста, каким образом сделать так, чтобы путь установки брался из реестра? В реестре же в упор не нахожу ключей, которые бы указывали путь. |
Цитата:
Код:
[setup] |
Цитата:
|
Цитата:
Скрытый текст
Введите в googl'e "Как отследить изменения в системе после установки программы?"
|
Цитата Dodakaedr:
Путь берется из ключа реестра деинсталлятора. В справке в разделе "Константы" есть небольшое описание получения значения. » еще раз спасибо! С бэкапом небольшая загвоздка выходит. В папке Data находятся файлы для бэкапа - Data/Файлы После бэкапа имеем такую структуру - Backup/Data/Файлы. А вот после деинсталляции получается так - Data/Data/Файлы, а должно Data/Файлы, т.е. файлы возвращаются в папке. На всякий случай кусок кода, возможно, я что-то неправильно делаю Скрытый текст
Код:
|
|
Цитата:
Код:
[Tasks] Создание ярлыка в секции [Icons] оформите следующим образом: Код:
[Icons] |
vadjliss, Удалите:
Код:
[Tasks] В секции [Icons] найдите похожую строку: Код:
Name: {commondesktop}\My Program; Filename: {app}\MyProg.exe; Tasks: desktopicon Код:
Name: {commondesktop}\My Program; Filename: {app}\MyProg.exe; Tasks: desktopicon Код:
Name: {commondesktop}\My Program; Filename: {app}\MyProg.exe; |
Цитата:
|
Цитата:
Если вам нужно в скрипт импортировать содержимое реестра, то воспользуйтесь инструментом Converter: ссылка на сообщение есть в первом сообщении данной темы внутри спойлера "Дополнительные программы для Inno Setup". Если не увидели, вот вот прямая ссылка на сообщение #86. Или используйте инструмент Inno Script Studio. Скачайте и установите Inno Script Studio. Откройте скрипт с помощью Inno Script Studio. Переместите курсор мыши на секцию "Registry/Реестр" Нажмите по "Registry/Реестр". Переместите reg-файл в пустую область. |
Вложений: 1
Цитата:
|
спасибо большое парни |
Цитата Dodakaedr:
Все работает! » Работает, но при восстановлении из бэкапа не совсем правильно. Возможно, в предыдущем сообщении я не совсем подробно обрисовал: Вот содержимое основной директории Скрытый текст
Из папки Sol 0_Data бекапим 3 файла Скрытый текст
И из папки Sol 0_Data\Managed бэкапим 1 файл На выходе получаем папку Backup, в ней папка Sol 0_Data с содержимым Скрытый текст
Здесь все хорошо. А вот далее, после деинсталляции, папка Sol 0_Data с содержимым бэкапа должна переместиться в основную директорию и заменить файлы. Но она копируется на уровень ниже и имеем следующее Скрытый текст
а должно быть Скрытый текст
|
Цитата:
a.k.a. Rasputin, С какой папки бэкапите в ту папку и вернется. Скорее всего где-то у вас в скрипте ошибка. Покажите свой скрипт, а именно как вы делаете бэкап и восстанавливаете его? |
Dodakaedr,
отправил в личку |
парни не могу понять снимаю обе галочки ни чего не устанавливается нормально
но если оставить 1 то устанавливаются обе программы в чём дело может кто отредактирует буду признателен Код:
[Tasks] |
Цитата:
Код:
[Tasks] |
Подскажите пожалуйста, как добавить страницу с двумя радиокнопками для копирования определенных файлов, например
при выборе 1-й - копируется 1.txt при выборе 2-й - копируется 2.txt по возможности с описанием этих кнопок. Что-то вроде этого, только без чекбоксов, только 2 радиокнопки: Скрытый текст
Код:
[Files] |
a.k.a. Rasputin, вопрос какой-то не корректный, но судя по скрину, наверное так:
Код:
[setup] |
Ребят не могу найти живой пример, а сам в этом деле не смыслю. Помогите пожалуйста.
Есть три архива 7z - внутри архивов наборы иконок в формате png. Все три набора предлагаются на странице компонентов. Нужно чтобы распаковался выбранный архив. Пользуюсь только расширенной китайской версией. Сборка Inno Ultra. Скрытый текст
Код:
[Setup] |
Цитата:
Нужно, чтобы пользователь смог выбрать только один из них для установки при помощи радиокнопок. В вашем варианте выше есть выпадающий список с выбором полной, компактной и выборочной установкой. Он не нужен. Примеры: |
Цитата:
|
saurn, На страницах 128, 129 Вы помогли мне разобраться с кнопкой Сброс.
Если есть время помогите разобраться еще с одной кнопкой Сброс. Нужно кнопку Сброс прикрутить к программной группе. Скрипт скинул в личку. |
Цитата:
Скрытый текст
Код:
[Setup] |
Вложений: 1
Как изменить заголовок MessageBox ?
С поддержкой юникода (c переводом строк из ANSI в UNICODE) Скрытый текст
[code] #ifdef UNICODE #define A "W" #else #define A "A" #endif const FR_PRIVATE = $10; procedure InitializeWizard(); begin WizardForm.Caption:= ('Установка {#MyAppName}'); end; procedure InitializeUninstallProgressForm(); begin UninstallProgressForm.Caption:= ('Удаление {#MyAppName}'); end; |
Aviromathe,
Цитата:
Скрытый текст
Код:
[Messages] |
Всем привет. Возникла такая проблема. Переустановила виндовс. После переустановки заново установила inno setup, качала с оф. сайта, то есть отсюда http://www.jrsoftware.org/isdl.php (это же оф. сайт?). Но как то теперь инно сетап работает не так. Компилирует все нормально, но при установке скомпилированной программы исчезло первое окошко приветствия (то есть там, где говорится "вас приветствует мастер установки программы, вы установите версию такую то.... и т.д.). То есть появляется сразу окошко с выбором места установки. И это не только с вновь созданными скриптами, то же самое происходит, если компилировать те скрипты, которые создавала ранее, до переустановки. Подскажите пожалуйста, в чем может быть проблема? Спасибо.
|
Цитата:
Скрытый текст
В последних версиях окно приветствия отключено
Если хотите его включить добавьте эту строку в скрипт [code] DisableWelcomePage=no Оффициальный сайт http://www.jrsoftware.org/ |
Вложений: 1
Помогите пожалуйста,отключить кнопку "Отмена" во время установки
Если что смотрите картинку что за кнопка! Скрытый текст
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{558D0D03-8238-4111-9709-EF358E0F2101} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DisableProgramGroupPage=yes OutputBaseFilename=setup Compression=lzma SolidCompression=yes [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [code] const MF_GRAYED = $1; MF_BYCOMMAND = $0; SC_CLOSE = $F060; MF_BYPOSITION = $00000400; type HMENU = THandle; function GetSystemMenu(hWnd: THandle; bRevert: Boolean): THandle; external 'GetSystemMenu@user32.dll stdcall'; function EnableMenuItem(hMenu: UINT; uIDEnableItem, uEnable: UINT): Boolean; external 'EnableMenuItem@user32.dll stdcall'; function DeleteMenu(hMenu: HMENU; uPosition, uFlags: UINT): BOOL; external 'DeleteMenu@user32.dll stdcall'; function GetMenuItemCount(hMenu: HMENU): Integer; external 'GetMenuItemCount@user32.dll stdcall'; procedure CurPageChanged(CurPageID: Integer); var Menu: THandle; begin Menu := GetSystemMenu(WizardForm.Handle, False); EnableMenuItem(Menu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED); if (CurPageID = wpSelectDir) or (CurPageID = wpReady) then WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall) else if (CurPageID = wpFinished) then WizardForm.NextButton.Caption := SetupMessage(msgButtonFinish) else WizardForm.NextButton.Caption := SetupMessage(msgButtonNext); end; procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean); begin Cancel:= true; Confirm:= false; end; procedure InitializeWizard; var SystemMenu: HMENU; begin SystemMenu := GetSystemMenu(WizardForm.Handle, False); DeleteMenu(SystemMenu, 9999, MF_BYCOMMAND); DeleteMenu(SystemMenu, GetMenuItemCount(SystemMenu)-1, MF_BYPOSITION); end; |
Цитата:
Код:
if (CurPageID = wpInstalling) then |
Как можно по другому отменить закрытие при помощи Alt + F4 ?
Скрытый текст
[Setup]
AppName=MyApp AppverName=MyApp DefaultDirName={pf}\MyApp OutputDir=. [code] const MF_BYCOMMAND = 0; MF_ENABLED = 0; MF_GRAYED = 1; MF_DISABLED = 2; SC_CLOSE = 61536; GCL_STYLE = -26; CS_NOCLOSE = $200; function GetSystemMenu(hWnd: HWND; bRevert: BOOL): LongWord; external 'GetSystemMenu@user32.dll stdcall'; function EnableMenuItem(hMenu: THandle; uIDEnableItem: Longword; uEnable: Longword): Boolean; external 'EnableMenuItem@user32.dll stdcall'; function GetClassLong(Wnd: HWnd; Index: Integer): Longint; external 'GetClassLongA@user32.dll stdcall'; function SetClassLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetClassLongA@user32.dll stdcall'; procedure CurPageChanged(CurPageID: Integer); begin //if (CurPageID = wpInstalling) then //begin EnableMenuItem(GetSystemMenu(WizardForm.Handle, false), SC_CLOSE, MF_DISABLED or MF_BYCOMMAND); SetClassLong(WizardForm.Handle, GCL_STYLE, GetClassLong(WizardForm.Handle, GCL_STYLE) or CS_NOCLOSE); //end; end; |
Цитата:
Код:
procedure CurPageChanged( const CurPageID: Integer ); Думаю, если уж лишать пользователя возможности отменить установку, то следует, также, отключить кнопку закрытия на бордюре окна. Хотя, в таскбаре окно все равно можно будет закрыть. Код:
#define A = (Defined UNICODE) ? "W" : "A" |
парни как сделать что бы название программы в инсталяторе было одно, а папка куда устанавливается программа была другой
|
Цитата:
|
- Отключены кнопки Alt+F4
- Отключена кнопка "Отмена" и "Закрыть" - Нельзя закрыть с панели задач (taskbar) Вопрос : Как сделать этот код чтобы был он UNICODE ? То есть перевести из ANSI в UNICODE Скрытый текст
[code]
const MF_BYCOMMAND = 0; MF_ENABLED = 0; MF_GRAYED = 1; MF_DISABLED = 2; SC_CLOSE = 61536; GCL_STYLE = -26; CS_NOCLOSE = $200; MF_BYPOSITION = $00000400; type HMENU = THandle; function GetSystemMenu(hWnd: HWND; bRevert: BOOL): LongWord; external 'GetSystemMenu@user32.dll stdcall'; function EnableMenuItem(hMenu: THandle; uIDEnableItem: Longword; uEnable: Longword): Boolean; external 'EnableMenuItem@user32.dll stdcall'; function GetClassLong(Wnd: HWnd; Index: Integer): Longint; external 'GetClassLongA@user32.dll stdcall'; function SetClassLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetClassLongA@user32.dll stdcall'; function DeleteMenu(hMenu: HMENU; uPosition, uFlags: UINT): BOOL; external 'DeleteMenu@user32.dll stdcall'; function GetMenuItemCount(hMenu: HMENU): Integer; external 'GetMenuItemCount@user32.dll stdcall'; procedure CurPageChanged(CurPageID: Integer); begin EnableMenuItem(GetSystemMenu(WizardForm.Handle, false), SC_CLOSE, MF_DISABLED or MF_BYCOMMAND); if CurPageID = wpinstalling then WizardForm.CancelButton.Enabled := False; if (CurPageID = wpSelectDir) or (CurPageID = wpReady) then WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall) else if (CurPageID = wpFinished) then WizardForm.NextButton.Caption := SetupMessage(msgButtonFinish) else WizardForm.NextButton.Caption := SetupMessage(msgButtonNext); end; procedure InitializeWizard; var SystemMenu: HMENU; begin SystemMenu := GetSystemMenu(WizardForm.Handle, False); DeleteMenu(SystemMenu, 9999, MF_BYCOMMAND); DeleteMenu(SystemMenu, GetMenuItemCount(SystemMenu)-1, MF_BYPOSITION); SetClassLong(WizardForm.Handle, GCL_STYLE, GetClassLong(WizardForm.Handle, GCL_STYLE) or CS_NOCLOSE); end; |
Есть ли хоть какой способ заблокировать кнопку "Закрыть" на панели задач (taskbar) ?
|
Цитата:
Код:
function GetClassLong(Wnd: HWnd; Index: Integer): Longint; external 'GetClassLongW@user32.dll stdcall'; |
Есть код от El Sanchez на рекурсивный поиск всех файлов по маске. Ктонить может его переделать, чтобы найдя первый файл рекурсия тут же прекращалась и функция возвращала true?
Код:
function FindFiles(Path, Mask: string; Recurse: BOOL): TArrayOfString; |
Raf-9600, пробуйте:
Код:
Function FindFiles(Path, Mask: String): Boolean; |
парни вопрос как сделать дополнительный ярлык на рабочий стол
Код:
#define MainExe "{app}\Bin32\crysis.exe" |
Цитата:
|
Помогите пожалуйста сделать кнопку "Отмена"
Как сделать свою кнопку вместо стандартной ? P.S Родная кнопка у меня отключена и сделана невидимой Скрытый текст
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{FC9B3E48-8A0B-49FA-B161-675874D96F13} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DisableProgramGroupPage=yes OutputBaseFilename=setup Compression=lzma SolidCompression=yes DisableWelcomePage=no AllowCancelDuringInstall=no [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [code] procedure CurPageChanged(CurPageID: Integer); begin WizardForm.CancelButton.Enabled := False; WizardForm.CancelButton.Visible := False; end; procedure TestButtonOnClick(Sender: TObject); begin MsgBox('Тест!', mbInformation, MB_OK) end; procedure InitializeWizard(); var TestButton: TButton; begin WizardForm.OuterNotebook.Height := ScaleY(361); WizardForm.InnerNotebook.Height := ScaleY(285); WizardForm.Bevel.Parent := WizardForm.WelcomePage; WizardForm.NextButton.BringToFront; WizardForm.BackButton.BringToFront; WizardForm.CancelButton.BringToFront; TestButton:=TButton.Create(WizardForm); with TestButton do begin Left := ScaleX(237); Top := ScaleY(327); Width := ScaleX(80); Height := ScaleY(23); Caption:='Тест'; OnClick:=@TestButtonOnClick; Parent:=WizardForm.WelcomePage; end; end; |
Цитата:
Код:
#define MyAppName "My Program" |
Цитата:
Что избавиться от этого компонента: AllowCancelDuringInstall нужно сделать свою кнопку отмена Скрытый текст
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{FC9B3E48-8A0B-49FA-B161-675874D96F13} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DisableProgramGroupPage=yes OutputBaseFilename=setup Compression=lzma SolidCompression=yes DisableWelcomePage=no AllowCancelDuringInstall=no [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [code] const MF_BYCOMMAND = 0; MF_ENABLED = 0; MF_GRAYED = 1; MF_DISABLED = 2; SC_CLOSE = 61536; GCL_STYLE = -26; CS_NOCLOSE = $200; function GetSystemMenu(hWnd: HWND; bRevert: BOOL): LongWord; external 'GetSystemMenu@user32.dll stdcall'; function EnableMenuItem(hMenu: THandle; uIDEnableItem: Longword; uEnable: Longword): Boolean; external 'EnableMenuItem@user32.dll stdcall'; function GetClassLong(Wnd: HWnd; Index: Integer): Longint; external 'GetClassLongA@user32.dll stdcall'; function SetClassLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetClassLongA@user32.dll stdcall'; procedure CurPageChanged(CurPageID: Integer); begin //if (CurPageID = wpInstalling) then //begin EnableMenuItem(GetSystemMenu(WizardForm.Handle, false), SC_CLOSE, MF_DISABLED or MF_BYCOMMAND); SetClassLong(WizardForm.Handle, GCL_STYLE, GetClassLong(WizardForm.Handle, GCL_STYLE) or CS_NOCLOSE); //end; end; Как сделать кнопку ? |
Цитата:
Вот так
Код:
; Script generated by the Inno Setup Script Wizard. Только, в чем смысл заменять родную кнопку кастомной с идентичным событием? |
Вложений: 1
Ошибка при компиляции
И часть кода перестала работать |
|
Hantunyaha,
Используйте расширенную версию компилятора, и ошибки не будет. |
Цитата:
|
Hantunyaha, используйте:
Код:
WizardForm.CancelButton.OnClick(nil); |
Цитата:
В стандартной версии не работает. В расширенной версии работает. Используйте расширенную версию. Цитата:
|
Как записать ключ в реестр ?
Нужно записать этот ключ: AAAAA-AAAAA-AAAAA-AAAAA |
Reyesahydo,
Код:
RegWriteStringValue(HKEY_CURRENT_USER, 'Software\AAAAA-AAAAA-AAAAA-AAAAA', '', ''); |
Цитата:
А как записать вот сюда ? Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Valve\Half-Life\Settings] "ValveKey"="AAAAA-AAAAA-AAAAA-AAAAA-AAAAA" Мне ключ нужно именно передач вот этому параметру И напишите пожалуйста куда именно нужно это нужно писать |
Нашёл вроде бы неплохой код для проверки на наличие определённого обновления Windows https://theroadtodelphi.wordpress.co...i-wmi-and-wua/
Код:
function ISHotFixID_Installed(const HotFixID : string): Boolean; |
Цитата:
Код:
RegWriteStringValue(HKEY_CURRENT_USER, 'Software\Valve\Half-Life\Settings', 'ValveKey', 'AAAAA-AAAAA-AAAAA-AAAAA-AAAAA'); |
Цитата:
|
Цитата:
Код:
procedure _CancelClick ( const Sender: TObject ); Цитата:
Код:
[Registry] |
Код:
[Registry] Можете показать как сделать код через секцию [code] ? |
Цитата:
Код:
Procedure CurStepChanged(CurStep: TSetupStep); |
Мне нужно добавить много EXE-файлов создать для них ярлыки
Вопрос: Правильно ли я делаю ? Сомневаюсь в правильности скрипта P.S Через мастер скриптов можно только один добавить Скрытый текст
Код:
#define MyAppName "My Program" |
Oasahelola, почти, пишите разные имена ярлыков
Код:
[Icons] |
Требуется помощь.
Скрытый текст
Source: "{app}\msimg32.dll"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion sharedfile uninsnosharedfileprompt Данная DLL'ка добавлена в дистрибутив для регистрации. DLL'ка с таким-же именем есть в System32/ При удалении программы dll'ка не удаляется. Решение найдено такое. Код:
[UninstallDelete] Решение нашёл такое. [Messages] UninstalledMost=Программа %1 была полностью удалена с вашего компьютера. Думаю что данное решение не совсем правильное. В связи с тем что в System32 есть DLL'ка с таким -же именем что и для регистрации, думаю что деинсталлятор реагирует на нее и по этому выдаёт сообщение что не все удалилось. Думаю к строке Source: нужно добавить какие то флаги, чтобы деинсталлятор не реагировал на системную DLL msimg32.dll. Помогите решить данную проблему. |
Цитата:
Скрытый текст
Код:
////////////////////////////////////////////////////////////// Цитата:
|
Цитата:
(Поместить файл из раздачи msimg32.dll в папку с установленной программой.) |
|
vadjliss,
Код:
Procedure CurPageChanged1(CurPageID: Integer); |
vadjliss, а лучше всё в одной процедуре объединить. Чтобы путаницы не было.
|
Цитата:
Код:
procedure CurPageChanged( CurPageID: Integer ); |
Добрый день. Подскажите пожалуйста, какие команды нужно дописать в скрипт, чтобы в случае если в директории установки программы будет найден файл с определенным именем, он будет удален автоматически. И еще одна проблемка. Если знаете, помогите плис. Столкнулся с тем, что Win10 блокирует инсталлятор. Тут я вообще безсилен, так как никогда не работал с этой ОС.
|
Вложений: 1
Файл 134345Как сделать такой компонент ?
|
Цитата:
script
Код:
[Setup] |
Цитата:
Цитата:
|
парни , а как можно сделать что бы перед инсталляцией выскакивала рамка с предупреждением
|
Спасибо, сейчас проверю.
Огромнейшее спасибо! Работает! |
Оказывается, помимо 1 файла нужно удалить еще несколько, также, возможно, с двумя папками. Как это сделать, подскажите?
|
Карась з Днiпра
Цитата:
|
Большущее спасибо за помощь)
|
Цитата:
Ошибка при компиляции использую Inno-Setup 5.5.8 (Unicode) Как исправить ? Скрытый текст
|
Gamattinol, в оригинальных версиях такого типа нет, только в расширенной.
|
Цитата:
Можно ли сделать что то похожее без сторонних модификаций ? |
Цитата:
У Вас стоит обычная версия, поэтому и не хочет работать с неизвестным типом (TNewGroupBox). Поставьте расширенную версию, функционала будет больше. |
Подскажите еще пожалуйста, что в скрипте нужно прописать или на какой версии надо компилировать инсталл, чтобы защитник Win10 не блокировал его. Мне писали о подобной проблеме, и было бы круто исправить ее.
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Столкнулся с непонятной проблемой. После компиляции запускаю инсталятор, а он сразу выдает мне окно с важной информацией. Окно приветствия вообще непонятно куда подевалось. Еще несколько дней назад этот же скрипт нормально компилировался, а теперь...
Блин, только что проверил - та же проблема и в ранее скомпилированных инсталяторах. Странно, что не заметил этого сразу. Только вот как исправить - не знаю. Что посоветуете? |
В справке ничего нету,но компонент такой там есть!
Ничего не нашел как сделать это с помощью TBevel Цитата:
Код:
[Setup] |
Ану, сейчас попробую. Только странно, что в прежних инсталлах окно есть, а эту команду я врятли использовал.
Работает. Респект и уважуха, брат. |
Цитата:
Скрытый текст
Код:
[setup] Цитата:
|
Цитата:
Всё зависит от того, как настроена система. В основном все отключают эти оповещения, т.к. при частом использовании разных приложений эти оповещения надоедают. |
Цитата:
Ошибок при компиляции нету,код не создает компонент! Файл 134379 |
Вложений: 1
Как это исправить ?
|
Цитата:
|
Цитата:
Скрытый текст
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{11852012-EB17-4CF3-A873-BB154995AD34} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DisableProgramGroupPage=yes OutputBaseFilename=setup Compression=lzma SolidCompression=yes [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [code] var NewGroupBox: TNewGroupBox; procedure InitializeWizard(); begin NewGroupBox := TNewGroupBox.Create(WizardForm); with NewGroupBox do begin Parent := WizardForm.SelectDirPage; Left := ScaleX(0); Top := ScaleY(100); Width := ScaleX(417); Height := ScaleY(60); Caption := 'Папка установки:'; end; NewGroupBox.TabOrder := 5; with WizardForm.DirBrowseButton do begin Left := ScaleX(334); Top := ScaleY(23); Parent := NewGroupBox; end; with WizardForm.DirEdit do begin Left := ScaleX(8); Top := ScaleY(24); Width := ScaleX(320); Parent := NewGroupBox; end; end; Как исправить ? В коде ничего не трогал ! Скриншот - это мой,показываю что ничего не происходит от вашего кода! |
Цитата:
Код:
procedure InitializeWizard(); |
Цитата:
Пример
Код:
[code] |
http://pixs.ru/showimage/Snimokekra_...4_20838132.png
Как подогнать чтобы было как на картинке ? Больше не получается подогнать компонент и "caption" не знаю как там сделать ! Скрытый текст
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{11852012-EB17-4CF3-A873-BB154995AD34} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DisableProgramGroupPage=yes OutputBaseFilename=setup Compression=lzma SolidCompression=yes [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [code] var Bevel2: TBevel; procedure RedesignWizardForm; begin { Bevel2 } Bevel2 := TBevel.Create(WizardForm); with Bevel2 do begin Parent := WizardForm.SelectDirPage; Left := ScaleX(0); Top := ScaleY(135); Width := ScaleX(418); Height := ScaleY(50); Shape := bsFrame; end; with WizardForm.DirBrowseButton do begin Top := ScaleY(150); Width := ScaleX(65); end; with WizardForm.DirEdit do begin Left := ScaleX(15); Top := ScaleY(150); Width := ScaleX(315); end; end; procedure InitializeWizard(); begin RedesignWizardForm; end; |
Цитата:
Код:
Left := ScaleX( положение контрола от левой границы ); Код:
SetBounds( ScaleX( от левой границы ), ScaleY( от верхней границы ), ScaleX( ширина ), ScaleY( высота ) ); Цитата:
Скрытый текст
Код:
[code] |
Цитата:
[code] Код:
const Как убрать этот баг ? http://pixs.ru/showimage/Snimokekra_...8_20840618.png Не знаю как эту рамку можно сделать шире |
Цитата:
В моем примере: Код:
Width := ScaleX( 65 ); Код:
Width := ScaleX( 85 ); |
Цитата:
Если сделать меньше будут кнопки по размеру отличаться,портится визуальный стиль! |
Цитата:
|
[code]
Код:
const |
SelectDirBrowseLabel SelectDirLabel Как переместить в нужное место эти компоненты (label) ? |
Цитата:
Код:
with WizardForm.InnerNotebook do |
Цитата:
Скрытый текст
Код:
procedure _CtrlsEdit(); |
парни , а как можно сделать что бы перед инсталляцией выскакивала рамка с предупреждением
|
Цитата:
Скрытый текст
Код:
#define MyAppName "My Program" |
Всем здравствуйте :) Подскажите пожалуйста, в чем может быть проблема. В установщиках, созданных через inno setup, не всегда появляется окно, где можно задавать путь установки, это окно пропускается и программа устанавливается принудительно, хотя я не задаю никаких параметров принудительной установки. Например, создала установщик, установила созданную программу, удалила ее, и при повторной установке уже нет окна, где можно выбрать путь установки. То есть каким то образом запоминается, куда я до этого устанавливала программу, и второй раз не появляется возможность выбора. Проблема еще в том, что часто создаю программы, которые бывают похожи по содержанию (например, одинаковые папки, похожие файлы .exe), так вот эти программы тоже начинают принудительно устанавливаться в одну папку. Подскажите пожалуйста, что можно сделать, чтобы не происходило таких принудительных установок и всегда можно было выбрать путь установки? Спасибо, очень надеюсь на ответ :help:
|
Irenis, значение директивы DisableDirPage в секции Setup, часом не auto?
|
Честно говоря, у меня такой директивы вообще нету :dont-know
Установщики самые простейшие, созданные через мастера создания установщика, который автоматически создает какой то скрипт, дальше уже сама просто вношу мелкие дополнения в скрипт. |
Irenis, можно взглянуть на один из проблемных скриптов? На счет того, что разные программы устанавливаются в одну и ту же папку, первое, что приходит на ум: для всех приложений, скорее всего, Вы используете один AppId.
|
Пример скрипта https://www.sendspace.com/file/guct47. Все скрипты по сути одинаковы, отличаются лишь названиями программы и расположением файлов, которые запаковываю в установщик. AppId тоже разные.
Это кстати началось после переустановки системы. То есть заново установила inno setup, может в новой версии просто нужно дописывать какие то строки в коде? Но кроме inno setup, так же переустанавливала delphi. Как раз таки в delphi создаю файлы .exe, которые потом запаковываю в установщик. Может ли inno setup как то определять, что файлы .exe идентичны и из за этого устанавливать по одному пути? И может есть способ задавать принудительно, чтобы всегда появлялось окно выбора установки? |
Вложений: 2
Файл 134589
Файл 134590 Как сделать чтобы при удалении не было никаких сообщений ? Смотреть скриншоты! |
Цитата:
|
Всем Доброго времени суток. Требуется подсказка, или небольшой пример.
Как сделать у Лейблов, таких как, ну например: WelcomeLabel1, WelcomeLabel2, FinishedLabel, BeveledLabel чтобы фон был прозрачным (а точнее без фонов). |
Цитата:
Есть два варианта:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Во всяком случае с BeveledLabel ничего не происходит, белая полоса на стекле так и осталась. Модуль нашёл на Форуме Krinkels.org |
Разобрался. И на ANSI и Unicode всё работает. У Unicode функционала по более будет!
Но загвоздка в одном так и осталась. Как быть с BeveledLabel + IsWin7 т.е. белая полоса на стекле. На скрине видно. PS. На форуме Krinkels.org наткнулся точно на такой же вопрос, ответа не последовало. Неужели нельзя как-то исправить. |
Здравствуйте!
Как сделать чтобы деинсталлятор удалял папку с файлами, кот. создаётся при запуске самой программы. Папка образуется по следующему пути: C:\Users\"Имя пользователя"\AppData\Roaming\MyProg |
Цитата:
Код:
[UninstallDelete] |
Парни привет!
скрин помогите есть скрипт вот он скрипт
[code]
[Setup] AppName=My Program AppVerName=My Program DefaultDirName={pf}\My Program OutputDir=. Uninstallable=IsChecked CreateUninstallRegKey=IsChecked [Languages] Name: ru; MessagesFile: compiler:Languages\Russian.isl; [Tasks] ; Дополнительно ; Ярлык(и) на «Рабочем столе» Name: "desktopicon"; Description: "Ярлык(и) на «Рабочем столе»"; GroupDescription: "Дополнительно:"; Check: IsChecked ; Ярлыки в меню «Пуск» Name: "starticon"; Description: "Ярлыки в меню «Пуск»"; GroupDescription: "Дополнительно:"; Check: IsChecked [Icons] Name: "{group}\My Program"; Filename: "{uninstallexe}"; Tasks: starticon; Check: not IsChecked Name: "{commondesktop}\My Program"; Filename: "{uninstallexe}"; Tasks: desktopicon; Check: IsChecked [Files] //папка портабл Source: "C:\Users\WW-W\Desktop\ShareDownloader*"; DestDir: "{app}"; Check: "not IsChecked"; Flags: ignoreversion createallsubdirs recursesubdirs Source: "C:\Users\WW-W\Desktop\ShareDownloader\*"; DestDir: "{app}"; Check: "IsChecked"; Flags: ignoreversion createallsubdirs recursesubdirs [CustomMessages] HeaderLabelPage=Выбор типа установки LabelPage=Выберите нужный тип установки MyRadioCaption_1=Распаковка MyRadioCaption_2=Обычная установка PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен. MyText_1=Будет произведена распаковка в паку,%nуказанную на следующей странице MyText_2=Будет произведена стандартная установка Extracted=Распаковка — %1 ExtractedFolder=Выбор папки распаковки ExtractedFolder2=В какую папку вы хотите распаковать %1? ExtractedFolder3=Программа распакует %1 в следующую папку. ExtractedFolder4=Программа установит %1 в следующую папку. Installing=Распаковка... InstallingLabel=Пожалуйста, подождите, пока %1 распакуется на ваш компьютер. FinishedHeadingLabel=Завершение распаковки%n%1 FinishedLabelNoIcons=Программа %1 распакована на Ваш компьютер.%n%nНажмите «Завершить», чтобы выйти из программы распаковки. [UninstallDelete] Type: filesandordirs; Name: {app} Код:
const хочу сделать так может кто поможет исправить скрипт или скрипт на подобие такого |
Цитата:
http://krinkels.org/threads/kak-zada...ioknopok.2129/ |
Доброго времени суток, подскажите как сделать создание символьных ссылок на файлы находящиеся в определенной папке при установке:
Исходная папка с файлами: {app} \ plugins Конечная с символьными ссылками: {app} \ tools \ project \ plugins Код:
|
astafev_roma,
Код:
Procedure CreateHardLink(); |
парни помогите вот скрипт
ни как не могу понять как сделать что бы программа установилась как положено и так же распаковалась портабле на рабочий стол уже голову сломал. ну если кому не трудно исправьте скрипт скрипт
[code]
#include "botva2.iss" #define AppName "Ashampoo Photo Commander 14" #define AppVersion "14.0.4" #define AppPublisher "Ashampoo" #define AppURL "http://dilan.at.ua/" #define AppExeName "apc.exe" [Setup] AppName=Ashampoo Photo Commander 14 AppVersion=14.0.4 AppPublisher={#AppPublisher} AppPublisherURL={#AppURL} AppSupportURL={#AppURL} AppUpdatesURL={#AppURL} DefaultDirName={pf}\Ashampoo Photo Commander 14 OutputDir=. PrivilegesRequired=admin Compression=lzma/ultra64 SolidCompression=true InternalCompressLevel=ultra64 [Files] DestName: "WizardForm.BitmapImage1.bmp"; Source: "stac.bmp"; Flags: dontcopy solidbreak DestName: "WizardForm.BitmapImage2.bmp"; Source: "port neaktiv.bmp"; Flags: dontcopy solidbreak Source: "C:\Users\WW-W\Desktop\Ashampoo Photo Commander 14 14_0_4\app\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs Source: "C:\Users\WW-W\Desktop\Ashampoo Photo Commander 14 14_0_4\app\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs Source: port neaktiv.bmp; DestDir: {tmp}; Flags: dontcopy nocompression Source: 1.bmp; DestDir: {tmp}; Flags: dontcopy nocompression Source: 2.bmp; DestDir: {tmp}; Flags: dontcopy nocompression Source: stac.bmp; DestDir: {tmp}; Flags: dontcopy nocompression Source: eng.png; DestDir: {tmp}; Flags: dontcopy nocompression Source: Portable.png; DestDir: {tmp}; Flags: dontcopy nocompression Source: rus.png; DestDir: {tmp}; Flags: dontcopy nocompression Source: Installer net.png; DestDir: {tmp}; Flags: dontcopy nocompression Source: b2p.dll; DestDir: {tmp}; Flags: dontcopy nocompression Source: botva2.dll; Flags: dontcopy [Tasks] Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked [Icons] Name: {commondesktop}\Skype; Filename: {app}\apc.exe; Tasks: desktopicon Код:
var |
парни посмотрите скрипт музыка играет а кнопки на выключение музыки нет
скрин ссылка на скрипт скрипт |
Цитата:
Скрытый текст
Код:
[Files] |
|
Цитата:
|
как сделать что бы программа закрепилась на панели задач
|
|
что то не получается
|
Цитата:
Пример
Код:
#define MyAppName "My Program" |
saurn
благодарю теперь всё ок |
Удалил, всё равно помощи никакой...
|
Как в компонентах сделать что бы при выборе компонента ставилась галочка или кружок не нажимания на них а нажимая на текст
|
Вложений: 1
Многоуважаемые знатоки! Прошу Вас помочь мне внести исправления в мой скрипт и довести его до ума (это мой первый скрипт (делал программой inno setup compiler 5.5.8(а)), поэтому прошу строго не судить), он рабочий только на ХР, проверял на 8 и 10 не работает инсталлятор, он запускается, загружается Splash, затем должна включиться музыка, но она не включается, выводится это сообщение http://prnt.sc/afvdjr, на скриншоте в окне установки в самом низу после первой кнопки должны появится: вторая кнопка (отключения звука) и за ней третьей - регулятор громкости, но их нет, к сожалению моего микроума не хватает, чтобы довести до ума инсталлятор, поэтому еще раз прошу Вашей помощи, заранее благодарен, скрипт прилагаю (к сожалению он не вмещается здесь на форуме):
|
Как Указать в скрипте путь для установке шрифтов в папку Windows
|
Цитата:
Цитата:
Ferling, попробуйте тоже расширенную версию inno setup |
Dodakaedr, спасибо огромное, буду пробовать!
|
Здравствуйте!)
Господа, у меня к вам просьба. Возможно я криворукий или слепой, а может быть что и просто не умею пользоваться поиском, но требуемую информацию найти не смог. Что смог, это всё не то что мне нужно. А нужно мне следующее: В общем, что бы при установке, мне надо что бы установщик сохранял в архив определённые папки и файлы. Лучше всего что бы это делалось строенным архиватором. И потом только начиналась установка. Я не хочу от вас "готовый код", мне бы просто сам способ узнать, пример какой-нить а дальше я как-нить будь сам) Спасибо |
Установил я Inno Setup Compiler 5.5.1.ee2 (a) (build 121216), правда при установке ispack-5.5.1.exe не докачались файлы во время установки, на сколько я понял их там уже нету и все ссылки устарели (качал с этого форума расширенную версию и все поставил как было написано), скажу одно кака была - кака есть, на ХР запускается, на 8 и 10 нет, запускается сплэш, музыка не включается и выбивает сообщение о невозможности установки, может кто-то поможет все таки исправить ошибку?
|
Ferling, Давайте свой скрипт с файлами, посмотрим что можно сделать.
Цитата:
|
Dodakaedr, вроде все собрал вместе https://yadi.sk/d/rfyd6SpsqGwSy, заранее благодарен!
|
Добрый день. Подскажите пожалуйста код, которым можно отправить пост запрос по ссылке. Просто пост запрос, без всяких открывающихся окон и т.д. и т.п.
|
Ferling, поправил что смог, там скорее всего еще проблема с isdone, но с ней не помогу.... с isdone не работал.
Скачать |
Dodakaedr, Огр. спасибо! сейчас скачаю и посмотрю
|
Как создать свой MsgBox со своими параметрами?
|
Цитата:
|
Dodakaedr, Может не правильно выразился, мне надо поменять цвет окна во всех MsgBox...
|
Цитата:
|
Dodakaedr, А как в стандартных MsgBox поменять цвет?
|
Прошу помощи. В этой проге я дуб дубом, а в smart install maker у меня не получается это сделать. Накидайте пожалуйста образец скрипта для такой схемы:
При установке, нужно удалить из "программы" две папки с файлами полностью "aircraft_1" и "aircraft1_2", а также два файла "traffic_1.bgl" и "traffic_2.bgl". Создать папку с файлами "aircraft_3" и файл "traffic_3.bgl" Я это вот, как дилетант, так себе это представляю: Скрытый текст
[InstallDelete] Type: files; Name: "traffic_1.bgl"{app}\" Type: files; Name: "traffic_2.bgl"{app}\" Type: files; Name: "aircraft_1l"{app}\" Type: files; Name: "aircraft_2l"{app}\" [Files] Source: “traffic_3.bgl”; DestDir: “{app}” Source: “aircraft_3”; DestDir: “{app}” Заранее благодарен за ответ. |
Цитата:
Скрытый текст
Код:
[Setup] |
Цитата:
Скрытый текст
Код:
[Files] |
Цитата:
|
Цитата:
|
Цитата:
|
ZVSRus, спасибо за оперативный ответ.
Сейчас попробую. |
Dodakaedr, Мне долго экспериментировать не пришлось, цифра 15 подошла.
|
Цитата:
CreateSolidBrush
Код:
function CreateSolidBrush(crColor: DWORD): THandle; external 'CreateSolidBrush@gdi32.dll stdcall'; CreatePatternBrush
Код:
function CreatePatternBrush(hbmp: HBITMAP): THandle; external 'CreatePatternBrush@gdi32.dll stdcall'; |
Цитата:
Мне нужно, что бы установщик СНАЧАЛА сохранял в архив файлы, которые уже лежат на компе, а только потом производилась установка. В случае, если установка произошла не удачно, то можно было бы эти все файлы во становить из архива. Я сам так и не смог найти нормальный пример этого |
Цитата:
В справке как сделать Backup (Создать резервную копию оригинальных файлов) я насчитал около 10 примеров. Где искать смотри на картинке. |
Помогите пожалуйста реализовать прилипание мастер формы к краям экрана отрисованной через ботву. Установлена расширенная юникод версия инно 5.5.1. Заранее благодарна :)
|
Цитата:
Скрытый текст
Код:
[Setup] |
Цитата:
|
Цитата:
Скрытый текст
[Setup] AppName=MyProg AppVerName=MyProg DefaultDirName={pf}\MyProg DefaultGroupName=MyProg OutputDir=. [code] var MyTask: TCheckBox; function MoveFile(const srcFile, destFile: PChar): Integer; external 'MoveFileA@kernel32.dll stdcall'; procedure CurStepChanged(CurStep: TSetupStep); var FindFiles: TFindRec; i: integer; MyFiles: array of string; MyDir, BackDir: string; begin if CurStep=ssInstall then begin if MyTask.Checked then begin MyFiles:=['TS3.exe','gameplay.package','*.precomp','*.jpg']; // указать файлы или маски нужные для бакупа через запятую. при указании маски '*' бакупятся все файлы с вложенными папками MyDir:=ExpandConstant('{app}'+'\Game\Bin\'); //папка откуда бакупить BackDir:=ExpandConstant('{app}'+'\Backup\'); // папка куда бакупить for i:=0 to GetArrayLength(MyFiles)-1 do begin if FindFirst(MyDir+MyFiles[i], FindFiles) then begin repeat if not DirExists(BackDir) then begin CreateDir(BackDir); end; MoveFile(MyDir+FindFiles.Name, BackDir+FindFiles.Name); until not FindNext(FindFiles); FindClose(FindFiles); end; end; end; end; end; procedure InitializeWizard(); begin MyTask:=TCheckBox.Create(WizardForm); with MyTask do begin Parent:=WizardForm.SelectDirPage; Caption:='Сделать Бэкап'; Left:=ScaleX(0); Top:=ScaleY(100); Width:=ScaleX(400); Height:=ScaleY(15); TabOrder:=0; Checked:=True; end; end; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); var FindFiles: TFindRec; MyDir, BackDir: string; begin if CurUninstallStep = usPostUninstall then begin MyDir:=ExpandConstant('{app}'+'\Game\Bin\'); //папка куда возвращать файлы BackDir:=ExpandConstant('{app}'+'\Backup\'); // папка откуда брать файлы if DirExists(BackDir) then begin if MsgBox('Восстановить данные из бэкапа?', mbConfirmation, MB_YESNO) = IDYES then begin if FindFirst(BackDir+'*', FindFiles) then begin repeat MoveFile(BackDir+FindFiles.Name, MyDir+FindFiles.Name); until not FindNext(FindFiles); FindClose(FindFiles); RemoveDir(BackDir); end; end; end; end; end; Скрытый текст
Цитата:
Скрытый текст
Пример скрипта, автоматически создающего бэкапы в папки с именем по дате/времени. Кол-во бэкапов задается в скрипте. При превышении кол-ва, самые старые будут удалены. Цитата:
|
Вопрос по поводу модуля get_hw_caps.dll. Можно ли увеличить объём определяемой видео памяти (в модуле) таким образом
Код:
VidRam:=GetVidMemLocal/1000000; |
Помогите решить проблему. Как сделать взаимоисключающий выбор для кнопок из 8 состояний (аналог CheckBox из botva) Если пользователь активирует мышкой кнопку-3, то кнопки-1 или 2 (в зависимости от того, что было выбрано ранее) автоматически меняют свое состояние, т.е. становятся не активными. Всегда должно быть активно не более одной кнопки.
|
Подскажите пожалуйста что нужно дописать в скрипте, чтобы заполнились пустые поля?
на данный момент в скрипте есть строки [Setup] AppName=Soft Pack AppVersion=2016 AppVerName=Soft Pack VersionInfoVersion=2016 VersionInfoCompany=ispolin VersionInfoCopyright=ispolin AppCopyright=ispolin |
Цитата:
Код:
#define MyAppName "Название продукта" |
Цитата:
Код:
VersionInfoProductVersion= Значение из 4 чисел, разделенных точками. Задает двоичное значение версии файла инсталлятора. Код:
VersionInfoVersion=4.7.6.1 |
Цитата:
Цитата:
Прилагаю пример своего "генерального кода", указал только 1 файлик, ну а для примера больше и не надо) Скрытый текст
; Script generated by the Inno Script Studio Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Los" #define MyAppExeName "Daemon.exe" #define MyAppVersion "1.0" #define los "C:\Users\v.pon\Desktop\ARXIV" ;#define Svc "..\los\Svc\" ;#define BackupDir "..\Backup"; [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ;(To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{4B52DA29-1987-41EB-A7E8-87572C794301} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} DefaultDirName={#MyAppName} DefaultGroupName={#MyAppName} UninstallFilesDir= "C:\Users\v.pon\Desktop\backup" ;DefaultDirName={pf}\My Program ;OutputDir=C:\Users\v.pon\Desktop\backup //куда будет запихиватся установщик [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Components] ;Name: "arch"; Description: "1.7z\2.7z"; Name: "Svc"; Description: " Установить Svc "; Flags: checkablealone exclusive Name: "Coll"; Description: "Установить Los "; Flags: checkablealone exclusive [Run] ;Source: "C:\Users\v.pon\Desktop\ARXIV\2.bat"; Flags: [Files] Source: "{#Los}\*.xml"; DestDir: "{app}\Los\"; Flags: onlyifdoesntexist ;Components: Coll [Icons] ;Name: "{group}\My Program"; Filename: "{app}\Svc"; Components: Svc ; ;Name: "{group}\los"; Filename: "{app}\Installer"; Components: Coll; ;Name: "{group}\los"; Filename: "{app}\"; Components: Coll; [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent Filename: "msiexec"; Parameters: "/i {tmp}\mysql-connector-net-6.9.6.msi /qb /norestart REBOOT=ReallySuppress"; WorkingDir: "{tmp}"; Description: "MySql Connector"; StatusMsg: "MySql Connector" [Dirs] Name: "C:\Users\v.pon\Desktop\backup" [code] var MyTask: TCheckBox; function MoveFile(const srcFile, destFile: PChar): Integer; external 'MoveFileA@kernel32.dll stdcall'; procedure CurStepChanged(CurStep: TSetupStep); var FindFiles: TFindRec; i: integer; MyFiles: array of string; MyDir, BackDir: string; begin if CurStep=ssInstall then begin if MyTask.Checked then begin MyFiles:=['*']; // указать файлы или маски нужные для бакупа через запятую. при указании маски '*' бакупятся все файлы с вложенными папками MyDir:=ExpandConstant('C:\Users\v.pon\Desktop\los'); //папка откуда бакупить BackDir:=ExpandConstant('C:\Users\v.pon\Desktop\Los\backup'); // папка куда бакупить for i:=0 to GetArrayLength(MyFiles)-1 do begin if FindFirst(MyDir+MyFiles[i], FindFiles) then begin repeat if not DirExists(BackDir) then begin CreateDir(BackDir); end; MoveFile(MyDir+FindFiles.Name, BackDir+FindFiles.Name); until not FindNext(FindFiles); FindClose(FindFiles); end; end; end; end; end; procedure InitializeWizard(); begin MyTask:=TCheckBox.Create(WizardForm); with MyTask do begin Parent:=WizardForm.SelectDirPage; Caption:='Сделать Бэкап'; Left:=ScaleX(0); Top:=ScaleY(100); Width:=ScaleX(400); Height:=ScaleY(15); TabOrder:=0; Checked:=True; end; end; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); var FindFiles: TFindRec; MyDir, BackDir: string; begin if CurUninstallStep = usPostUninstall then begin MyDir:=ExpandConstant('{app}'+'C:\Users\v.pon\Desktop\backup222'); //папка куда возвращать файлы BackDir:=ExpandConstant('{app}'+'C:\Users\v.pon\Desktop\backup'); // папка откуда брать файлы if DirExists(BackDir) then begin if MsgBox('Восстановить данные из бэкапа?', mbConfirmation, MB_YESNO) = IDYES then begin if FindFirst(BackDir+'*', FindFiles) then begin repeat MoveFile(BackDir+FindFiles.Name, MyDir+FindFiles.Name); until not FindNext(FindFiles); FindClose(FindFiles); RemoveDir(BackDir); end; end; end; end; end; |
Цитата:
Работает нормально, и бекапит и возвращает сбекапенные файлы на место при удалении новых файлов. Для примера взялась папка с картинками В вашем примере в секции Setup в директиве DefaultDirName= нет пути куда устанавливать, есть только имя программы. Директива должна выглядеть так DefaultDirName={pf}{#MyAppName} или пропиши вручную так C:\Users\v.pon\Desktop\los Скрытый текст
Цитата:
|
А, забыл сказать) Надо что бы это всё не просто бакупилось, а ещё и запихивалось в архив, да.
При том, что бы в имени архива была дата, и архивировалось это встроеным архиватором. (в идеале) |
Цитата:
|
Если бы я хорошо знал Inno Setup, яб не сидел тут. Тогда предогаю юзать 7za, я даже скрипт написал на архивацию, не знаю, как сильно он поможет, и можно ли его воткнуть в установщик, но:
Содержание моего батника: Скрытый текст
"C:\Users\v.pon\Desktop\ARXIV\7za.exe" a %date%.rar c:\Los\
|
vovann01, Я вам уже давал пример, юзайте его!
|
Цитата:
Вот ваш код, но как его адаптировать под себя то ? Скрытый текст
[Setup]
AppName=My Program AppVersion=1.5 DefaultDirName={pf}\My Program OutputDir=. [Components] Name: "arch"; Description: "1.7z\2.7z"; [Files] Source: "7za.exe"; Flags: dontcopy deleteafterinstall Source: "1.7z"; DestDir: "{app}\Icons"; AfterInstall: "Extract()"; Components: arch; Source: "2.7z"; DestDir: "{app}"; AfterInstall: "Extract()"; Components: arch; [code] procedure Extract(); var rs: integer; strFile: String; begin strFile := ExpandConstant(CurrentFileName); if not FileExists(ExpandConstant('{tmp}\7za.exe')) then ExtractTemporaryFile('7za.exe'); Exec(ExpandConstant('{tmp}\7za.exe'), ' x '+'"'+strFile+'" -y -o'+'"'+ExtractFilePath(strFile)+'"', '', SW_Hide, ewWaitUntilTerminated, rs); DeleteFile(strFile); end; буду очень рад если мне помогут Скрытый текст
[Setup]
AppName=MyProg AppVerName=MyProg DefaultDirName={pf}\MyProg DefaultGroupName=MyProg OutputDir=. [Files] Source: "D:\Files\*"; DestDir: "{app}"; Flags: ignoreversion [code] var MyTask: TCheckBox; function MoveFile(const srcFile, destFile: PChar): Integer; external 'MoveFileA@kernel32.dll stdcall'; procedure CurStepChanged(CurStep: TSetupStep); var FindFiles: TFindRec; i: integer; MyFiles: array of string; MyDir, BackDir: string; begin if CurStep=ssInstall then begin if MyTask.Checked then begin MyFiles:=['001.png','002.png','003.png','004.png']; // указать файлы или маски нужные для бакупа через запятую. при указании маски '*' бакупятся все файлы с вложенными папками MyDir:=ExpandConstant('{pf}'+'\MyProg\'); //папка откуда бакупить BackDir:=ExpandConstant('{pf}'+'\MyProg\Backup\'); // папка куда бакупить for i:=0 to GetArrayLength(MyFiles)-1 do begin if FindFirst(MyDir+MyFiles[i], FindFiles) then begin repeat if not DirExists(BackDir) then begin CreateDir(BackDir); end; MoveFile(MyDir+FindFiles.Name, BackDir+FindFiles.Name); until not FindNext(FindFiles); FindClose(FindFiles); end; end; end; end; end; procedure InitializeWizard(); begin MyTask:=TCheckBox.Create(WizardForm); with MyTask do begin Parent:=WizardForm.SelectDirPage; Caption:='Сделать Бэкап'; Left:=ScaleX(0); Top:=ScaleY(120); Width:=ScaleX(400); Height:=ScaleY(15); TabOrder:=0; Checked:=True; end; end; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); var FindFiles: TFindRec; MyDir, BackDir: string; begin if CurUninstallStep = usPostUninstall then begin MyDir:=ExpandConstant('{pf}'+'\MyProg\'); //папка куда возвращать файлы BackDir:=ExpandConstant('{pf}'+'\MyProg\Backup\'); // папка откуда брать файлы if DirExists(BackDir) then begin if MsgBox('Восстановить данные из бэкапа?', mbConfirmation, MB_YESNO) = IDYES then begin if FindFirst(BackDir+'*', FindFiles) then begin repeat MoveFile(BackDir+FindFiles.Name, MyDir+FindFiles.Name); until not FindNext(FindFiles); FindClose(FindFiles); RemoveDir(BackDir); end; end; end; end; end; |
Цитата:
Сейчас просто стало интересно на счет данного примера. Скачал с приложенными файлами, попробовал. И как я понимаю данный пример на распаковку 7z архива. В Справке есть еще несколько примеров на счет 7z, все они также на распаковку. В своё время прошёлся по всем страницам данного форума начиная с 1 части, но что-то не припоминаю примера на запаковку в архив (rar, zip, 7z) каких либо файлов перед установкой (например обновление). В вашем примере, как я понимаю 7za.exe запустится после всех установленных файлов, что будут указаны в секции [Files], или я ошибаюсь. Если я прав тогда, сделать Бэкап и ещё его за архивировать это пустая трата времени. Рассудите прав ли я. |
Цитата:
|
Цитата:
Цитата:
Пример
Код:
[Setup] |
Вы правы и не правы одновременно. Дело в том, что я слегка дилетант, и многих "очевидных " вещей не знаю.
Мне нужно, сделать бекап до установки, запихнув несколько папок в архив. |
Dodakaedr, Пример реальный, значит я был не прав. Где-то, что-то пропустил. Ранее глубоко не вдавался в данные действия.
|
Как объединить несколько процедур CurStepChanged(CurStep: TSetupStep); в одну, если в процедуре имеется
Цитата:
Цитата:
Цитата:
|
ZVSRus,
|
Цитата:
потом ssInstall, а надо по порядку TSetupStep = (ssPreInstall, ssInstall, ssPostInstall, ssDone);. Все равно спасибо! |
Как к скрипту ''Закрепить ярлык на панели задач'' прикрутить чекбокс находящийся на костомной странице.
То-есть чтобы ярлык закреплялся только при выборе чекбокса на вновь созданной странице. Скрипт
Цитата:
|
Цитата:
Скрытый текст
Код:
#define MyAppName "My Program" |
ZVSRus, посмотрел ваш сегодняшний скрипт и не понял, что за hex описание в секции для [ISFormDesigner]
З.Ы. Ребята извините за нубство, может знаете, как реализовать такой финт в инно? :blush: |
Цитата:
Цитата:
не допер. Моя не внимательность меня достала. Гляжу в книгу вижу фигу. |
ZVSRus, расширенный юникод компилятор 5.5.1 от китайских собратьев
|
Цитата:
Автоматически создастся (не знаю как правильно называется) идентификатор страницы и компонентов [ISFormDesigner]. |
ZVSRus, теперь понял спасибо :ok:
|
Вопрос к Dodakaedr,у. Что нужно изменить в данной процедуре если финишная страница отключена.
Цитата:
Цитата:
|
Цитата:
Код:
procedure CurStepChanged(CurStep: TSetupStep); |
Всем привет! Решил организовать сжатие сборки CS:S через связку Precomp + Srep + Arc.
Батник автоматизации
arc a -ep1 -ed -r -w.\ Setup.bin -mprecomp:t-
nfj:zl11,18,34,39,44,55,68,75,82,83,84,85,97,98:d10+srep+exe+delta+lzma:a1:mfbt4:d256m:fb128:mc1000: lc8 "D:\test1\Modules\*" Но во время установки происходит следующее: Версия ISDone 0.6 final. Подскажет кто-нибудь решение проблемы? |
Цитата:
В темпе обязательно должны находиться: последний ISDone.dll, unarc.dll, соответствующие CLS фильтры, модифицированный precomp.exe, подменная packjpg_dll.dll и zlib1.dll Да, еще такой момент, если пакуете данные Arc.exe/FreeArc, которые подписаны FA_protect, то и распаковывать нужно патченным экземпляром unarc.dll |
Помогите. Видимо куда то ткнул и получил
было стало версия Inno 5.5.8 версия ISTools 5.3.0.1 как исправить? |
Цитата:
[Setup] DisableStartupPrompt=yes Игнорируется, когда UseSetupLdr=no |
ZVSRus, не помогает
всё равно выходит второе(неполноценное окно установки) Код:
[Setup] |
Цитата:
AppName=Soft Pack AppVersion=2016 AppVerName=Soft Pack OutputBaseFilename=Soft Pack Compression=lzma ArchitecturesInstallIn64BitMode=x64 ia64 WizardImageFile={tmp}\WizardImage.bmp WizardSmallImageFile={tmp}\WizardSmallImage.bmp VersionInfoVersion=2016 VersionInfoCompany=ispolin VersionInfoCopyright=ispolin VersionInfoProductVersion=2.0.1.6 VersionInfoDescription=Soft Pack VersionInfoProductName=Soft Pack AppCopyright=ispolin LicenseFile={tmp}\license.txt DisableStartupPrompt=no У Вас стоит no нужно yes CreateAppDir=false |
Цитата:
Цитата:
соответственно нужно ставить no |
Цитата:
Из Справки: [Setup]: DisableStartupPrompt Возможные значения: yes или no Значение по умолчанию: yes Описание: При значении yes, инсталлятор не будет отображать сообщение "Эта программа установит… на ваш компьютер… Продолжить?" ("This will install... Do you wish to continue?"). Игнорируется, когда UseSetupLdr=no. |
Цитата:
была старая версия инно, после компиляции и запуска уже собранной программы выходило нормальное окно приветствия что на первом скрине, обновил версию инно и теперь окно приветствия стало как на втором скрине, хочу вернуть окно от первого скрина |
Цитата:
Второй скрин - Это не страница приветствия, это всплывающее окно перед страницей приветствия. В последних версиях Inno 5.5.8, 5.5.9 по моему страница приветствия по умолчанию отключена, об этом на форуме уже писали. Тогда в секцию [Setup] вставь DisableWelcomePage=no из справки: [Setup]: DisableWelcomePage Возможные значения: yes или no Значение по умолчанию: no Описание: При значении yes инсталлятор не покажет страницу приветствия. |
|
Всем добрый вечер! Имеется скрипт установки CS:S с прикрученным ISDone. До прикручивания ISDone работала автоустановка directx, visual studio и net.fraemwork. После включения ISDone автоустановка не работает. Может кто подсказать, как это исправить? Заранее спасибо!
|
Добрый день! Прошу помощи профессионалов! Имеется тестовый скрипт. При отработке CancelButtonClickFinishedPage срабатывает закрытие процесса, но в Винде, в папке TEMP временные файлы не удаляются. Не могу понять, как заставить программу чистить TEMP по завершению?
Скрытый текст
[Setup] AppName=My Program AppVersion=1.5 DefaultDirName={pf}\My Program [code] procedure ExitProcess(uExitCode: UINT); external 'ExitProcess@kernel32.dll stdcall'; function NextButtonClick(CurPage: Integer): Boolean; begin Result := True; // if the fake Finish button was clicked... if CurPage = wpFinished then MsgBox('И вот тут Можно запустить программу!', mbInformation, MB_OK); end; procedure CancelButtonClickFinishedPage(Sender: TObject); begin // display the "Exit Setup ?" message box and if the user selects "Yes", // then exit the process; it is currently the only way how to exit setup // process manually if ExitSetupMsgBox then ExitProcess(0); end; procedure CurPageChanged(CurPageID: Integer); begin if CurPageID = wpFinished then begin WizardForm.NextButton.Caption := 'Run'; WizardForm.CancelButton.Caption := SetupMessage(msgButtonFinish); WizardForm.CancelButton.Visible := True; // bind your own OnClick event for the Cancel button; the original one // is already disconnected at this stage WizardForm.CancelButton.OnClick := @CancelButtonClickFinishedPage; end; end; |
doctor_allcome,
Код:
procedure CancelButtonClickFinishedPage(Sender: TObject); Скрытый текст
Код:
[Setup] |
sergey3695, спасибо за ответ!
DelTree(ExpandConstant('{tmp}'),true,true,true); пробовал вставлять, почему-то удаляется только часть файлов из папки TEMP, а вот библиотеки (dll) и сама папка is-xxxx остаются. Из второго примера, я так понял, вы предложили кнопки поменять местами. NextButtonClick отрабатывает корректный выход, а в CancelButtonClickFinishedPage уже можно запускать программу (через ShellExec). После компиляции в FinishPage только одна кнопка Finish, а кнопка 'RUN' не отображается, хотя должно быть WizardForm.CancelButton.Caption := 'Run'; |
Здравствуйте,подскажите пожалуйста, возможно ли изменить размер окна StartupPrompt, а также появляющегося перед
удалением, в котором написано "Вы действительно хотите удалить xxxxxxx и все компоненты программы?" |
doctor_allcome, а когда вставляли [
Цитата dapa: окна StartupPrompt » а что это за окно? |
sergey3695, Спасибо большое. Вот я "Валера"! Все работает отлично.
|
Цитата:
|
dapa, нет нельзя. это стандартные сообщения.
|
Уважаемый sergey3695, позвольте еще один вопрос? Если в процедуре CancelButtonClickFinishedPage вместо MsgBox вставить ShellExec то программа в ShellExec выполнится, но окно инстяллятора остается открытым. Как закрыть окно инсталлятора, после запуска файла?
Скрытый текст
[Setup] AppName=My Program AppVersion=1.5 DefaultDirName={pf}\My Program OutputDir=. [_code] function NextButtonClick(CurPage: Integer): Boolean; begin Result := False; // display the "Exit Setup ?" message box and if the user selects "Yes", // then exit the process; it is currently the only way how to exit setup // process manually if CurPage = wpFinished then begin if ExitSetupMsgBox then Result := True end else Result := True; end; procedure CancelButtonClickFinishedPage(Sender: TObject); begin // if the fake Finish button was clicked... MsgBox('И вот тут Можно запустить программу!', mbInformation, MB_OK); end; procedure CurPageChanged(CurPageID: Integer); begin if CurPageID = wpFinished then begin WizardForm.CancelButton.Caption := 'Run'; WizardForm.CancelButton.Visible := True; // bind your own OnClick event for the Cancel button; the original one // is already disconnected at this stage WizardForm.CancelButton.OnClick := @CancelButtonClickFinishedPage; end; end; |
Цитата:
|
doctor_allcome,
Скрытый текст
[Setup]
AppName=My Program AppVersion=1.5 DefaultDirName={pf}\My Program OutputDir=. [code] /////===== Начало - ExecAndWait =====\\\\\ var lastproc: cardinal; const NORMAL_PRIORITY_CLASS = $00000020; REALTIME_PRIORITY_CLASS = $00000100; type _TStartupInfo = record cb: DWORD; lpReserved, lpDesktop: Longint; lpTitle: PAnsiChar; dwX, dwY, dwXSize, dwYSize, dwXCountChars, dwYCountChars, dwFillAttribute, dwFlags: DWORD; wShowWindow, cbReserved2: Word; lpReserved2: Byte; hStdInput, hStdOutput, hStdError: Longint; end; _TProcessInformation = record hProcess, hThread: Longint; dwProcessId, dwThreadId: DWORD; end; _TMsg = record hWnd: HWND; msg, wParam: Word; lParam: LongWord; Time: TFileTime; pt: TPoint; end; function OpenProcess(dwDesiredAccess: DWORD; bInheritHandle: BOOL; dwProcessId: DWORD): THandle; external 'OpenProcess@kernel32.dll stdcall'; function CloseHandle(hObject: THandle): BOOL; external 'CloseHandle@kernel32.dll stdcall'; procedure GetStartupInfo(var lpStartupInfo: _TStartupInfo); external 'GetStartupInfoA@kernel32.dll stdcall'; function CreateProcess(lpApplicationName: PAnsiChar; lpCommandLine: PAnsiChar; lpProcessAttributes, lpThreadAttributes: DWORD; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: PAnsiChar; lpCurrentDirectory: PAnsiChar; const lpStartupInfo: _TStartupInfo; var lpProcessInformation: _TProcessInformation): BOOL; external 'CreateProcessA@kernel32.dll stdcall'; function WaitForSingleObject(hHandle: Longint; dwMilliseconds: DWORD): DWORD; external 'WaitForSingleObject@kernel32.dll stdcall'; function TerminateProcess(hProcess: Longint; uExitCode: UINT): BOOL; external 'TerminateProcess@kernel32.dll stdcall'; function PeekMessage(var lpMsg: _TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall'; function TranslateMessage(const lpMsg: _TMsg): BOOL; external 'TranslateMessage@user32.dll stdcall'; function DispatchMessage(const lpMsg: _TMsg): Longint; external 'DispatchMessageA@user32.dll stdcall'; procedure Application_ProcessMessages; var Msg: _TMsg; begin while PeekMessage(Msg, 0, 0, 0, 1) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; end; function ExecAndWait(filename, params: pansichar; showcmd: integer; Wait: boolean; Priority: Smallint): Boolean; var SI : _TStartupInfo; PI : _TProcessInformation; CMD: string; prt: DWORD; begin Result:=false; CMD:='"' + filename + '" ' + params; GetStartupInfo(SI); SI.wShowWindow := showcmd; SI.dwFlags := 1; if Priority = 0 then prt:= NORMAL_PRIORITY_CLASS else prt:= REALTIME_PRIORITY_CLASS; Result:=CreateProcess('', PansiChar(CMD), 0, 0, false, prt,'', pansichar(ExtractFilePath(filename)), SI, PI); lastproc:=PI.dwProcessId; if wait then while WaitforSingleObject(PI.hProcess, 50) = $00000102 do Application_ProcessMessages; CloseHandle(PI.hProcess); end; /////===== Конец - ExecAndWait =====\\\\\ var OldEvent_NextButtonClick: TNotifyEvent; procedure NextButtonClick2(Sender: TObject); begin ExecAndWait(ExpandConstant('{sys}\calc.exe'), '', SW_SHOW, false, 0); OldEvent_NextButtonClick(Sender); end; procedure CancelButtonClickFinishedPage(Sender: TObject); begin if ExitSetupMsgBox then OldEvent_NextButtonClick(Sender); end; procedure InitializeWizard; begin OldEvent_NextButtonClick := WizardForm.NextButton.OnClick; end; procedure CurPageChanged(CurPageID: Integer); begin if CurPageID = wpFinished then begin WizardForm.CancelButton.Caption := SetupMessage(msgButtonFinish); WizardForm.CancelButton.Visible := True; WizardForm.CancelButton.OnClick := @CancelButtonClickFinishedPage; // WizardForm.NextButton.Caption := 'Run'; WizardForm.NextButton.OnClick := @NextButtonClick2; end; end; |
sergey3695, еще раз Спасибо! Все работает. Сам бы я до такого вряд ли дошел.
|
Доброе время суток. Можно ли как-то организовать определение занятых процессом файлов перед установкой и перед деинсталяцией программы и потом завершить процесс?
|
Цитата:
|
Добрый день. В резделе RЕGISTRY, при компиляции, жалуется на символы { }. Можно это исправить ?
|
Цитата:
Код:
Root: HKLM; SubKey: SOFTWARE\test\{{12345} |
Nordek, после второй скобки }, тоже надо еще одну скобку ставить ?
|
Цитата:
|
Благодарю за помошь.
Другой момент. Жалуется на ковычки в скобкаx ValueData: "[open("%1")]" Можно исправить это ? |
Имеется примерный код. Вывод описания компонента в лейбл. При выставлении компоненту флага fixed ему в описании прибавляется текст "Временно недоступно", который нигде не прописан. Как этот текст убрать? Во всем этом я профан, пытался прогуглить - не нашел
Код:
[Components] |
Цитата:
Нужно просто продублировать каждую кавычку: Код:
ValueData: "[open(""%1"")]" Цитата:
ListBox тут был совсем не в тему, поэтому в новых обновлениях вместо DescriptionLabel будет DescriptionMemo. А ListBox будет убран, как и надо было с самого начала делать =) Ну это я так, к слову. |
Добрый день! Уважаемые форумчане, кто нибудь может поделиться примером проверки MD5, для нескольких файлов?
По возможности для стандартного Inno, а не для модов (ResTools). |
Цитата:
Код:
Procedure InitializeWizard(); |
собрал setup, установил программу, после запуска setup заново, setup уже не спрашивает путь для установки...
какой параметр использовать, чтобы всегда setup спрашивал путь установки, независимо от того, стоИт ли эта версия программы или нет? |
Добрый день! Прошу помощи! Есть код, срабатывающий при деинсталляции. Удаляет папку приложения полностью. Необходимо что-бы одна папка (СОХРАНЕНИЯ) не удалялась. Если "СОХРАНЕНИЯ" находятся в Documents and Settings или еще где, то все срабатывает нормально. Но если "СОХРАНЕНИЯ" находятся в {app}\ , то удаляется все из {app}\ включая "СОХРАНЕНИЯ".
Скрытый текст
procedure CurUninstallStepChanged (CurUninstallStep: TUninstallStep);
begin case CurUninstallStep of usPostUninstall: begin DelTree(ExpandConstant('{app}'),true,true,true); end; end; if CurUninstallStep=usPostUninstall then begin if DirExists(ExpandConstant('{app}'+'\СОХРАНЕНИЯ') then if MsgBox('Вы хотите удалить сохранения?',mbconfirmation, mb_YesNo) = IDYES then begin if not DelTree(ExpandConstant('{app}')+'\СОХРАНЕНИЯ', True, True, True) then MsgBox('Папка с сохранениями не удалена!' #13#13 'Папка не существует или используется другим приложением ...', mbError, MB_OK); end; end; end; |
Цитата:
Цитата:
|
Цитата:
Код:
DisableDirPage=no Цитата:
Код:
[Dirs] |
Привет всем прошу помощи не отображаются иконки в ComboBox при Style := csDropDownList;
|
ZVSRus,
к сожалению, ваш параметр DirExistsWarning=yes для моего случая не подходит... El Sanchez, спасибо, ваш параметр DisableDirPage=no - то что надо, при повторном запуске setup, он просит указать директорию установки... отлично... |
El Sanchez,
Код:
[Dirs] Код:
begin Код:
if MsgBox('Вы хотите удалить сохранения?',mbconfirmation, mb_YesNo) = IDYES then .... |
Цитата:
Код:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); Цитата:
|
|
Цитата:
Скрытый текст
Код:
[Setup] |
El Sanchez, Большое тебе спасибо за пример
|
El Sanchez, спасибо. немного дополнил пример.
Скрытый текст
Код:
[Setup] |
Привет. Подскажите, как проверить установлен ли в системе Adobe Flash Player, и если не установлен то предлагаем скачать.
P.S По поводу Adobe Flash Player поиск дал ответ хотя понятно мало что. Очень хотелось бы увидеть скрипт полностью, для изучения. AlekseyPopovv, вас ожидает корреспонденция, привет. И если можно, поделитесь дельным примером использования ISCrypt.dll Скрытый текст
Код:
[Setup] Вот что удалось получить. Это все? Или при помощи ISCrypt.dll можно серьезно установить более менее серьезную защиту на сам установщик от распаковки используя шифрование. |
sergey3695, dll файлы обычно которые заняты процессом explorer. Например aimp_menu64.dll
|
Как удалить папку с файлами где будет устанавливаться программа ?
Папка для установки\SOFT // Нужно удалить папку SOFT не зависимо какая папки установки выбрана P.S Желать чтобы она удалялась в конце установки |
Добрый день! Наверное неправильно выразился :) в вопросе.
Есть папка, в ней находятся подпапки, n-шт. При деинсталляции должны удаляться все подпапки кроме одной, а она должна удаляться (или нет) в зависимости от результата ответа на вопрос ... Код:
if MsgBox('Вы хотите удалить сохранения?',mbconfirmation, mb_YesNo) = IDYES then ... |
Подскажите пожалуйста, как правильно прописать binary.
Код:
Root: HKCU; Subkey: "SOFTWARE\test"; ValueType: binary; ValueName: "LM"; ValueData: "00,00,00,00,94,2f,1e,e7,e6"; Flags: uninsdeletekey |
Serjione,
Наверное так. Код:
|
TryRooM, в действительности, binary строка длиннее той, что приведена в примере. С длинной бинарной строкой ваш вариант уже не катит.
|
Serjione,
Если длинна, превышает, через код, как вариант. Код:
[Files] |
TryRooM
Unrecognized parameter name "procedure CurStepChanged(CurStep" |
Здравствуйте, подскажите пожалуйста, как открыть файл .dat или .bin? Хочу открыть файлы репака одной игры без его установки, подозреваю что там вирус.
|
Ferkads
Если репак распаковывает архивы FreeArc, то можно установить FreArc на компьютер и файлы .dat или .bin перименовать в .arc, после этого с ними можно работать как с архивами. При условии того, что они без пароля. |
doctor_allcome там в одном репаке пароль стоит, а в другом не хочет открывать FreArc-ом.
|
Можно еще попробовать .7z, возможно архивы репака были упакован в 7-Zip. Еще можно попробовать http://innounp.sourceforge.net/. Еще есть для Total Commander аддон, для MultiArc http://wincmd.ru/plugring/InnoSetupAddon.html. На крайний случай можно попробовать программу следящую за действиями инсталляторов (куда, чего ставиться). Вроде в Revo Uninstaller Pro есть такая функция.
|
:shout: :shout: :shout:
|
|
ребята дайте пример скрипта распаковки через FreeArc
|
Может кто подскажет как сделать settings.ini файл для выбора языка по умолчанию.
Так-как у программы не нахожу такого файла ни в локальных папках, ни записей в реестре. Программа по умолчанию ставиться на английском языке, хотя русский также присутствует. При переключении с английского на русский, при следующим запуске программы язык так и стоит русский, и это правильно. По логике вещей где-то должна быть запись на пропись языка. Все перерыл, не могу найти. И если у кого есть пример выбора языка по умолчанию через запись в реестр. Не помню на каком форуме, но такое решение по памяти уже встречал. |
ZVSRus, Не совсем понятно что вам нужно в действительности.
Цитата:
Код:
Language=Default Код:
setup.exe /LOADINF=settings.ini |
Цитата:
что-то типа такого: Цитата:
Можно, если есть пример (как вариант) пример через запись в реестр. Что-то типа такого: Цитата:
|
Вложений: 1
парни что за проблема повторяется 2 раза папка установки
скрипт
#define MyAppName "Corel PaintShop Pro X8" #define MyAppPublisher "Corel" #define MyAppURL "" #define MyAppExeName "Corel PaintShop Pro.exe" #define AppId "{1F666XX0-A000-4F48-66F6-080DEC56E094}" [Setup] AppId={{1F666XX0-A000-4F48-66F6-080DEC56E094} AppVersion=18.2.0.6 VersionInfoVersion=18.2.0.6 AppName={#MyAppName} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\Corel\Corel PaintShop Pro X8 VersionInfoDescription=Corel PaintShop Pro X8 18.2.0.6 OutputDir=C:\Users\\WWW\Desktop\скрипт OutputBaseFilename=Corel PaintShop Pro X8 18.2.0.6 SetupIconFile=C:\Users\WWW\Desktop\скрипт\image\1.ico PrivilegesRequired=admin Compression=lzma/ultra64 SolidCompression=true InternalCompressLevel=ultra64 WizardImageFile=image\1.bmp WizardSmallImageFile=image\2.bmp UsePreviousGroup=False DisableProgramGroupPage=yes UninstallRestartComputer=no DisableFinishedPage=yes DiskSpanning=no SlicesPerDisk=1 DiskSliceSize=2100000000 UninstallDisplayIcon={app}\1.ico UninstallIconFile=C:\Users\WWW\Desktop\скрипт\image\unistaler.ico [Languages] Name: russian; MessagesFile: compiler:Languages\Russian.isl //Name: english; MessagesFile: compiler:Languages\English.isl [Icons] Name: "{commondesktop}\Corel PaintShop Pro X8"; Filename: "{app}\Corel\Corel PaintShop Pro X8\Corel PaintShop Pro.exe"; Tasks: DesktopIcon Name: "{commonstartup}\Corel PaintShop Pro X8"; Filename: "{app}\Corel\Corel PaintShop Pro X8\Corel PaintShop Pro.exe"; Tasks: AutoLaunch Name: "{group}\Corel PaintShop Pro X8"; Filename: "{app}\Corel\Corel PaintShop Pro X8\Corel PaintShop Pro.exe"; Tasks: AutoLaunch |
Цитата:
Так:
[Files]
Source: "{src}\SettingsRU.ini"; DestDir: "{app}"; DestName: "Settings.ini"; Check: LangRusCheck and InstallerCheck; MinVersion: 0.0,5.0; Flags: ignoreversion external Source: "{src}\SettingsEN.ini"; DestDir: "{app}"; DestName: "Settings.ini"; Check: LangEngCheck and InstallerCheck; MinVersion: 0.0,5.0; Flags: ignoreversion external Цитата:
Цитата:
Код:
[INI] Скрытый текст
Если нужно для радиокнопки, то в секции [INI] вместо:
Код:
Languages: english Код:
Check: English Цитата:
Скрытый текст
[Icons]
Name: "{commondesktop}\Corel PaintShop Pro X8"; Filename: "{app}\Corel PaintShop Pro.exe"; Tasks: desktopicon Name: "{commonstartup}\Corel PaintShop Pro X8"; Filename: "{app}\Corel PaintShop Pro.exe"; Tasks: desktopicon2 Name: "{group}\Corel PaintShop Pro X8"; Filename: "{app}\Corel PaintShop Pro.exe"; Tasks: desktopicon2 |
Nordek
всё равно не выходит опять 2 папки [Icons] Name: "{commondesktop}\Corel PaintShop Pro X8"; Filename: "{app}\Corel PaintShop Pro.exe"; Tasks: desktopicon Name: "{commonstartup}\Corel PaintShop Pro X8"; Filename: "{app}\Corel PaintShop Pro.exe"; Tasks: desktopicon2 Name: "{group}\Corel PaintShop Pro X8"; Filename: "{app}\Corel PaintShop Pro.exe"; Tasks: desktopicon2 |
Цитата:
Изначально вопрос был поставлен что именно нужно записать в самом файле .INI В .INI файле однозначно должно быть Language=ru_RU, но что-то должно быть еще для связывания с программой или языковыми файлами, что именно подскажите. |
Цитата:
|
Цитата:
По этому, см.: с чистого листа:
Код:
#define AppName "Corel PaintShop Pro X8" Цитата:
См. Справка » Константы Из справки:
{ini:Filename,Section,Key|DefaultValue}
Берёт значение из .INI файла.
Код:
{ini:{win}\MyProg.ini,Settings,Path|{pf}\My Program} |
Цитата:
По умолчанию программа устанавливается на языке системы т.е. на русском. При выборе английского языка, при следующем запуске английский язык так и стоит, значит где-то прописывается язык, где не могу найти ни записей в реестре, ни в локальных папках файлов конфигурации нет. Что делается через секции [INI] и [Registry] я знаю. Объясняю в 3 раз что мне нужно: Взять текстовый документ, что-то там написать конкретно для русского или английского языка, потом поменять расширение TXT на INI и чтобы это работало. Вот что написать я не знаю. То есть сделать settings.ini в ручную! |
Цитата:
|
Цитата:
Цитата:
Как эти строки приляпать к программе, название сообщением выше. |
ZVSRus,
Программа Light Image Resizer Код:
Root: HKCU; SubKey: Software\ObviousIdea\ImageResizer\4.0; ValueType: string; ValueName: locale_file; ValueData: RSZ_United States.ini; Check: EngLang; |
Цитата:
Цитата:
TryRooM вам тоже спасибо за отклик, но уже разобрался. |
удалено
|
Подскажите, а средствами Inno возможно ли выполнить прогресс бар, при создании backup файлов и папок без использования дополнительных библиотек?
Должно быть так ... Цитата:
|
Цитата:
*без использования сторонних библиотек. |
kotyarko@fb, Спасибо. Об этом знаю.
Просто, хотелось что-нибудь проще ... |
Уважаемые помогите пожалуйста с двумя вопросами:
1. Что я делаю не так? На Win10 не распаковывается правильный (вторая пара) вариант SPTD (SPTD2inst*.exe) Код:
Source: {app10}\sptd\SPTDinst-x86.exe; DestDir: {app}\; Check: not Is64BitInstallMode; OnlyBelowVersion: 0,6.4; Flags: ignoreversion 2. Имеется ключ реестра Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Конфигурацию 7-Zip SFX\command] Код:
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\CommandStore\shell\Конфигурацию 7-Zip SFX\command; ValueType: string; ValueData: """wscript ""{app}\AllInOne.vbs"" ""%1"" /CONFIG"; Check: IsWin64; Flags: uninsdeletevalue uninsdeletekeyifempty Заранее спасибо за подсказки. |
elChoopacabra, а так?
Код:
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\CommandStore\shell\Конфигурацию 7-Zip SFX\command; ValueType: string; ValueData: "wscript ""{app}\AllInOne.vbs"" ""%1"" /CONFIG"; Check: IsWin64; Flags: uninsdeletevalue uninsdeletekeyifempty |
Dodakaedr, благодарю. Именно оно.
Добавлено: С проблемой в Win10 тоже удалось разобраться. Причиной оказалось неверное детектирование "Десятки" программой версии 5.5.2 (нормально это делает только Inno Setup 5.5.6 и выше). Но поскольку (ввиду субъективных причин) переходить на новый билд не хотелось, проблема решилась путём "перекидывания" манифеста из актуальной версии для Setup.e32 и SetupLdr.e32 |
ребята подскажите как сделать что бы после основного инсталятора запустился другой автоматом
|
Цитата:
PHP код:
|
Подскажите пожалуйста с таким скриптом. Хотел сделать, что бы в конце установщика был выбор Стандартная или Выборочная установка. Как тут, не всё сразу устанавливалось, а можно было выбрать по отдельности, что устанавливать, а что нет.
Делал по этому образцу на форуме ( Выделение всех компонентов ) http://forum.oszone.net/post-1276947-444.html Но когда создаю инсталлятор, ругается что то на 38 линию. Что там может быть не так, подскажите? Скрипт прикладываю PHP код:
|
Цитата:
|
|
Цитата:
Подчеркну жирным: «Source: \Trains\Trainset\klrFr_Hopper\License.txt; DestDir: {app}\klrFr_Hopper; DestName: License.txt; Components: klrFr_Hopper-0001; Flags: ignoreversion» - т.е заданное значение у вас зависима от элементов в [Components]. Каждому переназначить по новой. Готовое к использованию
Замените у себя на эту часть:
Код:
[Components] |
Заменил ту часть, что у вас в образце. Всё равно ругается на ту строчку?
Прикладываю новый скрипт, всё как получилось. Код:
; Script generated by the Inno Setup Script Wizard. |
Цитата:
Я не могу знать какое у вас расположение файлов. Особенно раздражает когда вы не прикрепляете никаких файлов. Смотрите как я это делаю. Уверен сможете повторить. Мне пришлось создать их, т.е повторить чтоб соответствовало - это никому ненужно. Таким образом вы должны были представить, чтоб собеседнику не пришлось страдать головной болью. А вы получили скорый и точный ответ. |
Посмотрел, путь к файлу указан верно, может ещё не хватает какой то команды в скрипте к файлу?
Цитата:
Я сначала хотел прикрепить весь скрипт, но файл с расширением .iss нельзя прикрепить, тогда я вот всё скопировал и прикрепил в txt Спасибо, что подсказали как прикрепить и какие файлы собрать. У меня всё лежит по такому пути. E:\Games Laboratory\Microsoft Train Simulator\TRAINS\TRAINSET\klrFr_Hopper В папке klrFr_Hopper лежат все файлы. Только картинки c.bmp, train.bmp по разным местам расположены. Прикладываю ещё "Образец_script" по его образцу, я собирал инсталлятор, там тоже вагоны разделены по отдельности. Вот прикрепляю все файлы по вашему образцу. Будут ещё какие то вопросы, пишите. Спасибо вам за помощь! https://yadi.sk/d/7T9WvrOTsTKs4 |
Max-RZD,
Смотрите что у вас получается: В скрипте: klrFr_Hopper-0001_e.wag В папке: klrFr_Hopper-0001e.wag Надеюсь заметите разницу. Если конечный файл на выходе имеет имя "klrFr_Hopper-0001e.wag", то на вход в инсталлятор должно быть таким же. Скрипт к ранее прикреплённым файлам:
Т.е скопируйте всё содержимое:
Код:
; Script generated by the Inno Setup Script Wizard. Отработает без препятствий. На заметку: Смотрите отмеченное красным: \Trains\Trainset\klrFr_Hopper\License.txt Обратный слеш вначале - означает корень диска. |
Вроде разобрался, сейчас инсталлятор весь собирается без ошибок.
Я изменил пути в секции [Files], удалил \Trains\Trainset и ошибки не стало. Код:
; Script generated by the Inno Setup Script Wizard. Но она почему то расположена не в виде кнопок как здесь А как в выпадающем меню. Как это можно исправить? И когда выбираешь Выборочная, никакого выбора нет, как здесь А просто устанавливается Первый хоппер - klrFr_Hopper-0001 Как это можно всё исправить? |
В скрипте как раз правильно указано:
klrFr_Hopper-0001_e.wag В папке, так не правильно: klrFr_Hopper-0001e.wag Всё уже исправил в папке. Удалил пути в секции [Files], удалил \Trains\Trainset, инсталлятор теперь собирается без ошибок. Вопрос остаются по выбору вот в конце установке? |
Доброе время суток. Помогите решить проблему с запуском процесса explorer.exe. Как видно на видео процесс explorer завершается успешно, но после завершения установки софтины инсталлятор обратно запускает explorer, но открывается только папка.
|
Цитата:
|
Приветствую!
Я не знаю как в зависимости от выбранного языка заставить скрипт выдавать нужный перевод для Типа Диска. Это единственное что я не перевел и как я полагаю функция возвращает результат в зависимости от языка системы, что мне не нужно.. Вместо "Локальный диск/Съемный диск" - должен писать "Logical Disk" и "Removable Disk" соответственно (в случае выбора английского языка). Поможете? вот сам скрипт: Код:
[Setup] |
Код:
#define AppNameHL "Half-Life" Ошибка при удалении Внутренняя ошибка:Cannot find utCompiledCode record for this version of the uninstaller Как исправить ? P.S Система установлена чистая Inno Setup 5.5.9 Unicode |
Sanarialerin, на сколько помню данную ошибку, не надо паковать unins000.dat и unins000.exe. Могу ошибаться.
|
Цитата:
Я вас понял,проверю еще раз. |
Подскажите а как в секцию DefaultDirName поместить свой адрес, сформированный cmd скриптом. А то язык который написан в секции code совсем не понятный.
|
Код:
; Script generated by the Inno Setup Script Wizard. |
Цитата:
Код:
Source: C:\Test\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs Код:
Source: C:\Test\ExeName.exe; DestDir: {app}; Flags: ignoreversion Т.е при таком условии: Код:
Source: C:\Test\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs Но если решите отдельно определить отличное расположение для файла ExeName.exe, то строку нужно будет вернуть/добавить. |
Цитата:
Код:
; Script generated by the Inno Setup Script Wizard. |
Цитата:
Цитата:
Пример: Код:
[Icons] |
HKEY_CURRENT_USER\Software\MyCompany
HKEY_LOCAL_MACHINE\SOFTWARE\MyCompany HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MyCompany Помогите пожалуйста,как можно удалить во время установки и во время деинсталляции ? |
Цитата:
Код:
Root: HKCU; Subkey: "Software\MyCompany"; Flags: dontcreatekey deletekey uninsdeletekey |
Цитата:
|
Цитата:
Код:
procedure CurStepChanged(CurStep: TSetupStep); |
Вложений: 1
Как сменить иконку и сообщение в MessageBox,чтобы вместо MB_ICONQUESTION было MB_ICONWARNING ?
Если что сморите скриншот! |
Помогите исправить кнопку на странице приветствия (WelcomePage) вместо "Install" должно быть "Next"
Как сделать такое ? Скрытый текст
#define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{07BF4756-493A-4A92-8C99-65465807D1B5} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} OutputBaseFilename=setup Compression=lzma SolidCompression=yes DisableDirPage=yes DisableProgramGroupPage=yes DisableReadyMemo=yes DisableReadyPage=yes DisableStartupPrompt=yes DisableWelcomePage=no DisableFinishedPage=no [Messages] ButtonNext=Install [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion [code] var MainPage : TWizardPage; edtFolderToInstall : TEdit; InstallLocation : String; procedure BrowseClick(Sender : TObject); var Dir : String; begin Dir := edtFolderToInstall.Text; if BrowseForFolder('Select Folder',Dir,false) then edtFolderToInstall.Text := Dir; end; procedure InitializeWizard(); var lblFolderToInstall : TLabel; btnFolderToInstall : TButton; begin MainPage := CreateCustomPage(wpWelcome,'Setup - Test App Name','This will install "Test App Name" to your computer'); lblFolderToInstall := TLabel.Create(MainPage); lblFolderToInstall.Parent := MainPage.Surface; lblFolderToInstall.Top := 10; lblFolderToInstall.Left := 10; lblFolderToInstall.Caption := 'If you would like to select a different folder, Click Browse.' edtFolderToInstall := TEdit.Create(MainPage); edtFolderToInstall.Parent := MainPage.Surface; edtFolderToInstall.Top := 40; edtFolderToInstall.Left := 7; edtFolderToInstall.Width := 321; edtFolderToInstall.Text := WizardDirValue; btnFolderToInstall := TButton.Create(MainPage); btnFolderToInstall.Parent := MainPage.Surface; btnFolderToInstall.Top := 38; btnFolderToInstall.Left := 340; btnfolderToInstall.Caption := 'Browse...'; btnFolderToInstall.OnClick := @BrowseClick; end; |
Rhianarkipom,
удалите Код:
[Messages] |
Цитата:
Код:
procedure CurPageChanged(CurPageID: Integer); |
del
|
Цитата:
Извините меня, не полностью вопрос вчера описал Вопрос: На странице приветствия должна быть кнопка "Next", где выбор папки там должна быть кнопка "Install" Вот этот код полностью игнорирует: WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall) - Установщик будет мультиязычный (несколько языков) Помогите пожалуйста мне сделать Скрытый текст
#define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{07BF4756-493A-4A92-8C99-65465807D1B5} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} OutputBaseFilename=setup Compression=lzma SolidCompression=yes DisableDirPage=yes DisableProgramGroupPage=yes DisableReadyMemo=yes DisableReadyPage=yes DisableStartupPrompt=yes DisableWelcomePage=no DisableFinishedPage=no [Messages] ButtonNext=Install [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion [code] var MainPage : TWizardPage; edtFolderToInstall : TEdit; InstallLocation : String; procedure BrowseClick(Sender : TObject); var Dir : String; begin Dir := edtFolderToInstall.Text; if BrowseForFolder('Select Folder',Dir,false) then edtFolderToInstall.Text := Dir; end; procedure InitializeWizard(); var lblFolderToInstall : TLabel; btnFolderToInstall : TButton; begin MainPage := CreateCustomPage(wpWelcome,'Select Destination Location','Where should {#MyAppName} be installed ?'); lblFolderToInstall := TLabel.Create(MainPage); lblFolderToInstall.Parent := MainPage.Surface; lblFolderToInstall.Top := 10; lblFolderToInstall.Left := 10; lblFolderToInstall.Caption := 'If you would like to select a different folder, Click Browse.' edtFolderToInstall := TEdit.Create(MainPage); edtFolderToInstall.Parent := MainPage.Surface; edtFolderToInstall.Top := 40; edtFolderToInstall.Left := 7; edtFolderToInstall.Width := 321; edtFolderToInstall.Text := WizardDirValue; btnFolderToInstall := TButton.Create(MainPage); btnFolderToInstall.Parent := MainPage.Surface; btnFolderToInstall.Top := 38; btnFolderToInstall.Left := 340; btnfolderToInstall.Caption := 'Browse...'; btnFolderToInstall.OnClick := @BrowseClick; end; procedure CurPageChanged(CurPageID: Integer); begin case CurPageID of wpWelcome: begin WizardForm.NextButton.Caption:= 'Next >'; end; end; end; |
Цитата:
Скрытый текст
Код:
#define MyAppName "My Program" |
Вложений: 2
Как создать Label в окне выбора папки, и сменить заголовок окна "Обзор папок" ?
|
Rhianarkipom, не понятно и не информативно.
|
Цитата:
Смотрите скриншот! http://forum.oszone.net/attachment.p...8&d=1467633076 Скрытый текст
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" [Setup] AppId={{56AC41C4-C68E-4E95-89A2-98EBF2F72921} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} DisableProgramGroupPage=yes OutputBaseFilename=setup Compression=lzma SolidCompression=yes DisableWelcomePage=no DisableReadyMemo=yes DisableReadyPage=yes DisableFinishedPage=no DisableDirPage=yes DisableStartupPrompt=yes [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" ;Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl" [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; [code] var MainPage : TWizardPage; edtFolderToInstall : TEdit; InstallLocation : String; procedure BrowseClick(Sender : TObject); var Dir : String; begin Dir := edtFolderToInstall.Text; if BrowseForFolder('Select а folder in the list below, then click OK.',Dir,false) then edtFolderToInstall.Text := Dir; end; procedure InitializeWizard(); var lblFolderToInstall : TLabel; btnFolderToInstall : TButton; begin MainPage := CreateCustomPage(wpWelcome,'Select Destination Location','Where should {#MyAppName} be installed ?'); lblFolderToInstall := TLabel.Create(MainPage); lblFolderToInstall.Parent := MainPage.Surface; lblFolderToInstall.Top := 10; lblFolderToInstall.Left := 10; lblFolderToInstall.Caption := 'If you would like to select a different folder, Click Browse.' edtFolderToInstall := TEdit.Create(MainPage); edtFolderToInstall.Parent := MainPage.Surface; edtFolderToInstall.Top := 40; edtFolderToInstall.Left := 7; edtFolderToInstall.Width := 321; edtFolderToInstall.Text := WizardDirValue; btnFolderToInstall := TButton.Create(MainPage); btnFolderToInstall.Parent := MainPage.Surface; btnFolderToInstall.Top := 38; btnFolderToInstall.Left := 340; btnfolderToInstall.Caption := 'Browse...'; btnFolderToInstall.OnClick := @BrowseClick; end; procedure CurPageChanged(CurPageID: Integer); begin case CurPageID of MainPage.ID: begin WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall); end; end; end; |
как закрепить ярлык на панели задач
|
Цитата:
Скрытый текст
Код:
#define MyAppName "MyProg" |
Цитата:
Пример:
Код:
#define AppName "My Program" |
ребята подскажите как сделать что бы компонент был включен как на скрине у меня стоят компоненты через Tasks
|
vadjliss,
Пример
#define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppExeName "MyProg.exe" [Setup] AppName={#MyAppName} AppVersion={#MyAppVersion} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} OutputBaseFilename=setup [Tasks] Name: ProgFiles; Description: Program Files Name: HelpFile; Description: Help File Name: ReadmeFile; Description: Readme File Name: ReadmeFile\1; Description: English; Flags: exclusive Name: ReadmeFile\2; Description: German; Flags: exclusive [Icons] Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" //Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [code] procedure CurPageChanged(CurPageID: Integer); begin if CurPageID = wpSelectTasks then begin WizardForm.TasksList.Checked[0] := True; WizardForm.TasksList.Checked[3] := True; WizardForm.TasksList.ItemEnabled[0] := False; WizardForm.TasksList.TreeViewStyle := True; WizardForm.TasksList.ShowLines := True; end; end; |
У меня вот так
#define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppExeName "MyProg.exe" [Setup] AppName={#MyAppName} AppVersion={#MyAppVersion} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} OutputBaseFilename=setup [Files] Source: soft\Microsoft Visual C++.exe; DestDir: {tmp}; Tasks: fbrinst; Flags: deleteafterinstall Source: soft\NET Framework 4.5.2(онлайн-установка).exe; DestDir: {tmp}; Tasks: aaa; Flags: deleteafterinstall Source: soft\NET Framework 4.6(онлайн-установка).exe; DestDir: {tmp}; Tasks: ddd; Flags: deleteafterinstall Source: soft\DirectX (онлайн-установка).exe; DestDir: {tmp}; Tasks: bbb; Flags: deleteafterinstall [Tasks] Name: fbrinst; Description: "Microsoft Visual C++" Name: aaa; Description: "NET Framework 4.5.2(онлайн-установка)" Name: ddd; Description: "NET Framework 4.6(онлайн-установка)" Name: bbb; Description: "DirectX (онлайн-установка)" [Run] Filename: {tmp}\Microsoft Visual C++.exe; Description: "Launch Firebird Setup"; Tasks: fbrinst Filename: {tmp}\NET Framework 4.5.2(онлайн-установка).exe; Description: "Launch Firebird Setup"; Tasks: aaa Filename: {tmp}\NET Framework 4.6(онлайн-установка).exe; Description: "Launch Firebird Setup"; Tasks: ddd Filename: {tmp}\DirectX (онлайн-установка).exe; Description: "Launch Firebird Setup"; Tasks: bbb |
vadjliss,
Пример:
Код:
#define MyAppName "My Program" vadjliss, Пользуйтесь тегом [CODE][/CODE] для оформления кодов Inno Setup. |
Скрытый текст
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{C5AD9121-9AE4-48DB-9913-539017B5EF4D} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} DisableProgramGroupPage=yes OutputBaseFilename=setup Compression=lzma SolidCompression=yes DisableWelcomePage=no DisableReadyMemo=yes DisableReadyPage=yes [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [code] procedure CurPageChanged(CurPageID: Integer); begin if (CurPageID = wpSelectDir) or (CurPageID = wpReady) then WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall) else if (CurPageID = wpFinished) then WizardForm.NextButton.Caption := SetupMessage(msgButtonFinish) else WizardForm.NextButton.Caption := SetupMessage(msgButtonNext); end; const MF_BYCOMMAND = $00000000; MF_BYPOSITION = $00000400; type HMENU = THandle; function GetSystemMenu(hWnd: HWND; bRevert: BOOL): HMENU; external 'GetSystemMenu@user32.dll stdcall'; function DeleteMenu(hMenu: HMENU; uPosition, uFlags: UINT): BOOL; external 'DeleteMenu@user32.dll stdcall'; function GetMenuItemCount(hMenu: HMENU): Integer; external 'GetMenuItemCount@user32.dll stdcall'; procedure InitializeWizard; var SystemMenu: HMENU; begin SystemMenu := GetSystemMenu(WizardForm.Handle, False); DeleteMenu(SystemMenu, 9999, MF_BYCOMMAND); DeleteMenu(SystemMenu, GetMenuItemCount(SystemMenu)-1, MF_BYPOSITION); end; Куда лучше вставить эту строку : WizardForm.SelectDirBrowseLabel.Caption:= 'To continue, click Install. If you would like to select a different folder, click Browse.'; ? P.S Знаю что можно использовать секцию [Messages], но мне нужно чтобы было в секции [code] |
Цитата:
|
Цитата:
А не скажите как сделать чтобы этот код был юникодным (Преобразовать из ANSI в Unicode) ? |
Цитата:
|
Цитата:
Код:
"C:\Program Files\AkelPad\AkelPad.exe" /OpenFile("Input_ISScript.iss", 1251) /SaveFile("Output_ISScript.iss", 65001, 1) /Quit Цитата:
Выдавая предложение "Преобразовать из ANSI в Unicode", какую цель преследуете? Если для галочки, то данное действие вам ненужно т.к программа Inno версии Ansi не понимает Unicode - иначе в Inno на выходе вместо этого, получите вот это. |
Вложений: 3
Цитата:
Но все-же если вас интересует преобразование кодировок, то в комплекте с расширенной версией InnoSetup идет Inno Script Studio , в которой можно преобразовывать. Авто (ANSI или UTF-8) для обеих версий Inno, (UTF-8) только для Unicode версии. |
Цитата:
Использую только Inno Setup Unicode! Без AkelApad это что невозможно сделать ? P.S Нужно только средствами Inno Setup Unicode это сделать ! |
Вот это имею ввиду
Вот это нужно чтобы приложение было полностью юникодным (чтобы не было всяких "иероглифов") https://msdn.microsoft.com/ru-ru/library/dybsewaf.aspx https://msdn.microsoft.com/en-us/library/2dax2h36.aspx Примерно тоже самое хочу сделать в Inno Setup Unicode P.S Если есть Inno Setup Unicode значит должен быть способ как сделать установщик с полной поддержкой юникода (По умолчанию там используеться код ANSI) А всякие способы которые вы предлагаете сделать с помощью AkelPad они без смысленны, то есть без смысленное занятие "пустой" работой Вы хоть видели приложение юникодное на C++ (вот эти ссылки они показывают как писать с ипользованием юникода)? Та и тем более это ваш "AkelPad" не понятно кто разрабатывает все кому не трудно, так что такой вызывает негатив. |
Доброе время суток. Извините, что задаю вопрос повторно т.к. лень искать подобное сообщение
Как организовать страницу компонентов заменив SelectComponentsPage и при этом чтобы компоненты остались компонентами и чтобы лишние компоненты становились неактивны и снимались галочки в зависимости от компонента |
habib2302,
http://rgho.st/7nj6p9ZHL |
Цитата:
Цитата:
|
Вложений: 2
парни помогите хочу сделать инсталятор как Ashampoo
картинка
может кто то на подобие знает или со скриптом помогите вот скрипт от Ashampoo очень надо |
Цитата:
P.S В Делфи они есть, и здесь должны быть! |
Вложений: 1
Парни помогите давно не делал установщик с описанием и с картинками, вроде все правильно пути а ошибка (((
|
dimantv_wot@vk, Сообщение изображённое на снимке экрана, прямым текстом так и оповещает: Имя пользовательского сообщения неизвестно.
dimantv_wot@vk, Теперь у меня вопрос: Так и есть в действительности "AddCompDescription (3, CustomMessage('CompDescПрицел Дамоклов Меч'),..."? Или всё-таки после CompDesc пишется что-то другое? Представлю наглядный пример:
Код:
[CustomMessages] Код:
Caption := CustomMessage ('MyText'); Код:
Caption := CustomMessage ('МойText'); |
Nordek, Попробую по другому
|
Как убрать тут галочки: Name: tweaker; Description: Wot Tweaker; Flags: dontinheritcheck , парни помогите пожалуйста
|
Как сделать чтобы можно было запустить только одну копию установщика без вывода сообщений ?
|
Цитата:
Скрытый текст
Код:
#define AppMutex "MySuperPuperMutexUniqueName" |
Вложений: 1
Как грузить маску из потока без создания дополнительных файлов в темпе?
При компиляции скрипта требуется расширенная китайская версия от Restools. Большое спасибо El Sanchez за предоставленный скрипт. |
Как сделать такое сообщение на кнопке "Отмена" ?
|
Как убрать тут галочки: Name: tweaker; Description: Wot Tweaker; Flags: dontinheritcheck , парни помогите пожалуйста
|
del
|
ребята подскажите скрипт вот на такую форму инсталлятора и что бы кнопка закрытия не была активной
и ещё полный скрипт распаковки FreeArc а то я его что то не нашёл с меня + |
Как сделать что бы после установки файлов была папка где можно удалить установщик
|
парни как сделать что бы с начало установился ориг. инсталлятор , а потом в эту папку закинуть доп. файлы без подтверждения на замену
|
Как сделать привязку через code?
Скрытый текст
|
AlekseyPopovv,
Пример
[Setup] AppName=My Program AppVersion=1.5 DefaultDirName={pf}\My Program DefaultGroupName=My Program OutputBaseFilename=setup [Languages] Name: "default"; MessagesFile: "compiler:Default.isl" [Files] ;Source: compiler:Examples\Readme.txt; DestDir: {app}\1; Check: IsChecked(1) ;Source: compiler:Examples\Readme.txt; DestDir: {app}\2; Check: IsChecked(2) [Icons] //0 Name: "{commondesktop}\Версия 1.1.0.0 (рекомендуется)"; Filename: "{app}\MyProg.exe"; Check: IsChecked(1) Name: "{commondesktop}\Версия 1.1.0.1"; Filename: "{app}\MyProg.exe"; Check: IsChecked(2) Name: "{commondesktop}\Версия 1.1.0.5"; Filename: "{app}\MyProg.exe"; Check: IsChecked(3) Name: "{commondesktop}\Версия 1.1.0.7"; Filename: "{app}\MyProg.exe"; Check: IsChecked(4) Name: "{commondesktop}\Версия 1.1.0.8"; Filename: "{app}\MyProg.exe"; Check: IsChecked(5) Name: "{commondesktop}\Haali Matroska Muxer 2013.04.14"; Filename: "{app}\MyProg.exe"; Check: IsChecked(6) Name: "{commondesktop}\Surcode DTS Encoder 1.0.29.0"; Filename: "{app}\MyProg.exe"; Check: IsChecked(7) Name: "{commondesktop}\Nero AAC Encoder 1.5.4.0"; Filename: "{app}\MyProg.exe"; Check: IsChecked(8) Name: "{commondesktop}\Nero Audio Decoder 7"; Filename: "{app}\MyProg.exe"; Check: IsChecked(9) Name: "{commondesktop}\Sonic Audio Decoder 4.3.0.169"; Filename: "{app}\MyProg.exe"; Check: IsChecked(10) [code] var TasksPage,TasksPage2: TWizardPage; CheckListBox,CheckListBox2: TNewCheckListBox; BorderWidth,BorderWidth2: Integer; function IsChecked(const Index: Integer): Boolean; begin Result:= CheckListBox.Checked[Index] end; procedure InitializeWizard(); begin TasksPage := CreateCustomPage(wpWelcome, 'Выберите дополнительные задачи', 'Какие дополнительные задачи необходимо выполнить?'); CheckListBox := TNewCheckListBox.Create(WizardForm); CheckListBox.Parent := TasksPage.Surface; CheckListBox.SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(210)); BorderWidth := (CheckListBox.Width-CheckListBox.ClientWidth) div 2; CheckListBox.Flat := False; CheckListBox.Color := clMenu; CheckListBox.BorderStyle := bsNone; CheckListBox.WantTabs :=True; CheckListBox.AddCheckBoxEx('ArcSoft DTS decoder', '', 0, True, True, True, True, nil, True); CheckListBox.AddRadioButtonEx('Версия 1.1.0.0 (рекомендуется)', '', 1, True, True, nil, False); CheckListBox.AddRadioButtonEx('Версия 1.1.0.1', '', 1, False, True, nil, True); CheckListBox.AddRadioButtonEx('Версия 1.1.0.5', '', 1, False, True, nil, True); CheckListBox.AddRadioButtonEx('Версия 1.1.0.7', '', 1, False, True, nil, True); CheckListBox.AddRadioButtonEx('Версия 1.1.0.8', '', 1, False, True, nil, True); CheckListBox.AddCheckBoxEx('Haali Matroska Muxer 2013.04.14', '', 0, True, True, True, True, nil,True); CheckListBox.AddCheckBoxEx('Surcode DTS Encoder 1.0.29.0', '', 0,True, True, True, True, nil,True); CheckListBox.AddCheckBoxEx('Nero AAC Encoder 1.5.4.0', '', 0, True, True, True, True, nil,True); CheckListBox.AddCheckBoxEx('Nero Audio Decoder 7', '', 0,True, True, True, True, nil,True); CheckListBox.AddCheckBoxEx('Sonic Audio Decoder 4.3.0.169', '', 0, True, True, True, True, nil,True); end; |
vint56, Спасибо :up У меня есть этот код, только вот почему то "[Index]" потерялось :lol:
|
Доброго времени суток =) Такой вопрос люди добрые,Inno Setup Ultra ещё есть?Или проект уже закрылся?
|
Как сделать при запуске установщика всплывчатое лого
|
Вложений: 1
dimantv_wot@vk
Цитата:
|
Как можно в установщике прописать отдельный путь к распаковки удаления инсталлятора
|
ZVSRus, А на Юникоде как сделать что бы работало ?
|
Цитата:
PS. Если у вас InnoSetup Ultra Unicode, тогда попробуй так: В папке куда установлена InnoSetup Ultra есть папка Dll Examples в ней папка Isgsg [0.6.0.69] данный пример работает и на Unicode |
dimantv_wot@vk,
procedure ShowSplashScreen(p1:HWND;p2:Ansistring;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload'; |
vint56, спс большое работает
Парни помогите! давно хотел сделать как после установке модификации, сделать в папке этой папку отдельную где можно удалить модификации. |
Здравствуйте!
Наверное уже не раз спрашивали, потому простите если глупый вопрос. Как реализовать проверку наличия логического диска D с последующей установкой программы в D:\someprogram, если же диск разбит только на один раздел C - тогда установка в C:\Program Files\someprogram? |
имеется скрипт в нём сначала устанавливается программа
затем я хочу сделать что бы в папку с установленной программой установились отдельные файлы на замену оригинальным может кто посоветует как сделать Скрипт
Код:
#define MyAppName "My Program" |
Парни помогите! давно хотел сделать как после установке модификации, сделать в папке этой папку отдельную где можно удалить модификации.
|
Здравствуйте, подскажите пожалуйста, как сделать прозрачность при переносе инсталлятора по рабочему столу ?
это не реклама - сегодня скачал игру Sniper Blacklist - очень понравилось как он затухает и становится прозрачным, когда перетаскиваешь по экрану.. (меняешь позицию расположения окна на рабочем столе..) |
Вложений: 1
Как отобразить кастомный курсор без выгрузки файла на диск?
Благодарю за помощь автора скрипта El Sanchez. |
АП, как сделать прозрачность инсталлятора, когда перетаскиваешь окно по рабочему столу..
|
Ребят, у меня ещё такой вопрос:
В общем мне нужен код, который спрашивал имя компа, и относительно имени "Вася" или "Маша" (условно), "Васе"- ставил одни файлы, "Маше" другие. Имя компа узнавать из реестра. Я в общем не понимаю что и как. Спасибо. |
Цитата:
Скрытый текст
Код:
[Files] |
Хрень,надо так
Скрытый текст
[Files] Source: {#MyAppSource}\*.*; DestDir: {#OutputDir}\Vasya Source: {#MyAppSource}\*.*; DestDir: {#OutputDir}\Masha [Run] Filename: "{cmd}"; Parameters: "/c if /i ""%computername%"" == ""123"" (xcopy /e /y ""{#OutputDir}\Vasya\*.txt"" ""{#MyAppName}\Vasya\"" )"; Filename: "{cmd}"; Parameters: "/c if /i ""%computername%"" == ""123"" (xcopy /e /y ""{#OutputDir}\Masha\*.txt"" ""{#MyAppName}\Masha\"" )"; |
Всем Доброго времени суток. У кого есть код для командных файлов (.cmd):
"Setup.exe" /VERYSILENT /I /RU "Setup.exe" /VERYSILENT /I /EN "Setup.exe" /VERYSILENT /P Решение найдено. Последняя загвоздка с прописыванием пути "setup.exe" /VERYSILENT /P /D="D:\MyPortable". |
Цитата:
|
парни помогите со скриптом распаковка FreeArc
если можно то наглядный скрипт что куда прописывать прочитал много но не догнал что и как заранее спасибо. |
El Sanchez, да, и Check - это уже не модно :jester:
vadjliss, ссылка на пример скрипта дана в шапке темы, что конкретно непонятно в примере? |
Вложений: 1
я не понял как прописать архив что бы после распаковки установилось программа
ярлыки прописать программы |
Господа
насколько я понимаю для определения windows10 нужен инно 5,5,6 или выше Но беда - у меня скрипт на расширенной версии инно от restools еще от инноультра 5,5,1(а) Сайт restools http://restools.hanzify.org/ лежит, инноультра сдох Вопрос: где теперь все это брать? и если с новыми версиями все так плохо то как можно выкрутиться для корректного опознавания вин10 в инно версии 5,5,1ее(а) через Version: TWindowsVersion? |
Цитата:
Код:
; Скрипт создан через Мастер Inno Setup Script. 655360 это 000А 0000, 0000А = 10 причем обратите внимание что сам инно 5,5,1 опознает систему как вин 8,0, даже не вин 8,1 из-за старого манифеста (OS = ), но через версию файла ntoskrnl.exe опознает ОС как десятку в hex, т.е. как надо В общем даже на старом инно если применять этот метод будет опознавать еще долго, если МС опять что-нибудь не начудит нужно было поменять if на case но вломм Мысль ясна |
Добрый день!
Возник вопрос. В окне SelectDirPage при нажатии кнопки "Далее>" выходит сообщение о том что "Папка не существует" и предложение создать её. Как сделать так, что бы папка создавалась автоматически и сообщение не выводилось? |
doctor_allcome, DirExistsWarning и EnableDirDoesntExistWarning в секции Setup
|
R.i.m.s.k.y., Спасибо!
|
Цитата:
В теме Inno Setup. Прочие вопросы - из первого сообщения ещё доступны к скачиванию по прямым ссылкам файлы Inno Setup Compiler build 121216 и Inno ISCmplr Setup build 121002. Версии ispack доступны к скачиванию отсюда (Например: ispack-5.5.1.exe и ispack-5.5.1-unicode.exe) Версии isetup доступны к скачиванию отсюда (Например: isetup-5.5.1.exe и isetup-5.5.1-unicode.exe). |
Nordek, это все 5.5.1
а нужно 5.5.6 минимум |
|
Цитата:
но таки мой способ будет работать и дальше, а манифест этот опять придется просить поправить |
Помогите! Мне нужно разрешение экрана в секции [registry]
Вот тут какой-то код, но мне MsgBox не нужен, а нужна строка, например 1440x900, чтобы в реестре записать. Скрытый текст
[code] Код:
function GetSystemMetrics (nIndex: Integer): Integer; |
semiono,
пример для обычного инно
Код:
[Setup] пример для инно от китайцев (проще)
Код:
#ifndef IS_ENHANCED |
Цитата:
|
Нужно установить "дата и время создания папки" = 2001-01-01 00:00:00
SetFileTime function :o |
мне нужно прописать в ярлык в параметры совместимости "runasadmin"
Насколько я помню за это отвечает ключ HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers пишется строковое имя параметра в виде пути и параметр C:\Program Files\7-Zip\7zFM.exe=RUNASADMIN Скажите, пожалуйста, это правильно и работает ли оно в 8/10? |
Привет можыте памагати
как правилина писати код в секции Exec Код:
Скрытый текст
[code] [Setup] AppName=My Program AppVersion=1.5 DefaultDirName={pf}\My Program DisableProgramGroupPage=yes UninstallDisplayIcon={app}\MyProg.exe OutputDir=Output Код:
{ RedesignWizardFormBegin } // Don't remove this line! |
парни как сделать чтобы при выборе портабле не устанавливалась папка в пуск меню
и соответственно она устанавливалась при установке |
vadjliss, сделайте так чтобы при портабле не создавались ярлыки.
|
vadjliss, есть такой вариант
Код:
[Setup] |
Вложений: 1
Может кому пригодится. Плагин для поддержки регулярных выражений в инно. Во вложении либа + скрипт с несколькими примерами.
|
Цитата:
|
Цитата:
|
Всем привет. У меня в инсталляторе содержатся файлы "*.msi" и пока они копируются (не устанавливаются) в папку "Temp" мне нужно удалить папку именно на этапе копирования а не установки. Как сделать?
|
Всем доброго времени суток. Очень нужна помощь специалистов. По наследству от админа досталась прога на inno setup которая копирует архив с ПК пользователя на сервер. Теперь грядет модернизация серверов и нужно в срочном порядке настроить копирование не на расшаренную папку сервера, а на ftp ресурс. Опыта написания в inno setup нет, так что взываю к помощи
Исходный код копирования: FileCopy(ExpandConstant('{tmp}\{computername}.zip'), '\\ipсервера\расшаренная папка\' + GetIPAddress() + '.zip', false) Пробовала сделать вот так, но не копирует: FileCopy(ExpandConstant('{tmp}\{computername}.zip'), 'ftp://логин:пароль@IPадрес' +\папка'+ GetCommandLineParam('/REG') + '\' + GetIPAddress() + '.zip', false) |
На счёт отправки файла на FTP почитай, что пишут - можно с помощью штатной виндовской программы ftp.exe.
|
AlekseyPopovv,
Код:
[Code] |
habib2302,
справка
[Setup]: AlwaysRestart
Возможные значения: yes или no Значение по умолчанию: no Описание: При значении yes инсталлятор будет всегда предлагать перезагрузить компьютер после успешной установки, даже если этого не нужно (в секции [Files] могут быть параметры с флагом restartreplace). |
nik1967, у меня последняя страница отключена
|
habib2302, вот так пробуй
Скрытый текст
Код:
[Setup] |
Помогите решить еще одну проблему. не запускается екзешник, который посредством команды /(un)install /silent должен запустить или удалять службу
https://yadi.sk/d/IpYZ28CBx6ozB Код:
[Run] |
habib2302,
Код:
Exec(ExpandConstant('{app}\USBSRService.exe'), ' /uninstall /silent', '', SW_HIDE, ewWaitUntilTerminated, RC); |
Dodakaedr, а с секций run?
|
habib2302, там все правильно
|
Нужно добваить пару строк в {sys}\drivers\etc\hosts
Код:
127.0.0.1 www.addr1.com Во-вторых, хотелось бы учесть случай отсутствия \n в конце последней записи существующего файла. Однако, добавлять NEWLINE в пустой файл вначале, тоже не хотелось бы, для этого я думаю можно использовать проверку размера файла == 0 и тогда делать записи с первой строки. Желательно не выводить окна, если Non Admin mode, чтобы всё тихо было. Лучше бы установить права доступа на файл в любом режиме, но я думаю это лишнее, возможно даже совсем не нужно. |
Цитата:
Скрытый текст
Код:
////////////////////////////////////////////////// Цитата:
|
Код:
// {sd}\hosts.txt - для теста |
Уважаемые знатоки инно, подскажите, пожалуйста, как вызвать процедуру до запуска инсталлятора? (требуется запустить проверку хэш-суммы до запуска инсталлятора)
|
скажите, пожалуйста, можно ли распаковать запароленный установщик сделанный в инно "Inno Setup Compiler version 5.5.1.ee2 (a)" при известном пароле, но забубенном типа !@#$%^&*()}{POIUYTREWQasdfghjkl;'\
даю команду innounp.exe -x -d1 -fpass setup.bin и прилетает птица обломинго The setup files are corrupted or made by incompatible version. Maybe it's not an Inno Setup installation at all. (0048C402) innounp.exe версии 046 лежит в папке с установщиком, в текстовом файле pass с кодировкой ср-1251 записан пароль, комстрока запускается в папке со всем этим барахлом innoextractor опознал запароленные блоки но не имеет параметра для ввода пароля архива F1!!! |
Всем привет.
Почему при выборе директории добавляется директори "Новая папка" ??? Как сделать, что-бы ничего не было, что-бы я мог указать путь к корню?? Что писать суда или куда? DefaultDirName Заранее благодарен!!! |
Dark_Delphin, DefaultDirName в секции setup, не?
скрипт бы показал лучше |
R.i.m.s.k.y., вот
Код:
... |
Цитата:
попробуй поставить DefaultDirName=www или тебе в корень надо ставить? зачем в корень? |
R.i.m.s.k.y., нужен корень, я делаю установку мода в папку с игрой...
|
Я уже всё перепробовал... хз че делать
|
Цитата:
как я вижу нужно узнать в какой папке установлена игра (через реестр или конф файлы или еще как) и это присваивать DefaultDirName вот нопремер код от моего установщика мегаведьмака Код:
[Setup] |
R.i.m.s.k.y., а попроще ничего нету?
И оно ругается на noskin |
Цитата:
Установщик мегаведьмака с накрученной музыкой, оформлениями и прочими свистелками Если что-то не сработает то выскочит ошибка и поставить будет нельзя, и я реализовал ключ /noskin, при таком запуске весь оформительский триппер отключается и установщик становится совершенно стандартным Условие if (not noskin) ... end;//if (not noskin) как раз за это и отвечает, при запуске с /noskin всё что в этом if будет пропущено |
R.i.m.s.k.y., без реестра можно как то сделать?
Мне нужно вручную указать директорию без всяких папок лишних. |
Цитата:
DefaultDirName={pf}\megagame} |
R.i.m.s.k.y., оно добавляет папку megagame в конец строки.
Мне не нужно что-бы добавляло, чтото? Или мы не можем понять друг-друга? |
нашел наконец
AppendDefaultDirName=False http://forum.oszone.net/post-1800267-212.html Вы рядом с теми сообщениями были, истину рядом видели и опять забыли)) |
Цитата:
Цитата:
и поправь инвективщину пока не забанили Цитата:
Цитата:
|
Приветствую форумчане подскажите пожалуйста в вопросе,
как сменить иконку ярлыка на рабочем столе по умолчанию выводится иконка exe файла, а нужна своя (другая) В папке есть иконка вот ее надо отобразить,а у exeшника своя иконка эту не надо показывать. |
Цитата:
Код:
[Icons] IconFilename
Имя файла иконки (расположенной в системе пользователя). Это может быть файл с расширением .exe или .dll, содержащий иконки, или файл .ico. Если этот параметр не указан или пустой, Windows будет использовать иконку, выбранную по умолчанию. Параметр может содержать константы.
IconIndex
Нулевой индекс иконки, используемый в файле IconFilename. Значение по умолчанию - 0.
Если значение IconIndex ненулевой и IconFilename не указан или пустой, IconFilename присвоится то же значение, что и Filename. |
Здравствуйте. Подскажите пожалуйста, как сделать так, чтобы при деинсталляции можно было выбрать, удалить ли настройки программы (допустим они находятся в папке "Мои Документы").
|
Optitron, через библиотеки опшин конекшен
|
ребята может кто подсказать запуск url сайта через батник
|
Цитата:
Код:
start http://google.com Код:
[Run] |
Кто знает из-за чего может перестать реагировать на кнопку закрытия и alt+f4 инсталлятор?
WizardForm.CancelButton.Hide - не дает закрыть форму |
Вложений: 1
|
john458
Скрытый текст
Цитата:
|
Можно как-то изменить расстояние между элементами в "TasksList", чтобы их выровнять?
|
Цитата:
Вот мой скрипт: Скрытый текст
#define MyAppName "Azur & Asmar"
#define MyAppVersion "1.0" #define MyAppExeName "Azur & Asmar.exe" [Setup] AppId={{C063DBD3-E8FB-43EA-A5D2-FD093A33FCFC} AppName=My Application AppVersion=1.0 AppVerName={#MyAppName} {#MyAppVersion} DefaultDirName=C:\Games\My Application DefaultGroupName=My Application AllowNoIcons=yes OutputDir=C:\Users\john458\Desktop\Azur & Asmar OutputBaseFilename=Azur & Asmar SetupIconFile=C:\Users\john458\Desktop\Azur & Asmar\icon.ico Compression=lzma SolidCompression=yes [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; [Files] Source: "C:\Program Files (x86)\Azur & Asmar\Azur & Asmar.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "C:\Program Files (x86)\Azur & Asmar\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs [Icons] Name: "{group}\My Application"; Filename: "{app}\My Application.exe" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent [UninstallDelete] Name: "{app}\*.*"; Type: filesandordirs Name: (app); Type: dirifempty; Я порылся в сети и нашёл кое что с этим связанное, только я не знаю как это должно всё правильно прописываться и выглядеть в скрипте. /NOICONS Instructs Setup to initially check the Don't create a Start Menu folder check box on the Select Start Menu Folder wizard page. Pascal Scripting: WizardNoIcons Prototype: function WizardNoIcons: Boolean; Description: Returns the current setting of the Don't create a Start Menu folder check box on the Select Start Menu Folder page of the wizard. Query NoIconsCheck checkbox directly: if not WizardForm.NoIconsCheck.Checked then |
john458, Вот, держи
Код:
procedure CurPageChanged(CurPageID: Integer); |
slonick2011
А где его именно нужно прописать? В какой секции? Можно полностью показать на примере моего скрипта? - буду очень благодарен. |
john458, В секцию [code], просто скопируй и вставь
|
Всё получилось, огромнейшее спасибо, уже дней 5 ищу как это сделать
Прописывать нужно в секции [code] Скрытый текст
[code]
procedure CurPageChanged(CurPageID: Integer); begin if CurPageID = wpSelectProgramGroup then WizardForm.NoIconsCheck.Checked := True; end; |
john458
Пример от slonick2011 решение правильное. Но есть один вопрос, если это вам нужно лично для себя то это одно, если вы хотите это выкладывать в интернет тогда возникает вопрос надо ли это конечному пользователю?. Стандартный чекбокс должен выглядеть стандартно (то-есть чекбокс должен быть не отмечен, поставить галочку, это выбор конечного пользователя) P.S. Если не хотите создавать папку в меню пуск, удалите из секции [Setup], [Icons] все что связано с программной группой. В расширенной версии Inno делается на раз, два
Цитата:
|
Доброе время суток. Помогите с параметрами запуска.
Код:
[Run] |
ребята что надо прописать в батнике что бы он при запуске удалил ключи установленной программы
|
habib2302, так пробуйте
Код:
[Run] Цитата:
|
Dodakaedr, так не работает. через код работает, но не определяет путь к программе. хоть с кавычками хоть без них
Код:
[code] |
habib2302, а так работает :)
Скрытый текст
Код:
#define Exe "ashsnap.exe" |
Подскажите пожалуйста, что нужно прописать в скрипт, чтобы перед установкой инсталлятор убивал процесс (в моем случае steam.exe).
|
Optitron, в шапке темы "Ссылки на примеры скриптов: => Закрытие процесса - пример скрипта для закрытия запущенного процесса, (ссылка на сообщение);"
|
nik1967, Спасибо!
Еще такой вопрос, можно ли создавать собственные ключи командной строки, пр.: чтобы не писать "/Components=Directx", а просто "/Directx". |
Подскажите, можно ли как-то в секции Setup для параметра UninstallLogMode задать определенное условие? Что-то типа такого:
Код:
[Setup] |
Всем привет.
есть кто в этой проге силен ? Мне надо сделать просто Setup что бы файлы распаковывались в свои папки и всё, кто может помочь? С меня 100р за простую работу, напишите в лс кто согласен :) |
Цитата:
|
Здравствуйте. Не подскажите, как сделать так, чтобы при выборе компонента "1" его дефолтный путь установки был выбран как обычно (в Program Files), а при выборе компонента "2" дефолтный путь был бы установлен на рабочий стол (при этом путь установки можно поменять).
|
Optitron, Например так (В данном примере рассматривается включённый в инсталлятор отдельный файл):
Код:
[Components] Или например так (В данном примере рассматривается включённый в инсталлятор каталог с файлами и подкаталогами): Код:
[Components] Учтите, что для "Компонент 2" путь жёстко привязан. |
Nordek, Спасибо, но мне как раз таки нужно, чтобы для компонента "2" путь был привязан не жестко, например изначально он задавался бы на рабочий стол, но его можно было бы поменять.
|
Подскажите, пожалуйста, как можно в секции реестра подставлять в путь выхлоп функции из секции code
Прокатит так? Код:
[Registry] ап: да, прокатило |
Добрый вечер! Подскажите пожалуйста, что такое модуль IDP в Inno Setup и как его убрать? Дело в том, что при компиляции у меня практически всегда файл setup с вирусом HEUR/QVM06.1.0000.Malware.Gen (при проверке через virustotal.com). Нашла такую фразу
Цитата:
|
Только начал освоение InnoSetup, чую что вопрос пустяковый, но сам дойти пока не могу...
Нужно сделать чтобы во время установки выводился запрос на указание пути к файлу, а после его указания путь к этому файлу использовался бы в создании ярлыка для другого файла как параметр. Притом оба этих файла распаковываются только во время установки, то есть окно выбора должно появляться после распаковки файлов, но перед окончанием установки ... то есть: Например нужно создать ярлык для приложения №1 с параметрами [Путь к файлу №2 -l -c] , где "-l -c" тоже параметры, само приложение №1 лежит в установленном каталоге {app}, а вот путь к файлу №2 который мы выбираем, как и название этого файла после установки могут быть в разных местах (единственное что всегда верно, это его расширение) и выбираются во время загрузки... Использовал Afterinstall чтобы войти в установку перед ее окончанием, но после распаковки файлов: #define XXXName - объявленная переменная, где XXXName - файл №1 ProjectName - переменная содержащая в себе путь к файлу №2 procedure AfterInstall1 ; var ProjectName: String; begin ProjectName := ''; if GetOpenFileName('', ProjectName,'', 'Text Documents (*.txt)|*.txt|All Files|*.*', 'txt') then begin CreateShellLink(ExpandConstant('{userdesktop}\XXX.lnk') , '' , ExpandConstant('{app}\Просто_путь\{#XXXName}') , ExpandConstant('ProjectName') , ExpandConstant('') , ExpandConstant('D:\IS FILES\eye.ico') , 0 , SW_SHOWNORMAL); end; end; Выделенное жирным и есть блок ответственный за установку параметров, но он воспринимает функцию ProjectName как текст, а нужно чтобы он считывал путь из нее...ну и чтобы там же еще прописывались -l -c , но это вторично.... Буду признателен и за менее топорное решение... да я знаю что я краб :) Спасибо... |
Цитата:
Цитата:
|
El Sanchez, Вот я краб, все так просто путь сработал, сейчас остальные параметры прикрутить попробую...выбор второго файла обусловлен тем что программа инсталлятора задумывается как шаблон, в котором потом будут менять отдельные файлы копируемого содержимого внутри папок и компилировать заново , и будут меняться названия файлов... человек который будет это делать - не я... требовать от него называть файл одним и тем же именем каждый раз так себе решение..., подумывал сделать тупо поиск по маске расширения, и автоматический выбор, но есть вероятность что там единовременно окажутся несколько файлов с одинаковым расширением, поэтому остановился на ручном вводе...если есть другие идеи было бы интересно услышать
|
Цитата:
Скрытый текст
Код:
if GetOpenFileName('', ProjectName, '', 'Text Documents (*.txt)|*.txt|All Files|*.*', 'txt') then |
El Sanchez, Буду иметь ввиду, но я использовал уже такой вариант (ExpandConstant(ProjectName) + ' -l -c'), вроде работает, вопрос другой появился, при создании ярлыков через секцию кода, как прикрутить на их создание условие от галочек
"Не устанавливать ярлыки на рабочий стол..." [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; И "Не создавать папку в меню пуск?" AllowNoIcons=yes Этот скрипт создает ярлыки в любом случае ( даже при выключенной галочке рабочий стол), и выдает ошибку если папки {group} не существует ( в случае если отказаться от установки в меню пуск)...может можно проверку как-нибудь на состояние переменной прикрутить? |
Цитата:
Цитата:
|
El Sanchez, Первое проверил, и правда ругается, хотя шанс что такая папка попала бы в рамках этого инсталлятора стремиться к нулю, но на всякий случай переписал, спасибо...
Второе попробую завтра :) |
Доброе время суток. Возможно ли выгрузить dll-файл без завершения процесса Explorer?
|
Здравствуйте. Простите за наглость, хотел попросить помощи сделать ингалятор программы с выбором компонентов, режимом установки/распаковки и созданием ярлыков. Если можно, поделитесь скриптом, дальше попробую со всем разобраться. Интерфейс инсталлятора самый простой. Заранее благодарю.
|
Bio_Hazard, для примера https://yadi.sk/d/lpuo1KLi34kri3
|
habib2302, кроме inno setup еще что-то нужно? При компиляции вылетает ошибка.
|
Bio_Hazard, нужна inno setup ultra т.к. на стандартной версии не работает
|
habib2302, поставил inno setup ultra 5.5.1, дает такую ошибку при компиляции.
|
Bio_Hazard, предыдущую строку закончи символом ";"
Потому, что UNICODE версия менее терпима к огрехам, чем ANSI. |
Цитата:
Bio_Hazard, Поэтому ставьте ANSI версию |
Блин тупой вопрос вроде, а не дойду никак...
[RUN] Filename: "{cmd}"; Parameters: "/c" "REG DELETE HKCU\Software\ПУТЬ С ПРОБЕЛАМИ" Не работает, естественно первое решение взять путь в кавычки... Filename: "{cmd}"; Parameters: "/c" "REG DELETE "HKCU\Software\ПУТЬ С ПРОБЕЛАМИ"" Но так тоже не работает он путается в параметрах...как реализовать попроще задумку но без использования сторонних файлов типа .bat .cmd хочу прямо в коде ISS обрабатывать, желательно без использования секции [code] |
RADEON73,
Код:
Filename: "{cmd}"; Parameters: "/c REG DELETE ""HKCU\Software\ПУТЬ С ПРОБЕЛАМИ""" |
Dodakaedr, Блин, тупо!!! Я его первым делом пробовал, не получилось, видимо где-то не уследил за знаками...
|
Цитата:
Код:
[Registry] |
boss911, да уже сообразил что RUN выполняется после Registry, так пробовал сразу но почему то не удаляет, хотя должен...не пойму почему...когда на значение указываешь работает, а вот когда на каталог нет...
Использовал пока вот такой BEFOREINSTALL костыль, по условию установки чекбокса, но все равно хочу разобраться нет ли способа проще... procedure DELETEREGKEY ; begin RegDeleteKeyIncludingSubkeys(HKEY_CURRENT_USER, 'Software\Bla Bla Bla') end; |
С Новым Годом! Ура! Счастья всем!
|
подскажите, пожалуйста, как в винде х64 внести параметр в в реестр HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
по-умолчанию установщик фунциклирует в х86 режиме и ключи записываются в HKLM\Software\wow6432node\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers и естественно не работает как надо Узнал чтоименно надо без \wow6432node\ по регшоту и проверке руками этого ключа реестра ставить в setup ArchitecturesAllowed=x64, x86 ArchitecturesInstallIn64BitMode=x64 не очень хочется тк установщик ставит запускает на установку дирекс9, вкредист 2013 х86 и немножко кодеков х86, есть сомнения что в винде х64 все полетит не в ту секцию тк в справке написано If your application's binaries are all 32-bit and run in user mode, you should not change this directive from its default value (specifically, don't set it to x86), because normally such binaries will run without issue on the x64 and Itanium editions of Windows via the WOW64 emulator. Прога в установщике х86, вот как записать в HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers, минуя WOW64emulator? |
Цитата:
Код:
[Registry] |
точно! забыл уже как делал это! склероз мне изменяет! :D
|
Всем Здрасте!!! Хочу спросить можно ли изменить цвет шрифта (не используя скина), что бы он был одного цвета во всех окошках и меседж боксах
|
подскажите, пожалуйста, как на FinishedPage делать неснимаемыми галочки на элементах, создаваемых стандартными строчками в секции Run
делаю так, ошибки при компиляции и при выполнении не возникает но галка снимается и ставится, элемент рабочий If CurPageID=wpFinished then begin RunSetup := WizardForm.RunList.Items.IndexOf(ExpandConstant('{cm:RunSetup}')); readme := WizardForm.RunList.Items.IndexOf(ExpandConstant('{cm:readme}')); if (readme + runsetup >= 0) then begin WizardForm.RunList.ItemEnabled[readme]:=False; WizardForm.RunList.Checked[readme]:=True; WizardForm.RunList.ItemEnabled[runsetup]:=False; WizardForm.RunList.Checked[runsetup]:=True; end; end; |
R.i.m.s.k.y.,
А чекбоксы RunSetup, readme как созданы можно посмотреть? Вам нужно чтобы чекбоксы, что прописаны стандартно в секции [Run] были отмечены, но не активны? |
R.i.m.s.k.y., так сойдет?
Код:
procedure CurPageChanged(CurPageID: Integer); |
Цитата:
|
При запуске инсталятора от имени админа, все файлы устанавливаются в папки админа, а не пользователя, вошедшего в систему.
Как сделать, чтобы установка производилась с правами админа, но в папки текущего (т.е. вошедшего в систему) юзера? |
Цитата:
уже сделал ошибка была в if (readme + runsetup >= 0), один элемент не создавался и имел индекс -1 (была проверка Check: (if fileexist...), второй создавался с индексом 0 и сумма была -1 Всем дзинкуе за внимание! Цитата:
Цитата:
потом сформулировать вопрос правильно, а я пока поищу у себя, когда-то давным давно я так делал :D |
Цитата:
Может у Вас есть ссылочки? |
Вложений: 1
Всем привет как убрать выбор компонентов, на картинке выделил !
|
Цитата:
я те прям работающий кусок кода дам Код:
[CODE] Valera90, Код:
procedure InitializeWizard(); |
Цитата:
|
jdcorg, спасибо надо не говорить а нажимать :)
вкрации original user входит в ОС, current user запускает прогу runas |
Привет всем еще раз, помню тут был простой скрипт у кого то пример на добавление картинок при наведение мышкой на компонент, скиньте пожалуйста
|
|
Цитата:
Я вижу, что этого не происходит ни у текущего юзера, ни у админа. Тогда простая замена имени юзера в пути к каталогам не имеет смысла. |
jdcorg, УМВР
добавь MSGBOX (имя пользователя, куст реестра, путь до папки) и посмотри верно ли определяется все пути |
Цитата:
Запускал от имени админа на учётке простого юзера: файлы устанавливаются в соответствующие каталоги простого юзера, но записей в HKCU нет. Я так понимаю, что шаманство с файловыми путями в установочном файле не меняет принципа операционной системы- запустил от имени админа значит ОС все действия выполняет именно для учётки админа. |
jdcorg, покажи запись в реестр в своем скрипте
|
Цитата:
|
Цитата:
ну и конЬцепцию original/current user не уяснил Цитата:
Цитата:
Цитата:
|
Цитата:
Это не возможно? |
jdcorg, таак
похоже мы еще не знаем значений ключей реестра https://support.microsoft.com/ru-ru/kb/243330 https://en.wikipedia.org/wiki/Window...stry#Root_keys Цитата:
домашнее задание: поменять ключ в HKU\Original_SID\ и посмотреть что с ним будет в HKCU задача со звездочкой: найти в перечисленном значения в реестре для всех. |
Цитата:
|
Цитата:
- 87! :) покажи код, скрин и как воспроизводится ошибка, в деталях |
|
Цитата:
Тебе он не нужен, тебе главное понять принцип и выдрать из моего примера нужное Цитата:
покажи скрипт в части касающейся |
Цитата:
В сэтапе есть файлы, которые устанавливаются при выборе галки (Components). Я хочу оставить возможность выбора установки компонента, но не таскать его в установочном файле, а подгрузить из сети. Есть примеры на этот счёт? |
Цитата:
Всё свое нужно носить с собой Цитата:
Цитата:
поясняю на примере: куст HKCU\Software original user можно получить доступ как HKU\{code:GetOriginalSid}\Software загляни глазами в HKU и сам всё поймешь |
Цитата:
Цитата:
Делал по материалу, идеальному для тех у кого первый раз
https://forum.kaztorka.org/index.php?showtopic=19878
На этом сайте, по inno, много толкового материала, но в виде винегрета. Цитата:
|
скажите, пожалуйста, можно ли в инно отслеживать нажатие клавиш? хочу сделать режим при запуске с нажатой клавишей Shift
и можно ли как-то задержать на 20 секунд кнопку next на странице InfoAfterPage? |
Цитата:
Код:
sleep(20000) Цитата:
Example
Код:
[Setup] |
Цитата:
ALT = $12, CTRL=$11? GetKeyState какие значения может принимать? |
Цитата:
if (CurPageID = wpInfoAfter) then begin Result:= False; sleep (20000); Result:= True; end; как сделать установщик в этот момент отзывчивым? |
Цитата:
Как-то так. Адаптируйте под себя
Код:
[Setup] |
Dodakaedr, что-то я не понял а где кнопка Далее разблокируется?
|
R.i.m.s.k.y., на странице выбора папки установки через 5 сек.
|
Dodakaedr, это я понял, я вижу что через 5*1000 вызовется @wait, оно не застынет между Interval:= 5*1000 и OnTimer:= @wait?
|
Цитата:
|
Привет ребят!
Понадобилось написать dll библиотеку на Delphi, что бы прикрутить ее к Inno Setup. Делаю это в первый раз, опыта раньше не было. Столкнулся с проблемой. Как правильно передать строку из функции в приложение Inno Setup? В Delphi я пишу так: Код:
function GetLastVersion(Link: String) : String; stdcall; Код:
function GetLastVersion(const Link: String) : String; external 'GetLastVersion@files:MMProtect.dll stdcall'; |
Код:
function x(): Boolean; То-есть инсталятор должен работать по-кругу, каждый раз выбирая противоположное действие. Как бы так. |
semiono
Цитата:
Код:
function x(): Boolean; |
R.i.m.s.k.y., не совсем корректно работает. Попробовал убрать Check: not, но не помогло. Вторая строка всегда пишется в реестр.
Если нужно, реестр можно было бы в секции код править, (но мне функция чек так же нужна в секции Files, надеюсь потом это возможно добавить?) |
|
Цитата:
[x] Root: HKCU; Subkey: "Software\aaaa"; ValueType: none; ValueName: "bbbb"; Flags: deletevalue noerror; Permissions: everyone-full; Check: x [x] Root: HKCU; Subkey: "Software\aaaa"; ValueType: string; ValueName: "bbbb"; ValueData: "0"; Flags: noerror; Permissions: everyone-full; Check: not x Цитата:
|
semiono, всё должно быть нормально
или в скрипте еще где-то это дело делается |
Код:
function x(): Boolean; |
Цитата:
я ж привел тебе код функции |
:D
секция files вроде бы работает на чек корректно, но секция registry работает на один раз, либо запишет и потом не удаляет либо наоборот я пытался сам найти решение, даже написал две функции для Check для разных слкчаев)) что-то тут с логикой... Может я непонятно задачу объяснил, мне надо чтобы инсталятор то записыва строку, то удалял при каждой новой установке. Смысл в том чтобы ставить два разных обновленич, то новое, то старое |
semiono, покажи уже скрипт
|
Код:
[Setup] Не получается, чтобы инстал изменял будущее условие в СИСТЕМЕ |
Код:
function x(): Boolean; |
semiono, УМВР все работает в первом варианте
|
Там, кстати, ошибка Software\aaaa и в коде Software\a
|
semiono, я поправил конечно, еще MSGBox понатыкал для дебага - работает
|
Скрытый текст
1. В реестре ничего нет. Каждый инстал один и тот же результат. Скрытый текст
2. В реестре b REG_SZ записанный вручную Но! При повторном инстале будет возврат к первому скриншёту и далее постоянно один результат. Кстати, было бы хорошо перед else выполнить EXIT или GO TO, но как это сделать в паскале непонятно. |
Цитата:
Скрытый текст
Код:
[Registry] Цитата:
|
ребята как убрать вот это
|
vadjliss,
[Setup] VersionInfoDescription=Tor Browser Bundle |
Скажите пожалуйста, здесь код оптимальный или я чего-то лишнего нагородил? Работает правильно!
Код:
[Setup] |
semiono, ну тебе же камрад El Sanchez выше дал изящный работающий пример
|
R.i.m.s.k.y., так я этот пример и допиливаю, реальный же инсталл сложнее, но вприципе всё готово, просто думаю может оптимизировать возможно.
Меня, кстати, смущает пустой ввод Check: x(''), хотя там можно что угодно написать, но работает правильно :) Просто по поводу кода если я лишнего наворотил, поэтому спрашиваю |
Люди, такой вопрос. Создал инсталлятор, всё скомпилировалось без перебоев, затем попробовал поставить прогу, всё отлично встало, НО при повторном запуске инсталлятора, пункт выбора пути установки просто пропускается и он по дефолту ставит в ту папку, куда была установлена прога в первый раз. Помогите, пожалуйста.
|
Цитата:
Для страницы SelectDirPage (Указание каталога для установки):
Если в секции [Setup] присутствует параметр DisableDirPage, то удалите его вместе со значением.
Если не желаете использовать каталог предыдущей установки, то в секцию [Setup] добавьте следующий параметр со значением: Код:
UsePreviousAppDir=False Для страницы SelectProgramGroupPage (Указание каталога группы в меню пуск)
Если в секции [Setup] присутствует параметр DisableProgramGroupPage, то удалите его вместе со значением.
Если не желаете использовать каталог в меню Пуск предыдущей установки, то в секцию [Setup] добавьте следующий параметр со значением: Код:
UsePreviousGroup=False P.S По вопросам связанные со скриптами, обращайтесь в тему: Скрипты Inno Setup. Помощь и советы |
Всем привет! С inno setup познакомился недавно, поэтому ответ на мой вопрос может быть очевидным. Так что заранее извиняюсь за вероятно нубский вопрос. Нужно сделать инсталлятор, который устанавливает скрипт в определенные папки в зависимости от версии программы, для которой сделан скрипт, т.е. в моем случе есть несколько ключей реестра с путями установки. Нужно вывести для каждого чекбокс и возможность указать путь вручную и произвести в каждый отмеченный путь установку. Ключи из реестра у меня получилось собрать, а вот вывести чекбоксы и обработать их не получается. Кто-нибудь сталкивался с такой задачей?
|
Спасибо большое
|
Просьба помочь советом - что нужно добавить в скрипт установки, что бы программа в зависимости от версии Windows - XP или 2000 копировала в апку xxl файл x1 или x2 соответственно?
|
Цитата:
Код:
[Files] |
Как найти папки по части их имени? Известно только в какой папке искать и начало имени папок, все папки начинаются с нумерации от 001.
Не получается применить FindFirst. |
Подскажите, собственно во время установки требуется что бы инсталятор вывел окно для ввода данных, конкретно цифр, пользователь вводит эти цифры и далее эти цифры используются в качестве параметра для приложений в секции [run], такое возможно?
|
Всё нашел сам. Отбой.
|
Код:
[setup] |
PHP код:
|
Цитата:
Цитата:
|
NeoBlack1,
Как то так
#define MyAppName "Barnet POS" #define MyAppVersion "1.6" #define MyAppPublisher "Barnet POS, inc" #define MyAppURL "http://barnetbc.ru" #define MyAppExeName "BarnetManager.exe" #define SQLSERVERNAME "localhost\SQLEXPRESS" #define SQLDATABASENAME "barnet" [Setup] AppId={{84A2C789-E6B0-4F26-832A-07D3A8AD0316} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DisableProgramGroupPage=yes OutputBaseFilename=setup Compression=lzma SolidCompression=yes [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 [Files] // Source: "C:\BarnetPOSScript\SourceProgram\BarnetManager.exe"; DestDir: "{app}"; Flags: ignoreversion; // Source: "C:\BarnetPOSScript\SourceProgram\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; [Icons] Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent [code] var Page, Page1, Page2: TWizardPage; Button, Button2, FormButton: TNewButton; Edit2, strServerName, strDabaseName : TNewEdit; PasswordEdit: TPasswordEdit; StaticText, StaticText1, StaticText2, StaticText3, StaticText4: TNewStaticText; CheckListBox2: TNewCheckListBox; InputPage: TInputFileWizardPage; function IsChecked(const Index: Integer): Boolean; begin Result:= CheckListBox2.Checked[Index] end; function CheckAlias(): Boolean; var ADOConnection: Variant; begin Result := false; try ADOConnection := CreateOleObject('ADODB.Connection'); ADOConnection.ConnectionString := 'Provider=SQLOLEDB;Data Source={#SQLSERVERNAME};Initial Catalog={#SQLDATABASENAME};User Id=sa;Password=123456;' ADOConnection.Open; try Result := true; finally ADOConnection.Close; end; except Result := false; end; end; procedure ButtonOnClick(Sender: TObject); begin CheckAlias(); MsgBox('Соединение установлено', mbInformation, mb_Ok); end; procedure ButtonOnClick2(Sender: TObject); begin MsgBox('You clicked the button!!!!!', mbInformation, mb_Ok); end; procedure FormButtonOnClick(Sender: TObject); var OKButton: TNewButton; OKButton2: TNewButton; Form: TSetupForm; begin Form := CreateCustomForm(); try OKButton := TNewButton.Create(Form); OKButton.Parent := Form; OKButton.Width := ScaleX(75); OKButton.Height := ScaleY(23); OKButton.Left := Form.ClientWidth - ScaleX(75 + 6 + 75 + 10); OKButton.Top := Form.ClientHeight - ScaleY(23 + 10); OKButton.Caption := 'OK'; OKButton.ModalResult := mrOk; OKButton.Default := True; OKButton2 := TNewButton.Create(Form); OKButton2.Parent := Form; OKButton2.Width := ScaleX(75); OKButton2.Height := ScaleY(23); OKButton2.Left := Form.ClientWidth - ScaleX(75 + 6 + 75 + 10); OKButton2.Top := Form.ClientHeight - ScaleY(23 + 10); OKButton2.Caption := 'OK'; OKButton2.ModalResult := mrOk; OKButton2.Default := True; finally Form.Free(); end; end; // Страницы инсталлятора! procedure InitializeWizard(); begin // 1-я страница (Выбор Установки)! Page := CreateCustomPage(wpWelcome, 'Тип Установки', 'TNewCheckListBox'); CheckListBox2 := TNewCheckListBox.Create(Page); CheckListBox2.Top := ScaleY(8); CheckListBox2.Width := Page.SurfaceWidth; CheckListBox2.Height := ScaleY(97); CheckListBox2.BorderStyle := bsNone; CheckListBox2.ParentColor := True; CheckListBox2.MinItemHeight := WizardForm.TasksList.MinItemHeight; CheckListBox2.ShowLines := False; CheckListBox2.WantTabs := True; CheckListBox2.Parent := Page.Surface; CheckListBox2.AddGroup('Выберите тип установки', '', 0, nil); CheckListBox2.AddRadioButton('Установить файлы', '', 0, True, True, nil); CheckListBox2.AddRadioButton('Установить файлы + создать новую базу данных', '', 0, False, True, nil); // 2-я страница (Создание БАЗЫ ДАННЫХ)! Page1 := CreateCustomPage(Page.ID, 'Создание новой базы данных', 'Сервер и Наименование'); StaticText := TNewStaticText.Create(Page1); StaticText.Parent := Page1.Surface; StaticText.Caption := 'Наименование сервера'; StaticText.AutoSize := True; strServerName := TNewEdit.Create(Page1); strServerName.Top := StaticText.Top + StaticText.Height + ScaleY(2); strServerName.Width := Page1.SurfaceWidth div 2 - ScaleX(8); strServerName.Text := '{#SQLSERVERNAME}'; strServerName.Parent := Page1.Surface; StaticText1 := TNewStaticText.Create(Page1); StaticText1.Parent := Page1.Surface; StaticText1.Top := strServerName.Top + strServerName.Height + ScaleY(8); StaticText1.Caption := 'Укажите имя базы данных'; StaticText1.AutoSize := True; strDabaseName := TNewEdit.Create(Page1); strDabaseName.Top := StaticText1.Top + StaticText1.Height + ScaleY(8); strDabaseName.Width := Page1.SurfaceWidth div 2 - ScaleX(8); strDabaseName.Text := '{#SQLDATABASENAME}'; strDabaseName.Parent := Page1.Surface; Button := TNewButton.Create(Page1); Button.Width := ScaleX(150); Button.Height := ScaleY(23); Button.Top := strDabaseName.Top + strDabaseName.Height + ScaleY(8); Button.Caption := 'Проверить соединение'; Button.OnClick := @ButtonOnClick; Button.Parent := Page1.Surface; // 3-я страница (Загрузка бэкапа)! InputPage := CreateInputFilePage(Page1.ID, 'Создание новой базы данных', 'Загрузка шаблона базы данных', 'Выберите файл'); InputPage.Add('Расширение файла .bak', 'BAK files (*.bak)|*.bak', '.bak'); Button2 := TNewButton.Create(InputPage); Button2.Width := ScaleX(90); Button2.Height := ScaleY(23); Button2.Left := ScaleX(10); Button2.Top := ScaleY(80); Button2.Caption := 'Загрузить'; Button2.OnClick := @ButtonOnClick2; Button2.Parent := InputPage.Surface; //InputPage.Values[0] := GetPreviousData('Расширение файла .bak', ExpandConstant('{sysuserinfoname}')); end; function ShouldSkipPage(PageID: Integer): Boolean; begin if IsChecked(0) then if (PageID = Page1.id) or(PageID = InputPage.ID) then Result := False if IsChecked(1) then if (PageID = Page1.id) or(PageID = InputPage.ID) then Result := True; end; |
Из PM:
Цитата:
Скрытый текст
Код:
const |
ребята подскажите как сделать чтобы перед инсталляцией программы запускалась программа Microsoft Visual C++
|
vadjliss, с этого места поподробнее, пожалуйста. Что за программа, и почему ей не хватает установленных библиотек C++ неизвестно какой версии, что приходится запускать
Цитата:
|
Цитата:
Код:
[Files] |
привет подскажите - что нужно прописать, чтобы при выборе папки с названием игры, не было двойной папки - например с\игра\игра - короче как в русификаторах например или в ехе архиве при любом выборе не появляется в конце название игры
и ещё вопросик - как сделать чтобы не создавался деинсталятор и в удалении программ не появлялось - короче, чтобы не создавалось следов в системе |
pist0n,
из справки
[Setup]: Uninstallable
Возможные значения: yes или no, или логические выражения Значение по умолчанию: yes Описание: Inno Setup определяет, создавать ли автоматический деинсталлятор. При значении yes или логического выражения True он создается. Иначе автоматическое удаление будет невозможно, так что пользователь должен будет вручную удалять программу. Установка значения директивы в True может быть полезной, если Вы хотите установить 'переносимую' программу. Например: [Setup] Uninstallable=not IsTaskSelected('portablemode') [Tasks] Name: portablemode; Описание: "Portable Mode" [Setup]: CreateUninstallRegKey Возможные значения: yes или no, или логическое выражение Значение по умолчанию: yes Описание: При значении no или False (логические выражения) инсталлятор не будет создавать пункта программы в диалоге Установка и удаление программ. Это может быть полезно, если программа является обновлением для уже установленного приложения и запись в этом диалоге не нужна, но надо сохранить возможность удаления обновления (Uninstallable=no). В этом случае, UpdateUninstallLogAppName обычно устанавливается в no. По первому вопросу: по умолчанию дублирующая папка не создаётся. Что-то видимо в коде "накодил". |
Цитата:
скриншот
.
как сделать, чтобы вторая папка не появлялась? вот так у меня Код:
[Setup] |
pist0n,
А как выглядит секция [Files] с файлами? |
Цитата:
Files
Код:
[Files] |
pist0n,
как вариант, попробуй так
[Setup]: AppendDefaultDirName
Возможные значения: yes или no Значение по умолчанию: yes Описание: По умолчанию при указании пути на странице Выбор папки назначения с помощью кнопки Обзор... (Browse...) инсталлятор автоматически добавляет в конце имя папки, указанной в директиве DefaultDirName, в которую будет установлена программа. Например, если DefaultDirName={pf}\My Program и пользователь выбрал в обзоре диск "Z:\", то программа установится в "Z:\My Program". Если значение директивы no, то папка с указанным DefaultDirName именем в конечном каталоге создаваться не будет. На странице выбора появится кнопка "Создать папку" (Make New Folder). |
pist0n,
[Setup] DefaultDirName={pf}\Steam\steamapps\common\Mini Ninjas Покажите файлы которые устанавливаются в данную папку. |
Цитата:
Код:
[Setup] и последний вопросик - как в конце установки удалить нужную папку или файл? UPD. а всё нашёл Код:
[InstallDelete] |
pist0n, UPD. а всё нашёл
Секция [InstallDelete] обрабатывается компилятором в первую очередь, еще до того как установились какие либо файлы или папки. По сути секция [InstallDelete] служит для удаления файлов и папок предыдущей установленной версии, но ни как не файлов и папок из версии что устанавливаешь. Порядок установки из справки
Порядок установки Задания в секциях от начала до завершения установки выполняются в следующем порядке: •Выполняется [InstallDelete]. •Параметры секции [UninstallDelete] располагаются в логе деинсталлятора (который на этом этапе находится в оперативной памяти). •При необходимости создается папка приложения. •Выполняется [Dirs]. •При необходимости резервируется имя файла деинсталлятора. •Выполняется [Files]. (Регистрация файлов не происходит.) •Выполняется [Icons]. •Выполняется [INI]. •Выполняется [Registry]. •Регистрируются файлы, нуждающиеся в регистрации, если только не требуется перезагрузка системы - в этом случае ни один файл не будет зарегистрирован до тех пор, пока система не перезапустится. •При необходимости создается пункт в Установка/Удаление программ. •Параметры [UninstallRun] располагаются в логе деинсталлятора. •Завершается создание деинсталлятора и сохраняется на диске. После этого, пользователю не сможет отменить установку, и любые последующие ошибки не будут вызывать то откат всех действий. •Выполняется [Run], за исключением файлов с флагом postinstall, которые выполнятся после того, как отобразится страница Установка завершена. •При ChangesAssociations=yes меняются ассоциации для файлов. •Если ChangesEnvironment=yes остальные приложения информируются об изменении переменных среды. Все параметры выполняются инсталлятором в том порядке, в котором они располагаются в секции. Все изменения отменяются деинсталлятором в порядке, обратном их созданию инсталлятором. Это происходит потому, что лог деинсталлятора выполняется от конца к началу. |
Цитата:
пример
Код:
[InstallDelete] |
pist0n,
За-комментируй всё это [InstallDelete] Type: filesandordirs; Name: "{app}\Scenes\Locations1"; и проверь удалиться ли все эти папки. Покажи куда распаковывается arc архивы, где находятся эти папки. |
Цитата:
паковал в arc целиком папку Scenes - внутри папка Locations1 с подпапками для последующих зип архивов - распаковывается папка Scenes тоже целиком в папку с выбранной игрой и далее из папки Locations1 файлы пакуются зип архивы в папку Locations - в конце установки папка Locations1 с подпапками и файлами удаляется целиком за ненадобностью, тк нужны только зип архивы в другой игровой папке Locations если интересно вот установщик со скриптом (100 мб) https://docs.google.com/uc?id=0B5-cz...xport=download |
Всем привет! Возникла проблема с инсталлятором, который сначала должен распаковать архив, затем прописать в реестре несколько ключей. И вот последняя часть не хочет выполняться под пользовательским аккаунтом с админским паролем. Под админом все замечательно работает. Подскажите, пожалуйста, что я делаю не так)
Записи в реестр
Код:
procedure DeinitializeSetup; |
Цитата:
Код:
[Registry] |
Цитата:
|
как на этапе run скрыть страницу installing?
|
Цитата:
Код:
[Run] |
Здравсвуйте, нужен совет.
Требуется определять разрядность системы и в зависимости от нее инсталлировать компоненты. В идеале вывести список с чек боксами и дисеблить не подходящие под разрядность. Можно ли запустить инсталляцию компонент в скрытом режиме(*.ехе файлы). |
maslo_net,
В конце строки в секции [Files] к 64 битным файлам подписывай Check: "IsWin64"; к 32 битным файлам Check: "not IsWin64"; в зависимости от разрядности, система будет сама определять какие файлы ставить. |
Спасибо, все оказалось просто))
|
http://www.forum.oszone.ru/post-1230777-185.html
При компиляции с скриптом по ссылке выше в Inno Setun 5.5.9 начинает материться на всё. |
tylers1121, скрипт для расширенной версии.
|
Как сменить иконку {uninstallexe}
|
habib2302,
[Setup] UninstallIconFile=Uninstall.ico |
Цитата:
Цитата:
|
boss911, вероятно, это относится к оригинальной программе. В расширенной версии возможность сменить иконку деинсталлятора никуда не делась.
|
boss911, из Справки.
Не используется с версии 5.0.0. Задает новую иконку для программы-деинсталлятора. Новая иконка будет отображена в правом верхнем углу окна Процесс удаления. Но в расширенной версии данная директива работает. |
Цитата:
То есть любителей расширенной (не официальной) версии не смущает тот факт, что проект заброшен 5 лет тому назад, что версия компилятора так же не обновлялась с тех пор? Или продолжаем ждать, что вот сегодня-завтра обновят? Ну, ладно. :) |
boss911,
То что не выходят новые расширенные версии ну скажем 5.5.9 это еще не говорит о том что проект заброшен. на сайте http://restools.hanzify.org/ время от времени выходят разные примеры. Если вы придерживаетесь официальных версий и более свежих, тогда скажите как далеко ушла официальная версия 5.5.9 от официальной 5.5.1. Не все золото что блестит!. А Inno Setup Ultra 5.5.1 ещё не один год будет превосходить официальные версии, хотя бы тем что в ней есть редактор форм. А вкусах не спорят. |
Цитата:
Цитата:
|
boss911, Ссылка http://www.jrsoftware.org/files/is5-whatsnew.htm
Инно установки юникод: Добавлен официальный перевод на армянский. Мелкие хитрости. (последняя строка машинного перевода) Я думал что вы своими словами поясните те прекрасные нововведения, а так это относится к другой поговорке (или пословице как вам угодно) На заборе тоже написано. И последнее, не в обиду, что вы ждёте от новых версий, расширенной или официальной, просто интересно. |
Цитата:
Цитата:
|
boss911,
Скрытый текст
По поводу первого пояснения, пусть даже и заброшен, но я думаю что больше половины репакеров сидят именно на расширенной версии, жаль конечно что вы не как не хотите осваивать расширенную, когда она попалась мне, то первое время тоже было сложновато, а сейчас ничего другого не надо. Как писать коды не обязательно знать, все уже давно написано другими, просто нужно знать что скопировать, и куда вставить, примеров на форумах хоть отбавляй. По поводу второго пояснения, то что то припоминаю ту дискуссию на руборде. Так вот Inno Setup со встроенной функцией silent или verysilent как у sfx архива winrar вы не дождётесь, потому что это был бы не установщик программ а полное дерьмо. Джордан Рассел написавший такую прекрасную программу не дурак что бы сделать данные функции вшитыми, хотя думаю для него это не сложно. Если бы у Inno Setup silent и verysilent были бы вшитыми, тогда заниматься плагиатом и вредительством было бы на раз, два. Создал свой установщик ничего не прописывая, запихнул в него репак проверенного автора, выбрал установку verysilent (ни чего не показывая конечному пользователю) и вуаля. Или помимо программы напихать разного хлама или вирусов (люди разные бывают). Объясняю это потому что встречались пользователи задававшие вопрос по поводу кода, как запихнуть в свой установщик другой установщик, то есть через секцию RUN с ключом тихой установки, и чтобы конечный пользователь ни чего не видел. Так что судите сами было бы это правильно или нет. Для вас это было бы автоматизация, для других плагиат. |
Скрытый текст
Цитата:
Цитата:
Цитата:
P.S Windows XP тоже не обновляется, но за ней ещё работают. А это не много не мало: Операционная система. Как многим известно: не обновляемая ОС - это большой удар по безопасности. Чувствуется разница. Цитата:
Если у пользователя появится необходимость использовать безоконный режим - выполнит инсталлятор с ключом. NSIS чем не устраивает? boss911, ZVSRus, Данная тема меняется в пользу Inno Setup. Прочие вопросы. |
ZVSRus, Nordek
Скрытый текст
Цитата:
Nordek Ваш ликбез мне понятен и не нова, но меня спросили, что я хочу, я ответил. Я прекрасно понимаю, что другие этим будут злоупотреблять, только мне не нужно это пояснять, не мальчик. Цитата:
Заканчиваем? |
вечер добрый - не подскажите, как применить патч xdelta для восстановления файла?
снял хдельтой разницу между двумя файлами - получил патч .diff и нужно восстановить файл - в ISDone вроде есть такая функция - прописал так Код:
if not ISxDeltaExtract ( 0, 0, 0, 640, ExpandConstant('{app}\movies\en\se_1_3.vp6'), ExpandConstant('{app}\movies\en\se_1_3.diff'), ExpandConstant('{app}\movies\ru\se_1_3.vp6'), false, false) then break; UPD проблему решил |
а как переместить файлы из одной папки в другую с заменой в конце установки? кроме батника
|
Цитата:
Код:
[Files] |
Цитата:
Код:
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\*.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break; Код:
if not ISExec ( 0, 0, 0, ExpandConstant('{app}\xdelta.exe'), '-d -s -f movies\en\se_1_3.vp6 movies\en\se_1_3.xdelta movies\en\se_1_3.vp6', ExpandConstant('{app}'), '...',false) then break; |
pist0n, выполните распаковку на шаге ssInstal, тогда секция Files будет обрабатываться после. Или выполняйте перемещение через секцию Code.
Здесь пример. |
Цитата:
. UPD вообщем решил конвертнуть в ехе батник с командой перемещения и сделать также как и дельту - прописав ниже if not ISExec ( 0, 0, 0, ExpandConstant('{app}\батник.exe'), ExpandConstant('{app}'), '...',false) then break; ну или через секцию [Run] ещё можно |
как при выборе установки в ту же папку, убрать предупреждение "эта папка уже существует - всё равно установить в эту папку"?
|
pist0n,
[Setup] DirExistsWarning=no |
Цитата:
|
если прописать в секции [Run] флаг postinstall, то на финальном окне установки будет чекбокс о запуске нужного файла - есть возможность убрать этот чекбокс? чтобы его вообще не было, но файл также запустился при нажатии кнопки завершить
|
pist0n,
Если нужно что бы чекбокс был не виден убери флаг postinstall. Что бы запустился файл из секции [Run] кнопкой завершить, тогда наверное нужно написать функцию к данной кнопке, но как это будет работать, вопрос, так как кнопка завершить, это кнопка Далее она одна для всех страниц, на странице готовности она выглядит Установить, на финишной странице Завершить. |
Цитата:
Скрытый текст
Код:
[Setup] Или, как предложили выше, запускать через секцию Code: Скрытый текст
Код:
[Setup] |
Цитата:
у меня просто в исдоне функции IS7ZipExtract и ISExec стоят с ssPostInstall, тк нужно выполнять их после распаковки из [Files] - поэтому через [Run] батник я не могу запустить в конце, тк он запускается после распаковки [Files] и удаляет лишние файлы которые нужны следующим функциям - короче лишние файлы нужно удалить в самом конце - также и через код пробовал это DelTree(ExpandConstant('{app}\***'), True, True, True) - тоже удаляет не в самом конце а после [Files] - теперь извращяюсь и думаю как удалить лишние файлы после установки - вот с этим вариантом выше норм через батник - а есть ещё разные вариаты без батника удалить в самом конце установки? |
Цитата:
|
Цитата:
Код:
function NextButtonClick( CurPageID: Integer ): Boolean; |
Цитата:
При вашем коде переменная integer не нужна Код:
function NextButtonClick( CurPageID: Integer ): Boolean; |
Цитата:
Цитата:
|
Цитата:
Цитата:
скрипт
Код:
#define NeedSize "1048000000" |
pist0n,
Скрытый текст
Код:
[Codе] |
Всем привет! Кто нибудь знает как кодировать wav mp3 в ogg и обратно.
1) Как надо кодировать аудио в ogg? 2) Потом декодировать обратно в исходной формат во время установки через батник? |
Здравствуйте, подскажите пожалуйста, возможно ли с помощью dwinshs (Download Plugin) скачивать не только один файл, а папку с файлами(подпапками).
|
Nikolay4, Вы видите где-нибудь здесь: Contents упоминание про папки (а для http/https вообще не существует понятия «папка/каталог»)?
|
Здравствуйте, скачал репак игры, который запакован Inno Setup и он себя очень странно ведет в момент установки, подозреваю что там вирус:
Запись в реестре: Код:
[HKEY_USERS\S-1-5-21-4030285601-3607310617-3836103468-1001\Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\PropertyStore\75bc57f5_0] |
Правильно подозреваете! Этот вирус называется: «Давайте зададим индивидуальные настройки уровня громкости для этого инсталлятора» и входит во все новые версии ОС.
P.S. На первое апреля надо выбирать щютку юмора потоньше. |
Iska зачем запись в реестре создается тогда, если это просто настройки уровня громкости для инсталлятора? Под этим не может быть замаскирована, например скрытая автозагрузка сайта?
|
|
Iska в этом репаке нет настройки уровня громкости (есть правда вкл. / выкл. звук).
|
ofarapirs
Цитата:
Цитата:
Да, для 1 апреля вопрос уместен. |
ZVSRus Уверен, отслеживал программой Revo Uninstaller Pro установку репака .
Цитата:
Цитата:
|
ofarapirs
Тут нужно смотреть сам скрипт, что прописано в секции [Registry], потому что в данную ветку пишется чере SID пользователя, а он у каждого компа разный. Если запись в данную ветку действительно происходит во время установки (регистрация файлов) не запуская игры, тогда автор знает как обойти SID пользователя. Вопрос только к нему. |
ofarapirs, Iska уже дал вам правильный ответ. Это индивидуальные настройки уровня громкости каждого приложения использующий звук. Запись создает Windows, чтобы помнить уровень громкости вашего приложения(установщика). Спросите "зачем?", так этот вопрос задайте Microsoft, или на крайняк инфы полно в гугл и в яндексе. Вывод: это не вирус и не зловред.
|
Здравствуйте, подскажите пожалуйста, можно сделать так чтоб на странице выбора компонентов некоторые компоненты отображались только если в папке установки программы присутствует определенный файл?
|
Цитата:
Код:
[Components] |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Скрытый текст
Код:
[setup] |
Цитата:
Скрытый текст
Код:
#define AppName "Download Master" |
Цитата:
Цитата:
Скрытый текст
Код:
; Скрипт создан через Мастер Inno Setup Script. Если при установке сначала выбрать минимальную установку, а потом полную, выбираются все компоненты, даже которые отключены. Можно это как то избежать? |
Цитата:
Скрытый текст
Код:
... |
Цитата:
Скрытый текст
Код:
[setup] |
Цитата:
Код:
[Components] |
Доброго времени суток!
Делаю инсталятор программы для проги на делфи. Вопрос 1: Как можно сделать в инсталяторе, чтобы был запрос для настроек программы, в частности IP-адрес сервера. У меня есть файл конфигурации ini, хотелось бы чтобы можно было вносить в него изменения при установке. Что типа: "Введите IP-Адрес сервера" "Введите путь к базе данных" Или в после установки запрос на настройку. файл конфигурации
Код:
[FBBASE] Вопрос 2: Для работы проги нужен FireBird. Нашел как добавить пункт для установки и установку FireBird. Но мне нужен универсальный установщик, в котором будет выбор клиентская прога или серверная (типа как в самом FireBirdе) Пример выбора вида установки
Вопрос 3: Как можно сделать триальную версию или чтобы она сама себя удалила через год или удалила файл конфигурации, без которого она работать не будет Сценарий Inno Setup
Код:
; Этот сценарий создан с помощью Мастера Inno Setup. Заранее спасибо! :oszone: :) Вдруг кому поможет, ответ на 2й вопрос Выбор компонентов (спасибо справке :) )
Код:
[Components] А чтобы сделать разные установки FireBird сделал так: 1. Создал 2 файла FBirdSetup_server.cmd Код:
FBirdSetup.exe /SILENT /NOICONS /COMPONENTS="ServerComponent\ClassicServerComponent" /TASKS="CopyFbClientToSysTask" /TASKS="CopyFbClientAsGds32Task" Код:
FBirdSetup.exe /SILENT /NOICONS /COMPONENTS="ClientComponent" /TASKS="CopyFbClientToSysTask" /TASKS="CopyFbClientAsGds32Task" Скрытый текст
Код:
[Tasks] |
Цитата:
Сделайте а) отдельную утилиту, которая будет этим заниматься, и вызывайте её на последнем этапе инсталляции, б) сделайте в Вашем приложении поддержку командной строки, добавьте параметр, отвечающий за отображение и задание настроек, и вызывайте Ваше приложение с данным параметром командной строки на последнем этапе инсталляции. |
Еще вопрос, как определить разрядность системы?
У менять есть файл для настроек FireBird (серверная часть приложения), и там есть батник который добавляет юзеров и привилегии, он зависит от разрядности 32 бита c:\progra~1\Firebird\FireBird_2_1\Bin\gsec -user SYSDBA -password masterkey -add Admin -pw 111 64 бита c:\progra~2\Firebird\FireBird_2_1\Bin\gsec -user SYSDBA -password masterkey -add Admin -pw 111 Как это сделать? из справки [Files] section Flags This parameter is a set of extra options. Multiple options may be used by separating them by spaces. The following options are supported: 32bit Causes the {sys} constant to map to the 32-bit System directory when used in the Source and DestDir parameters, the regserver and regtypelib flags to treat the file as 32-bit, and the sharedfile flag to update the 32-bit SharedDLLs registry key. This is the default behavior in a 32-bit mode install. 64bit Causes the {sys} constant to map to the 64-bit System directory when used in the Source and DestDir parameters, the regserver and regtypelib flags to treat the file as 64-bit, and the sharedfile flag to update the 64-bit SharedDLLs registry key. This is the default behavior in a 64-bit mode install. Ни фига не понял |
Цитата:
Код:
[Files] |
Доброго времени суток.
Подскажите в чем проблема - текст при выборе папки установки/группы (меню "Пуск") не обновляется. Возьмем стандартный путь "C:\Program Files\СS:Source" - в полоске "путь установки" отображается такой же; если его (во время инсталляции) изменить, например, на "D:\Games\CS:Source" - путь установки изменится, но текст в полоске будет стандартным ("C:\Program Files\CS:Source"). Как решить эту проблему? Надеюсь Вы поняли, что я имел в виду |
Подскажите ещё, как сделать, чтобы путь установки нельзя было изменить, т.е. чтобы не было кнопки "Обзор"?
|
Zerstoren, чтобы не было кнопки "Обзор"
[Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application [code] procedure InitializeWizard(); begin WizardForm.DirBrowseButton.Hide; with WizardForm.DirEdit do begin Width := ScaleX(417); AutoSelect := False; end; end; |
ZVSRus, Спасибо!
А можно вообще запретить редактирование пути? Но чтобы он показывался |
Zerstoren, А можно вообще запретить редактирование пути?
Но чтобы он показывался 1. [Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application [code] procedure InitializeWizard(); begin WizardForm.DirBrowseButton.Hide; with WizardForm.DirEdit do begin Width := ScaleX(417); AutoSelect := False; Enabled := False; end; end; 2. [Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application [code] procedure InitializeWizard(); begin with WizardForm.DirBrowseButton do begin Enabled := False; end; with WizardForm.DirEdit do begin Width := ScaleX(322); Enabled := False; end; end; |
ZVSRus, Спасибо! :up
|
Можно как-нибудь с помощью Inno добавлять задания в планировщик задач?[
|
Цитата:
Код:
[Tasks] |
Как организовать установку программы для 4 вариантов осей: ХР - 32бит, ХР - 64бит, Виста, 7 - 32бит, Виста, 7 - 64 бит?
никак не найду скрипт. |
Цитата:
|
Цитата:
|
Цитата:
Код:
[Files] |
Цитата:
СПАСИБО!!! Есть вопрос о параметрах MinVersion: и OnlyBelowVersion: откуда берутся значения о,5.1, 0,5.2, 0,6.0, 0,6.1?!? и еще - а как будет выглядеть скрипт или скрипты? насколько понял то для битности и версий разные скрипты? |
Цитата:
MinVersion: 0,5.1 - файл будет установлен, если версия Windows будет больше значения 5.1. Например, Windows XP x86 имеет версию 5.1.2600, что, если сравнивать по токенам, больше, чем 5.1 (оно же при разборе значений - 5.1.0000). Т.е. в условие MinVersion: 0,5.1 попадают ОС от Windows XP x86 и выше. Windows 2000 в пролете, т.к. ее версия 5.0.2195 меньше, чем 5.1.0000. OnlyBelowVersion: 0,5.2 - файл будет установлен, если версия Windows будет меньше значения 5.2. Т.к. нам нужна только Windows XP x86, а не она и все, что выше. Windows XP x64 и Windows Server 2003 в пролете, т.к. их версия 5.2.3790 больше, чем 5.2 (оно же 5.2.0000). Т.е. MinVersion: 0,5.1; OnlyBelowVersion: 0,5.2 - ставим файл, если версия Windows больше 5.1, но меньше 5.2. Под это условие попадает только Windows XP x86. Правда еще и Windows XP 64-Bit Edition Version 2002 (Itanium), но для отсева стоит Check: not IsWin64 Цитата:
|
Цитата:
|
Вложений: 1
Товарищи, помогите со скриптом.
1. При переносе кнопки наверх справа, она не отображается, можно ли как-то вывести ее на передний план? скрин
Скрытый текст
Знаю, что за координаты кнопки отвечают строки: Код:
procedure InitializeWizard(); 2. Можно ли в данном случае белую область окошка перекрасить в черный? скрин
|
Здравствуйте!
Подскажите, пожалуйста, возможно ли сделать так, чтобы добавить две папки в инсталлятор - одна содержит 64-битную версию прораммы, а другая 32-х битную и, соответственно, чтобы был выбор в инсталляторе (точкой) - какую из этих версий необходимо установить, т. е. если ранее было выбрано 64-bit, то установка должна идти из папки с 64-битной версией и наоборот. Заранее благодарю. |
OldGamer,
Код:
[Files] |
Oasis,
Цитата:
|
ZVSRus, я уже пробовал.
|
habib2302, И какой результат?
|
ZVSRus, кнопка просто не видная. а при попытке сместить по вертикале, то тоже нет. так же менял код местами в плане накладывание слоев и тоже самое.
|
|
ZVSRus, странно.
|
habib2302,
Вы наверное меняли одни координаты: ScaleX(640), ScaleY(14), а родителя поменяли с WizardForm на WizardForm.MainPanel |
ZVSRus, получилось, благодарю.
И как я понял, не получится закрасить это окошко отмены? Ботва не поможет? скрин
|
Oasis, это скорей всего проблема скина. и вроде это обсуждалось
|
Oasis, И как я понял, не получится закрасить это окошко отмены? Ботва не поможет?
Скорее всего нет. В скрипте прикручен скин (и, именно из за него окно выглядит так), так как это стандартное окно, и поменять в нем ничего не получится. Если нужно всё окно выхода в чёрном цвете, тогда нужно прикрутить костомную форму выхода, примеров и в справке есть, и на форумах хоть отбавляй. |
ZVSRus, спасибо за наводку.
вставил этот скрипт, может кому пригодится
[Files] Source: Portal_1.bmp; DestDir: {tmp} [code] var MyExit: TSetupForm; procedure MyExitMessage(); var OkButton, CancelButton: TButton; MyIcon: String; begin MyExit := CreateCustomForm(); with MyExit do begin color := clblack Position := poScreenCenter; ClientWidth := WizardForm.Width; ClientHeight := WizardForm.Height div 2; Caption := ExpandConstant(SetupMessage(msgExitSetupTitle)); MyIcon := ExpandConstant(AddBackSlash('{tmp}') + 'Portal_1.bmp'); if not FileExists(MyIcon) then ExtractTemporaryFile(ExtractFileName(MyIcon)); with TBitmapImage.Create(MyExit) do begin Left := ScaleX(10); Top := ScaleY(20); Width := ScaleX(80); Height := ScaleY(80); Bitmap.LoadFromFile(MyIcon); Parent := MyExit; end; with TNewStaticText.Create(MyExit) do begin Left := ScaleX(110); Top := ScaleY(20); Width := MyExit.Width - ScaleX(115); Height := MyExit.Height div 2; AutoSize := False; WordWrap := True; Caption := ExpandConstant(SetupMessage(msgExitSetupMessage)); Parent := MyExit; Font.Name:='Comic Sans MS' Font.Color:=ClWhite; end; CancelButton := TButton.Create(MyExit); with CancelButton do begin Width := WizardForm.CancelButton.Width; Height := WizardForm.CancelButton.Height; Left := MyExit.Width - Width - ScaleX(15); Top := MyExit.Height - Height * 2 - ScaleY(15); Caption:='Назад'; ModalResult := mrCancel; Parent := MyExit; end; OkButton := TButton.Create(MyExit); with OkButton do begin Width := CancelButton.Width; Height := CancelButton.Height; Left := CancelButton.Left - Width - ScaleX(5); Top := CancelButton.Top; Caption:='Выйти'; ModalResult := mrOk; Parent := MyExit; end; ActiveControl := CancelButton; end; end; procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean); begin Confirm := False; MyExitMessage(); if MyExit.ShowModal() = mrCancel then Cancel := False; end; |
Oasis, спасибо за наводку.
Забыл сказать, прикрученный скин никак не действует на свои формы (то что вы делаете в коде), только на стандартные окна, форму, по моему так. Картинку на форме лучше сделать в .png формате, что бы фона не было видно. Прикрути ботву. |
Всем привет!
Подскажите, пожалуйста, как и где указать задержку появления/старта/начала музыки. Ботва и басс модуль подключены. |
OldGamer, Что бы вам могли подсказать (те кто знает), им нужно что то видеть (в данном случае скрипт).
А так подсказку будете ждать до морковкинова заговенья. |
ребята подскажите как сделать .exe , что бы он тихо внёс в реестр и в host
что бы он не определялся в программы и компоненты |
Цитата:
Вариант 1:
Код:
[Run] Код:
[Run] Вариант 2:
Код:
[Files] Вариант 3:
Код:
[Registry] Цитата:
Скрытый текст
Код:
[Code] |
Вложений: 3
Цитата:
P. S. Поясню подробнее: создаю инсталлятор со слайд-шоу. Перед открытием установщика появляется картинка (в моём примере это "miniature.png"), затем она плавно исчезает и уже открывается окно установщика. Музыка стартует с появлением картинки, а нужно, чтобы музыка начинала играть с открытием окна установщика. |
OldGamer, Вот, выложил скрипты....
Вы выложили скрипт и 2 модуля, а остальное за вас должен кто то искать. dll'ки, картинки, папку с кнопками. Если уж сделали архив, запихайте туда все! |
OldGamer, Вопрос на засыпку!
Вы сами собирали скрипт, музыка + сплеш заставка. Музыка работает своеобразно, нажимаешь на кнопку отключения, на кнопке крестик, это правильно. Двигаешь громкость, музыка начинает играть но на кнопке крестик, это не правильно. Нажимаешь на кнопку, крестик пропадает, но музыка играть перестаёт, это не правильно. Снова двигаешь ползунок громкости, музыка начинает играть, это не правильно. Замороченный скрипт. |
ZVSRus, да сам собрал))
|
Цитата:
Скрытый текст
Код:
procedure InitializeWizard(); |
Dodakaedr, Спасибо большое - это работает :up
|
Dodakaedr, OldGamer,
Да музыка начинает играть при открытии окна инсталлятора, пропуская Splash заставку, но почему при выключенной музыки кнопкой, музыка начинает играть при перетаскивании ползунка громкости, при этом кнопка показывает что музыка выключена! |
Народ, выручайте!
Я в Inoo Setup-е не "бум-бум", как говорится... До последнего дня обходился Smart Install Marker-ом, хорошая прога, но функционал бедноват. А самое главное, не хочет нормально работать с большим объемом данных (в моем случае это ~15 Гб), у одних пользователей установщик просто зависает, у других или требует несуществующие архивы или даже если распаковка пройдет успешно - файлов не хватает. Короче, на таких объемах он глючит. Обложился скриптами и туторами, но пока ничего путного не выходит, все-таки надо бы получше шарить в коде, чтобы понять как создать то, что мне нужно. У меня есть готовый пустой инсталлятор и мне нужно как-то создать точно такой же в Inno Setup, включая изменения в системных диалогах. Кто поможет с созданием шаблона? З.Ы. Ссылка на пустой инсталлятор (распаковывает txt файл с именем test): ЯндексДиск |
Вложений: 1
Здравствуйте.
Срочно требуется помощь в скрипте. Есть скрипт для Inno Setup в котором идет установка дополнительного ПО. Все бы хорошо, если бы не проблемка. Перед запуском инсталлятора нужна проверка на несколько условий. 1. Проверка на ГЕО (US,CA,GB). 2. Проверка реестра на определённые ключи. Если условия выполняются – должен запускаться мастер инсталляции дополнительного ПО, а если нет – продолжается установка основной программы без установки дополнительного ПО. Сейчас окно с дополнительным ПО открывается для любого гео. Поиски подобных решений мало что дали. Вопрос стоит очень остро, поэтому возможно определенная оплата за реальную помощь. Сам скрипт Код:
var |
Здравствуйте!
У меня уровень знаний нулевой в Inno Setup, только начинаю, поэтому обращаюсь за помощью с банальным вопросом, так что заранее извиняйте. Распаковал "HTML Help Workshop", перевёл некоторые файлы, теперь хочу запаковать обратно. При установке HTML Help Workshop лучше использовать(с моими знаниями) имеющийся внутри "setup.exe". Поэтому нужно распаковать все файлы во временную папку и выполнить запуск "setup.exe" от туда, по окончании установки и закрытии "setup.exe", удалить все файлы. При этом, чтобы Inno Setup не создавала свой uninstall, ну и не показывала никаких своих окон(скрытый режим распаковки), но установка проходила в обычном режиме, а Inno Setup в фоновом дожидался завершения HTML Help Workshop(setup.exe). Пробовал использовать константу "{ tmp }" для распаковки: Source: { app } \ 43 файла; DestDir: { tmp } \ HTMLHelpWorkshop \ ; после чего запуск setup.exe: Filename : { tmp } \ HTMLHelpWorkshop \ setup.exe И в итоге получал два uninstall и все окна Inno Setup видны. Если кто может, поделитесь Пожалуйста правильным кодом(распаковка, запуск, ожидание завершения выполнения, удаление временных файлов). Надеюсь обратился в правильной теме за помощью. |
Цитата:
Код:
[Files] Цитата:
Код:
[Run] Цитата:
Пример: Код:
[Files] Цитата:
Пример: Код:
[Setup] Цитата:
Setup Command Line Parameters, NSIS: Installer Usage. Пример выполнения NSIS в Inno Setup: Код:
[Run] Удалось разжевать? Или надо как-то по-феншую? |
0SERGEY0, спрашивается — а
|
0SERGEY0,
Цитата:
|
Цитата:
setup.ini
Код:
[Default] htmlhelp.inf
Код:
[Version] uninst.inf
Код:
[Version] |
Iska, Скачал, установил (распаковал), есть там setup.exe, у меня он почти все удалил, как понимаю работает как деинсталлятор. А не проще перевёл что нужно, и упаковал как обычно в инно с деинсталлятором.
P.S. Из описания понял что написана утилитка аж для Win95 и NT. Не все ещё динозавры вымерли! |
Цитата:
Цитата:
|
Nordek, лайк с меня и большущая благодарность!
Цитата:
Всё получилось нормально, теперь один Uninstall создается(родной и дырявы). Правда про флаги "createallsubdirs (который должен быть в паре с recursesubdirs)" - не даёт пропускать пустые подпапки. Флаг "deleteafterinstall" удаляет временные файлы по завершению процесса (если я конечное правильно понял). Только, с флагами и бес флагов сценарий работает одинаково. Наверно "createallsubdirs" в моем случае необязателен, так как не используются подпапки(они в процессе создаются). А по поводу "deleteafterinstall" - я так понимаю файлы все ровно удаляются и без него из-за того, что используется временная папка "темп"(наверное). Но флаги всё же оставил, на всякий, пусть будут :). Про "Parameters" толком не понял, в справке написано "Дополнительные параметры командной строки, которые могут содержать константы.". Какие константы, что они означаю, с чем их едят, буду учить :). В общем итоге вышел такой результат: Код:
[Setup] Цитата:
Всем ещё раз СПАСИБО! |
Цитата:
Вместо того чтоб сделать обычный инсталлятор с быстрым и неглючным запуском, корректной работы процесса инсталляции - увешивают свистоперделками, чтоб интриги добавить (чего же на самом деле ожидать после пятиминутной инициализации инсталлятора). Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Скрытый текст
Код:
[Code] Цитата:
|
Цитата:
Добавление файлов:
Добавление INI
Если нужно добавить параметры INI - для этого нужно в левой колноке щёлкнуть "Файлы INI", затем перетащить файл *.ini в правое окно:
Как видно на снимке экрана, параметры успешно перенесены: Рекомендую обратить на параметр: В данном параметре необходимо изменить значение. Например если оставить как есть: При установке решите выбрать другой каталог, например "C:\MyProgram" а не "C:\Program Files\MyProgram" - значение в файле INI всё равно будет записано как "C:\Program Files\MyProgram". Чтоб избежать недоразумений, нужно щёлкнуть по параметру двойным щелчком мыши, затем заменить значение "C:\Program Files\MyProgram": на соответствующее, как в данном случае "{app}\default": {app} потому, что путь указанный в DefaultDirName (Пример: DefaultDirName={pf}\My Program) передаётся в константу {app} Итоговый результат: теперь при инсталляции в любой каталог, путь в значении будет записываться верно. Используемые флаги:
Общие:
createkeyifdoesntexist Записывать значение в ключ только если имя ключа не существует uninsdeleteentry Удалить параметр при удалении программы. Может комбинироваться с флагом uninsdeletesectionifempty. uninsdeletesection Когда программа удалится, удалить секцию с параметром, в котором он находится. Не рекомендуется использовать этот флаг для секции, которой пользуется Windows (как, например, некоторые секции в WIN.INI). Следует использовать этот флаг только в секциях самого вашего приложения. uninsdeletesectionifempty Флаг похож на uninsdeletesection, но удаляет секцию, только если в ней не осталось ключей. Может комбинироваться с флагом uninsdeleteentry. Добавление REG
Если нужно добавить параметры реестра - для этого нужно в левой колонке щёлкнуть "Реестр", затем перетащить файл *.reg в правое окно:
Как видно на снимке экрана, параметры успешно перенесены: Рекомендую обратить на параметр (случай c *.reg аналогичен с *.ini): В данном параметре необходимо изменить значение. Например если оставить как есть: При установке решите выбрать другой каталог, например "C:\MyProgram" а не "C:\Program Files\MyProgram" - значение в реестре всё равно будет записано как "C:\Program Files\MyProgram". Чтоб избежать недоразумений, нужно щёлкнуть по параметру двойным щелчком мыши, затем заменить значение "C:\Program Files\MyProgram": на соответствующее, как в данном случае "{app}\default": Итоговый результат: Используемые флаги:
Общие:
createvalueifdoesntexist Когда установлен этот флаг, инсталлятор создаст параметр, но только в том случае, когда параметр с таким именем не существует. Этот флаг не действует, если тип данных none или задан флаг deletevalue. dontcreatekey Когда установлен этот флаг, инсталлятор не будет пытаться создать ключ или любой параметр, если ключ уже не существует в системе пользователя. Инсталлятор не выдаст сообщений об ошибке, если ключ не существует. Обычно этот флаг используется в комбинации с флагом uninsdeletekey для удаления ключей во время установки, но не создания их в течение установки. noerror Не отображать сообщение об ошибке, если инсталлятор не сможет по какой-либо причине создать ключ или параметр. preservestringtype Этот флаг применим только если ValueType имеет значение string или expandsz. Когда установлен этот флаг и параметр еще не существует или существующий параметр не string (REG_SZ или REG_EXPAND_SZ), параметр будет создан и ему присвоено значение, указанное в ValueType. Если параметр существовал и имел тип string, он будет заменён параметром с тем же типом, что и существовавший ранее. (Де)инстал: deletekey Когда установлен этот флаг, инсталлятор сначала попытается удалить ключ, если он существует, со всеми его параметрами и разделами. Если ValueType: none;, после этого он создаст новый ключ и параметр. Для предотвращения негативных последствий, этот флаг игнорируется при установке, если Subkey пустой или состоит только из бэкслешей. deletevalue Когда установлен этот флаг, инсталлятор сначала попытается удалить параметр, если он существует. Если параметр ValueType не равен none, после этого он создаст ключ, если он не существует, и новый параметр. uninsclearvalue Когда программа удаляется, устанавливать значение параметра в пустую строку (REG_SZ). Этот флаг не может быть комбинирован с флагом uninsdeletekey. uninsdeletekey Когда программа удаляется, удалить ключ, включая все его параметры и разделы. Не рекомендуется использовать этот флаг для ключа, которым пользуется Windows. Следует использовать этот флаг только в ключах самого вашего приложения. Для предотвращения негативных последствий, этот флаг игнорируется при установке, если Subkey пустой или состоит только из бэкслешей. uninsdeletekeyifempty Когда программа удаляется, удалять ключ, если в нем не осталось параметров и разделов. Этот флаг не комбинируется с флагом uninsdeletevalue Для предотвращения негативных последствий, этот флаг игнорируется при установке, если Subkey пустой или состоит только из бэкслешей. uninsdeletevalue Удалять параметр при удалении программы. Этот флаг может комбинироваться с флагом uninsdeletekeyifempty. Пример ассоциации:
Как связать ту или иную программу - примеры есть в справке.
Приведу пример: Код:
[Registry] Вы создали инсталлятор, произвели инсталляцию, но после инсталляции вы встретились с таким недоразумением как: Вид файла с расширением *.txtutf не принял соответствующий вид. Бриобретение вида для связанного файла определённого расширения может вступить в силу после выхода из ОС или вовсе после перезагруки. Также можете встретиться с таким неддоразумением как: После деинсталляции вид связаного файла с расширением не возвращается в исходное положение. В обоих случаях: Для того, чтоб у вас, файл с расширением *.txtutf (который был ранее связан с программой) принял первоначальный вид - необходимо в секцию [Setup] установить директиву ChangesAssociations со значением true: Код:
[Setup] Если вы заметили что на первый взгляд после корректной деинсталляции ранее связанный файл не принял соответствующий вид (который никогда небыл связан с любой другой программой) - это значит: что деинсталляция, точнее настройка, произведена неверно. Чтоб вернуть первоначальный вид файлу - необходимо вместо флага uninsdeletevalue, установить флаг uninsdeletekey Код:
[Registry] Если файл принял такой вид: - В случае инсталляции означает, что: Ассоциация не обновлена проводником. В случае деинсталляции означает, что: Связывание удалено полностью. Если файл принял такой вид: - В случае инсталляции означает, что: Связывание установлено корректно. В случае деинсталляции означает, что: Ассоциация не обновлена проводником. Если файл принял такой вид: - В случае деинсталляции означает, что: Присутствуют некоторые значения в реестре. Если файл принял такой вид: - В случае деинсталляции означает, что: Программа удалена, но в подразделе DefaultIcon, в параметре (по умолчанию) содержится значение представляющее из себя путь, который ведёт к значку. Если файл принял такой вид: - В случае деинсталляции означает, что: Программа удалена, но в подразделе .txtutf, в параметре (по умолчанию) содержится значение Text.UTF и т.д Также стоит учесть то, что файл с которым производится связывание - программа способна произвести связывание при первом запуске. Также стоит учесть, что для связывания, в некоторых случаях будет достаточно использовать ключи командной строки (если таковые имеются), например: Код:
[Run] Код:
[Registry] Например вы назначили вручную: Код:
Root: HKLM; SubKey: Software\Classes\.iss; ValueType: string; ValueData: ext_auto_file; Flags: uninsdeletevalue uninsdeletekeyifempty |
Цитата:
Я не сильный знаток Inno, не подскажете, как увязать чтобы в одном коде была проверка одновременно на эти гео US CA GB? Т.е. установка была бы если пользователь устанавливал софт именно из этих стран. |
Цитата:
Цитата:
Скрытый текст
Код:
[Setup] |
Цитата:
Код:
Code] |
Цитата:
Скрытый текст
Код:
[Code] |
Цитата:
|
Вложений: 1
Прошу помощи, появилась еше одна проблема, может кто сталкивался с подобной.
На кастомной странице инсталлятора есть текстовая информация в ACaption, ASubCaption, ALabel1Caption, ALabel2Caption. CheckBox для установки ПО. А есть AIconFileName который выводит иконку этого ПО. Раньше проблем не было т.к. использовались иконки ПО 32х32. Сейчас же необходимо вывести bmp файл вместо иконки, и вот здесь появилась проблема. Указывая размеры bmp-шки Width := 121;Height := 190; резервируется место для размеров изображения, но само изображение выводится 32х32. В течение дня танцы с бубном ничего не дали. Есть подозрение что вся проблема из-за идентификатора hIcon который не дает возможности вывести изображение в реальном разрешении. Может быть есть возможность не использовать hIcon и заменить его на простое решение. Код:
function CreateCustomOptionPage(AAfterId: Integer; ACaption, ASubCaption, AIconFileName, ALabel1Caption, ALabel2Caption, |
|
Цитата:
|
Вложений: 1
Здравствуйте!
Подскажите, пожалуйста, как реализовать следующее: 1) При первом запуске программа создаёт папку с файлами по пути: "C:\Users\Имя пользователя\AppData\Local\папка на удаление". Нужно, чтобы при деинсталляции программы эта папка была удалена. 2) Нужно, чтобы была страница с выбором из 2-х разных файлов/папок программы, так как во вложении, желательно без картинок. |
OldGamer
Скрытый текст
Код:
[Setup] |
ZVSRus,
Огромное-преогромное Спасибо! Этот скрипт работает! Очень благодарен :good: :yahoo: :good: Остался "последний штрих" - нужно, чтобы вокруг этих RadioButton был GroupBox с надписью "Версия:". |
Цитата:
Скрытый текст
Код:
[Code] |
OldGamer,
Остался "последний штрих"
Цитата:
|
Доброго времени суток!
Недавно столкнулся с тем (собственно, мне сообщили об этом, ибо у самого FullHD), что при разрешении 3840x2160 в инсталляторе съезжают кнопки Next и Cancel, а также некоторые кастомные элементы (картинки, текст etc.)... Скриншот проблемы
Проблема с картинками, я так понимаю, всего лишь из-за того, что картинки маленького разрешения (или нет?). Но что с кнопками Next и Cancel и текстом (мейби сам скин виноват?)? Это можно пофиксить? Прошу помощи! :sorry: Инсталлятор у меня без наворотов, разве что установлен скин и произведены некоторые другие легкие модификации. Если нужно, то вот ссылка на скрипт - https://cloud.mail.ru/public/9Acu/Lt6HGA7hz |
Цитата:
|
Ищу скрипт от dead-space-2-fenixx-ot-vasyakrn буду очень благодарен за помощь
|
ребята помогите имеется несколько function InitializeSetup(): Boolean;
как это вынести |
Цитата:
|
pollipen, взять и объединить.
|
всё парни разобрался
|
парни как убрать вот такое сообщение
и дальше продолжала установку |
Ну, допустим, уберёте сообщение, толку-то. Установка не продолжится, а завершится с ошибкой. Что Вы там такого обновляете?
|
Цитата:
Например имеется программа которую следует обновить. При установке: Допустим пропустит, допустим установит - но файлы новой версии обновлены не будут или будут обновлены частично - после такой установки обновляемая программа перестанет работать или будет работать некорректно, с ошибками. Пусть пользователь решает что ему делать (На снимке экране верный способ, инсталлятор сделает сам всё, что нужно.). Если вам приспичило, то ловить нужно на инициализации, например: Код:
[Files] |
Ребята, подскажите, как разрешить ввод только цифр в Edit1 на кастомной странице? Страницу создал с помощью Inno Setup Form Designer. Пробовал так, не работает:
Код:
procedure CustomPage_Edit1KeyPress(Sender: TObject; var Key: Char); |
Цитата:
Скрытый текст
Код:
[Code] |
Вложений: 1
День добрый. Есть такой Inno Download Plugin (Mitrich Software). Для скачивания файла используются:
function isxdl_DownloadFiles(hWnd: Integer): Integer; external 'isxdl_DownloadFiles@files:isxdl.dll stdcall'; При скачивании появляется прогресс бар со статистикой по скачиваемому файлу. Может быть кто-нибудь сталкивался с подобной проблемой и знает как ее решить: необходимо скрыть прогресс бар процесса скачивания файла(-ов). Буду признателен за помощь! Код:
procedure DownloadFiles(IDE, ISS: Boolean); |
Цитата:
|
Цитата:
|
Цитата:
|
Вложений: 2
Здравствуйте!
Помогите, пожалуйста, решить проблемы: 2) Нужно, чтобы название языков установки было написано по англ./рус. (см. вложение), например Russian / Русский и т.д. https://cloud.mail.ru/public/FD46/7renqfK7P |
Здравствуйте, я впервые общаюсь с данной программой и при первой же компиляции мне выдаёт ошибку: "Line 51: Column: 76 Unknown Type 'TItemArea' ", - помогите пожалуйста. (Версия программы - 5.5.9(u)).
Сам код: Скрытый текст
Код:
type |
парни подскажите как можно сделать что бы в папке при установки не проверялись файлы
Source: "C:\Users\Desktop\1\CommonFilesFolder\*"; DestDir: "{cf}"; Flags: что тут надо прописать |
Цитата:
|
Цитата:
|
Вложений: 1
Добавил IDPForm.FileProgressBar.Visible := False; IDPForm.TotalProgressBar.Visible := False; в результате получилось такое окно (на скрепке)
|
Как сделать чтобы при изменении пути в DirEdit кнопка NewButton становилась активной, а при нажатии на кнопку NewButton
она становилась неактивной? |
Вложений: 2
Господа, есть тут кто-нибудь, кто разбирается в Unicode-версии Inno Setup?
Или возможно ли отключить жёсткую проверку синтаксиса? Установил Inno Setup с поддержкой Unicode, чтобы корректно отображалось название языков. При компиляции появляются ошибки, а в обычной версии компиляция скрипта проходит без каких-либо проблем. Что делать с этой строкой "record..."? Сам скрипт
Код:
Буду очень благодарен за помощь. |
Пытаюсь прикрутить к Inno чтение с консоли, причем нужна реализация через пайпы и чтобы текст построчно отображался в Memo.
Пытаюсь адаптировать следующий пример, 3-ий на странице (RunDosInMemo): http://decoding.dax.ru/faq/vcl/console/console001.html Вроде почти перевел, но осталась заморочка именно с чтением через ReadFile и вывод, соответственно в Memo, да, там должны передаваться символы и строки, у меня счас там цифры, содрал с одного примера, но подружить с текстом не удается. Просьба продвинутых поправить пример, если это возможно. Скрипт (для версии Unicode)
Код:
[Setup] |
|
Цитата:
Скрытый текст
Код:
[Setup] |
El Sanchez,
Привык к стандартной официальной версии, буду пробовать адаптировать, за пример огромное спасибо! добавлено подскажите, какой изврат можно использовать в стандартной версии Unicode вместо: Buffer := CastIntegerToString(BufPtr); чтобы перевести содержимое в ANSI. Адаптировал пример под официальную ANSI версию компилятора - все нормально, отображает символы корректно, но UNICODE не содержит CastIntegerToAnsiString. Что нужно учесть, чтобы написать свою функцию CastIntegerToAnsiString, либо как решить задачу другим способом? ====================================================================================== Цитата:
|
El Sanchez, а вывод с консоли заголовка окна возможен? Скажем, проценты выполнения процесса? Было бы здорово.
|
Цитата:
Цитата:
|
El Sanchez, спасибо за направление, но это не мой уровень, увы.
|
Ребята, нужна помощь. как и где указать файлы уже установленные инсталятором, которые должны остаться на компьютере пользователя после удаления основной программы? т.е нужно указать файлы которые деинсталятор будит обходить стороной.
|
Цитата:
Пример: Код:
[Files] |
Цитата:
Скрытый текст
Код:
[Setup] |
Dodakaedr, спасибо вам большое.
|
Dodakaedr, теперь возникла другая проблема, код накладывается на секцию [run] на финишной странице, решил передвинуть текст, вроде получилось, но белый фон кода закрывает секцию [run]. Да, и как мне передвинуть текст немного правее(чтобы был в столбик с секцией [run])? Заранее спасибо!)
|
Цитата:
Код:
DelTmp.SetBounds(ScaleX(WizardForm.RunList.Left), ScaleY(WizardForm.RunList.Top), ScaleX(140), ScaleY(15)); Код:
DelTmp.Left := ScaleX(180); |
Цитата:
Скрытый текст
Код:
[Setup] |
boss911 и Dodakaedr, спасибо вам большое!
|
парни как сделать папку только для чтения или системную
|
Цитата:
Код:
[Dirs] |
парни как убрать страницу установить , что бы продолжалась автоматом установка
|
Цитата:
Код:
[Setup] |
pollipen
Скрытый текст
Код:
[Setup] |
что то не получается вот скрипт надо чтобы тихо продолжалась установка без пользователя (может кто поправит или подскажет)
скрипт
HTML код:
#define MyAppName "My Program" |
парни как запустить .msi файл из установщика, а то пишет что не является приложением win 32
|
pollipen, http://www.jrsoftware.org/iskb.php?msi
Код:
[Files] |
Цитата:
Код:
Exec(ExpandConstant('{tmp}\DirectX.exe'), '/q', '', SW_Hide, ewWaitUntilTerminated , ErrorCode); Цитата:
Скрытый текст
Поправил: Код:
#define MyAppName "My Program" |
pollipen
Цитата:
тогда так function ShouldSkipPage(PageID: Integer): Boolean; begin if (PageID = 8) or(PageID = 9) or(PageID = 10) then Result:= True; end; |
Спасибо ZVSRus выручил.
|
Вопрос такой на Splash можно как то поставить анимацию (.gif)
|
pollipen
|
не получилось ни чего не показывает
|
pollipen
Цитата:
https://www.upload.ee/files/7397789/splash.rar.html |
да, у меня всё так и было, но почему то тишина
https://youtu.be/bGzZmjz6BOU |
Цитата:
Поправил пример: Код:
; Время проявления картинки Splash (1500мс = 1,5 сек) |
:up спасибо!!!
Всё работает!!! :clapping: |
Не могу понять как сделать так чтобы при запуске под UAC от имени администратора иконки создавались в папке пользователя а не администратора или в общей папке
Т.е логинится пользователь User, установщик запускается от Admin, и иконки создаются в папке c:\Users\Admin\AppData\Roaming\Microsoft\Windows\Start Menu\ [Icons] Components: www; Name: "{group}\w w w ... |
Всем привет. Прикручиваю в расширенной версии фон на компонентлист, но при скролле картинка "ползает". Как это можно исправить?
Скрытый текст
Код:
[Setup] |
нужна ваша помощь. как сделать так чтобы установщик запустил выбранный мной файл а после удачного запуска удалил его?
|
Цитата:
Скрытый текст
Так:
Код:
[Files] или так: Код:
[Tasks] или так: Код:
[Tasks] |
З
(Решено) Сам код: Скрытый текст
[code] function NextButtonClick(CurPageID: Integer): Boolean; begin Result := True; case CurPageID of wpSelectDir: if not FileExists(ExpandConstant('{app}\steam.exe')) then begin MsgBox('Ошибка! Вы должны указать путь к папке Steam.', mbError, MB_OK); Result := False; end; end; end; procedure SomeProc; begin end; var DelTmp: TNewCheckBox; function DelTmpCheck(): boolean; begin result := DelTmp.Checked; end; procedure InitializeWizard(); begin WizardForm.RunList.Height := ScaleY(WizardForm.RunList.Height-100); DelTmp := TNewCheckBox.Create(WizardForm); DelTmp.Parent := WizardForm.FinishedPage; DelTmp.Caption := ' Очистить временные файлы игры (рекомендуется)'; DelTmp.Left := ScaleX(180); DelTmp.Top := ScaleY(170); DelTmp.Width := ScaleX(300); DelTmp.Height := ScaleY(15); DelTmp.Checked := true; end; procedure CurStepChanged(CurStep: TSetupStep); begin case CurStep of ssDone: begin if DelTmpCheck then begin DelTree(ExpandConstant('{app}\steamapps\common\Counter-Strike Global Offensive\directx_installer\*'), false, true, true); DelTree(ExpandConstant('{app}\steamapps\common\Counter-Strike Global Offensive\csgo_lv\streams\*'), false, true, true); DelTree(ExpandConstant('{app}\steamapps\common\Counter-Strike Global Offensive\EmptySteamDepot'), True, true, true); DelTree(ExpandConstant('{app}\steamapps\common\Counter-Strike Global Offensive\thirdpartylegalnotices.doc'), false, true, true); DelTree(ExpandConstant('{app}\steamapps\common\Counter-Strike Global Offensive\installscript.vdf'), false, true, true); DelTree(ExpandConstant('{app}\steamapps\common\Counter-Strike Global Offensive\images'), True, true, true); DelTree(ExpandConstant('{app}\steamapps\common\Counter-Strike Global Offensive\maps'), True, true, true); DelTree(ExpandConstant('{app}\steamapps\common\Counter-Strike Global Offensive\scripts'), True, true, true); DelTree(ExpandConstant('{userdocs}\images'), True, true, true); DelTree(ExpandConstant('{userdocs}\maps'), True, true, true); DelTree(ExpandConstant('{userdocs}\scripts'), True, true, true); end; end; end; end; var ImagePanel: TPanel; ComponentsInfoImage: TBitmapImage; procedure ComponentsListClickCheck(Sender: TObject); begin If IsComponentSelected('LEON\DE_DUST2') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\leon_dust2.bmp')) else If IsComponentSelected('LEON\DE_INFERNO') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\leon_inferno.bmp')) else If IsComponentSelected('LEON\DE_MIRAGE') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\leon_mirage.bmp')) else If IsComponentSelected('LEON\DE_CACHE') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\leon_cache.bmp')) else If IsComponentSelected('LEON\DE_CBBLE') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\leon_cbble.bmp')) else If IsComponentSelected('LEON\DE_OVERPASS') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\leon_overpass.bmp')) else If IsComponentSelected('LEON\CS_ITALY') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\leon_italy.bmp')) else If IsComponentSelected('LEON\DE_TRAIN') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\leon_train.bmp')) else If IsComponentSelected('LEON\DE_NUKE') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\leon_nuke.bmp')) else If IsComponentSelected('FROOSH\DE_DUST2') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\froosh_dust2.bmp')) else If IsComponentSelected('FROOSH\DE_INFERNO') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\froosh_inferno.bmp')) else If IsComponentSelected('FROOSH\DE_MIRAGE') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\froosh_mirage.bmp')) else If IsComponentSelected('FROOSH\DE_CACHE') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\froosh_cache.bmp')) else If IsComponentSelected('FROOSH\DE_CBBLE') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\froosh_cbble.bmp')) else If IsComponentSelected('FROOSH\DE_OVERPASS') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\froosh_overpass.bmp')) else If IsComponentSelected('FROOSH\DE_SEASON') then ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\froosh_season.bmp')); end; procedure InitializeWizard(); begin WizardForm.TYPESCOMBO.Visible:= false; WizardForm.ComponentsList.Visible := True; WizardForm.ComponentsList.Height := ScaleX(100); WizardForm.ComponentsList.Top := ScaleX(47); WizardForm.ComponentsList.Width := ScaleX(232); WizardForm.ComponentsDiskSpaceLabel.Visible := False; ImagePanel := TPanel.Create(WizardForm); ImagePanel.Parent := WizardForm.SelectComponentsPage; ImagePanel.Caption := ''; ImagePanel.Top := ScaleX(47); ImagePanel.Left := ScaleX(240); ImagePanel.Width := ScaleX(177); ImagePanel.Height := ScaleX(101); ImagePanel.BevelInner := bvRaised; ImagePanel.BevelOuter := bvLowered; ExtractTemporaryFile('leon_dust2.bmp'); ExtractTemporaryFile('leon_inferno.bmp'); ExtractTemporaryFile('leon_mirage.bmp'); ExtractTemporaryFile('leon_cache.bmp'); ExtractTemporaryFile('leon_cbble.bmp'); ExtractTemporaryFile('leon_overpass.bmp'); ExtractTemporaryFile('leon_italy.bmp'); ExtractTemporaryFile('leon_train.bmp'); ExtractTemporaryFile('leon_nuke.bmp'); ExtractTemporaryFile('froosh_dust2.bmp'); ExtractTemporaryFile('froosh_inferno.bmp'); ExtractTemporaryFile('froosh_mirage.bmp'); ExtractTemporaryFile('froosh_cache.bmp'); ExtractTemporaryFile('froosh_cbble.bmp'); ExtractTemporaryFile('froosh_overpass.bmp'); ExtractTemporaryFile('froosh_season.bmp'); WizardForm.ComponentsList.OnClickCheck:= @ComponentsListClickCheck; ComponentsInfoImage:= TBitmapImage.Create(WizardForm); ComponentsInfoImage.Parent:= ImagePanel; ComponentsInfoImage.Top:= ScaleY(4); ComponentsInfoImage.Left:= ScaleX(4); ComponentsInfoImage.Width:= ScaleX(168); ComponentsInfoImage.Height:= ScaleY(92); ComponentsInfoImage.Stretch:= True; ComponentsInfoImage.BringToFront; end; procedure CurPageChanged(CurPageID: Integer); begin case CurPageID of wpSelectComponents: ComponentsListClickCheck(nil); end; end; |
Цитата:
|
TheLeon, Исправил:
Код:
[Code] |
Nordek, спасибо.
|
Не понятно что за "Файл 147853"
Цитата:
Если не хватает места для прикрепления например картинок - используйте хостинг картинок. |
Nordek, "Файл 147853" - это был весь проект(на всякий если кому-нибудь понадобится для проверки), но решил удалить.
|
Помогите пожалуйста, знаю наверняка 100500 раз это спрашивали, но никак не могу найти подходящую формулу.
Нужно, перед установкой программы, проверить, установлена ли до этого данная программа и, если установлена, то запустить её стандартную деинсталляцию. После удаления продолжить инсталляцию. Я нарыл такой код, но он у меня никак не проявляет себя: Код:
[Code] |
Доброе время суток. Помогите решить проблему. Указал минимальную версию 0,6.4 (Win 10) в Setup'е, но при запуске выдает ошибку о том, что программа не может быть установлена
|
ErikPshat,
Код:
[Setup] |
Цитата:
Скрытый текст
What browser am I using? Is my browser up to date?
What browser am I using? Mr. Whoer Windows NT Код:
Mozilla/5.0 (Windows NT 6.4; Win64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36 Код:
Mozilla/5.0 (Windows NT 10.0; Win64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36 Цитата:
Указав MinVersion 6.3 - уже будет блокировать Windows 10. Укажите: Код:
MinVersion=0,6.2 |
habib2302, спасибо! Проверил, отлично работает по умолчанию.
|
Цитата:
старый инно, манифест давно не обновлялся вот и путает установщик 0,6.3 с Win 10 лично я определяю версию по ntoskrnl.exe Код:
[CODE] |
Можете посмотреть правильно ли я прикрути к ISDone новую форму окна отмены установки
Вот код новой формы окна отмены установки Код:
var Код:
procedure CancelButtonOnClick(Sender: TObject); |
Доброе время суток. Как отключить в деинсталляторе диалог с процессбаром оставив msgbox?
|
Доброе время суток. Решил перейти на обычную (не расширенную) версию innosetup. При переходе решил изменить код. Но дело в том, что перестала работать ботва т.е. не отображаются картинки. Помогите решить проблему.
https://yadi.sk/d/Dcs1Az1T3Mz4BM |
habib2302,
Цитата:
|
|
habib2302,
Тогда так:
[Setup] AppName=My Program AppVerName=My Program v 1.5 DefaultDirName={pf}\My Program OutputDir=. [code] function InitializeUninstall:boolean; var rcode: Integer; begin Result:= False; if not UninstallSilent then begin Exec(ExpandConstant('{uninstallexe}'), '/VERYSILENT', '', SW_SHOW, ewNoWait, RCode); Exit; end; if MsgBox('Вы действительно хотите удалить программу?', mbConfirmation, MB_YESNO) = IDYES then Result:= True; MsgBox('Программа полностью удалена', mbInformation, mb_ok); end; |
Как запускать дополнительное приложение во время установки?
Допустим идет установка приложения: адрес_установки/test/test.exe адрес_установки/test/data/packer.exe адрес_установки/test/data/00/file01 адрес_установки/test/data/00/file02 адрес_установки/test/data/00/file03 адрес_установки/test/data/00/fileXX адрес_установки/test/data/01/file01 адрес_установки/test/data/01/file02 адрес_установки/test/data/01/file03 адрес_установки/test/data/01/fileXX После распаковки этих файлов должна запуститься консоль и запаковать папки "00" и "01" в специальне архив с помощью packer.exe. В консоли это будет выглядеть так: Код:
packer.exe 00 После чего консоль закрывается и приложение считается установленным. Как это устроить? |
vk_k14m@vk, что мешает сделать это даже до создания инсталляции? Что мешает «запаковать папки "00" и "01" в специальне архив с помощью packer.exe» на месте и поместить в инсталляцию уже готовый архив?
|
Цитата:
Вот по этому и нужно раскидать по папками нужные файлы и в конце их запаковать. |
Цитата:
|
Цитата:
Код:
[Run] |
Dodakaedr, для обычной версии inno setup это ничего не меняет. как не отображались так и не отображаются
|
Цитата:
Типа такого
Код:
ImgPanel := TPanel.Create(wizardform); |
Цитата:
И еще один вопрос. Архивы созданы с помощью packer.exe буду удаляться при удалении приложения? Ах да, нужно же потом удалить те временные папки после запаковки. Как это сделать? |
Цитата:
|
Цитата:
|
Цитата:
А так: Код:
[UninstallDelete] Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Теперь другой вопрос Цитата:
Тоесть 30 гигов весят папки, +примерно гигов 33 будут весить архивы после запаковки. И всего будет нужно 63 гига просто что б установить приложение. Для экономии места было б удобно удалять папку сразу после того как ее запаковали, а потом преступать к запаковке следующей папки. Так место требуемое для установки сократится в два раза. |
vk_k14m@vk, есть мнение, что Вам с такими объёмами и запросами пора бы уже не просто задавать вопросы, но и самому всерьёз взяться за изучение Pascal scripting.
|
Цитата:
Код:
[Run] |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Вопрос. В секции [Files] важна последовательность?
Например такое выражение: Код:
[Files] Последовательность имеет значение? По логике сначала должен установится D:\Inno Setup\Installer\1 Main Files\test\testapp.exe а потом его должен заменить D:\Inno Setup\Installer\2 Addon\test\testapp.exe Я прав? |
vk_k14m@vk,
Да, влияет на порядок установки. А ещё, группировка однородных файлов повысит коэффициент сжатия при компиляции. |
Цитата:
|
Цитата:
Справка » Вкладка Указатель » В поиске вводите: MergeDuplicateFiles Результат: Цитата:
Также могут быть полезными флаги, например: solidbreak Если непрерывное сжатие включено, этот флаг указывает компилятору завершить текущий поток сжатия и начать новый перед сжатием файла(ов) соответствующих источнику. Это позволяет программе установки быстро найти файл без необходимости вначале извлекать перед ним все остальные файлы. Может быть полезным в большом, многокомпонентном инсталляторе в том случае, если Вы считаете, что на распаковку файлов тратится слишком много времени, относящихся к компонентам, которые не были выбраны. nocompression Запрещает компилятору сжимать файл. Устанавливайте этот флаг для файлов, сжатие которых не принесет пользы (например, изображения в формате JPED) для того, чтобы ускорить процесс компиляции и сохранить несколько байт в полученном инсталляторе. |
vk_k14m@vk,
Цитата:
Имеется недостаток. Муторно это каждый файлик прописывать, проще и быстрее сразу папкой бахнуть типа Source:"tc9.app\x64\*"; Эффект есть, но не такой чтобы ВАУ. |
mig73, из того, что отчасти может быть существенным для непрерывных архивов WinRAR, вовсе не следует существенность того же механизма для инсталляций InnoSetup.
Вы на какую информацию по InnoSetup опираетесь в данном случае? |
Iska,
Что значит "на какую информацию"? Когда готовил кошерную сборку Total Commander, то задался вопросом минимизации инсталера, поскольку не люблю тему с хламом и более 50 МБ. Информация есть в справке, а кое-что подбиралось опытным путём. |
Цитата:
Цитата:
Сейчас мое тестовое приложение занимает 12 гигов, установщик 6 гигов. Тоесть сжимает всего на 50%. |
Понимаю, WinRAR просто чтоб пояснить принцип сей кутерьмы. Если хучева куча файлов, то и не заморачивайтесь, профит не особый, но работает. Для проверки можно с десяток разных типов взять и в тестовом режиме создать скрипт. Для максимального сжатия использую такие параметры
Код:
;---compression--- |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
при немного другой группировке файлов, размер увеличивается на 200 Кб, чего я не желаю :) Цитата:
|
mig73, спасибо, Ваша мысль понятна.
Перевод, конечно, тот ещё. solid compression — уплотнённое сжатие, масло масляное? В текущей версии, кстати, никаких упоминаний про LZMA/BZIP. Скрытый текст
Цитата:
В общем, реальная польза может быть в том случае, если используется solid+группировка файлов, похожих по содержимому (расширение же тут постольку-поскольку)+размеры файлов вмещаются в размер окна сжатия. И, действительно, это очень похоже на тот же механизм, что используется в WinRAR. Цитата:
|
Цитата:
Скрытый текст
Цитата:
Цитата:
Скрытый текст
Последовательность следует сверху вниз.
Например включено в инсталлятор: Код:
[Files] Если: Код:
[Files] Также в таком случае: Код:
[Files] Аналогично: Код:
Source: C:\WINDOWS\Fonts\*; DestDir: {app}\Fonts; Flags: ignoreversion recursesubdirs createallsubdirs Лучшее сжатие интересует? Скрытый текст
Совместно с SolidCompression используйте флаг sortfilesbyextension
Цитата:
Код:
[Setup] Также: Цитата:
Код:
[Setup] |
Цитата:
А вот про это: Цитата:
|
Цитата:
Так же если у меня включены компоненты, например папка "1" устанавливается в любом случае, а папки "2а" и "2b" ставятся на выбор. То к этим трем папкам нужно добавлять флаги "solidbreak". Что б сэкономить время на распаковку "2а" если ее не нужно устанавливать? |
Цитата:
Цитата:
|
Цитата:
|
vk_k14m@vk,
У вас объёмный инсталлятор и совместно с SolidCompression может имеет смысл использовать флаг solidbreak. sortfilesbyextension тоже использую, но это наверное эффективно не сработает когда в типе файла информация совсем другая. Например в drv, вовсе не бинарник, а текст. |
Народ. У меня проблемы с упаковкой. Inni Setup в секции [Files] игнорирует все дальше второй строчки. Первые две запаковывает остальные пропускает. В чем может быть причина?
Скрытый текст
Код:
; Этот сценарий создан с помощью Мастера Inno Setup. |
|
Меня лично терзают смутные сомнения насчёт возможно пропущенного обратного слэша, начиная как раз после второй строчки:
Цитата:
|
Цитата:
"C:\Folder\App Files*" то компилятор будет рекурсивно включать файлы с именем "App Files" любых расширений, а также войдут все каталоги с подкаталогами которые находились в текущем каталоге. На выходе будут извлечены файлы с таковыми именами. Также на выходе будут созданы каталоги и подкаталоги, но каталоги с подкаталогами будут пустыми. Если пользователь укажет: "C:\Folder\App Files\*" то компилятор рекурсивно включит всё содержимое из каталога App Files. |
Nordek, это-то понятно. Я имею в виду: в первой-второй строках указан каталог «Artificial Academy 2», а далее якобы файлы, начинающиеся тоже на «Artificial Academy 2»? Ну, явная же описка!
|
Цитата:
по адресу 1 Main Files\Artificial Academy 2 у меня основные файлы установки. Дальше, моды которые заменяют некоторые основные файлы. По этому я так же назвал их Artificial Academy 2. Это как если бы ты вручную копировал основные файлы, а потом в ту же папку кидал моды с заменой. |
Цитата:
P.S. Видимо, мне пора нанимать пресс-секретаря, ибо в очередной раз меня поняли с точностью до наоборот. |
Цитата:
Цитата:
Цитата:
Скрытый текст
Единственное что может сбить с толку, это вопрос.
Например при всём этом, так или иначе стоило бы уточнить: Цитата:
Но ведь мы редко уточняем "Что на самом деле происходит?", как ясновидцы сразу предлагаем ответ - От чего зачастую случаются недопонимание, недоразумения, конфликты. Будь ответ правильным - то вопросов вообще никаких не возникло бы, даже в мыслях не зародились. Правильно составленный вопрос - это половина ответа. |
Привет народ, снова я. Я вам еще не надоел?
Снова нужен ответ. С помощью секции [Run] можно запустить любое приложение после распаковки всех файлов. А можно ли тоже самое провернуть ДО распаковки? Суть в чем, если помните моя инсталляция распаковывает "распакованные" файлы, и в конце их запаковывает. И так же установка выборочная. Если кто-то установит "легкую" версию, а потом захочет до-установить что-то. То ему нужно будет полностью удалять приложение и ставить с нуля. Так как инсталляция распакует нужные файлы а в конце снова их запакует чем создаст дубликаты архивов (так уже работает тот пакер). По этому при повторной установке перед распаковкой нужно запустить файл (батник) который бы снова распаковал установленные ранее архивы. Как это сделать? Это получается что этот батник должен сначала распаковаться, потом прекратить установку остальных файлов, и только после его закрытия распаковка должна продолжиться. И это должно происходить только если программа уже была ранее установлена. Это не слишком сложно сделать? З.Ы. Кто-то сталкивался с подобными запаковывающими/распаковывающими приложениями которые через консоль работают? Может подскажите какие могут быть аргументы что б приложение не создавало дубликат уже существующего архива, а заменяло его? В описании программы нет вообще никаких данных о работе через консоль. Только "кинуть на него архива для распаковки" и "кинуть папку для запаковки". |
vk_k14m@vk, в справке прочти раздел installation order и Event Functions, ты поймешь что выполнять можно на разных этапах, и задай более осмысленный вопрос, например в какой момент нужно запускать твой батник
Цитата:
|
Цитата:
И я вроде достаточно подробно описал когда этот файл должен запускаться. 1-я установка, этот файл не запускается. Если приложение УЖЕ установлено и кто-то снова запускает установку. Тот этот файл должен быть извлечен самым первым, и сразу же после извлечения дальнейшее извлечение должно быть приостановлено до завершения работы этого файла. Потом извлечение продолжается. Вроде все ясно, вот запускаешь ты установщик с уже установленным приложением, листаешь далее далее, выбираешь создавать не создавать ярылки, и потом с нажатием кнопки "установить". сразу извлекается и запускается этот файл, и после завершение этого файла извлечение продолжается в обычном режиме. Цитата:
|
Цитата:
Я обычно делаю так Код:
[Files] |
Цитата:
[code] procedure install_this_file(); var res:integer; file, path : string; begin file := ExpandConstant('{tmp}\AA2Decrypt_unpack.bat'); path := ExpandConstant('{tmp}'); if FileExists(file) then Exec(file, 'параметры',path,SW_SHOW,ewWaitUntilTerminated,res) else MsgBox('Файл') + ' ' + file + #13#10 + 'не найден' ), mbInformation, MB_OK); end; Function AA2Decrypt_fix_unpack.bat():boolean; begin if это_приложение_уже_установлено then Result := True else Result := False; end; А вот когда меняю ' на " то красный текст меняет цвет. |
vk_k14m@vk, это подсветка синтаксиса
|
Там, безо всякой подсветки, несогласованность скобок наблюдается невооружённым глазом:
Цитата:
|
да после 'Файл' скобка не нужна
простите напутал при переделке под пост |
Продолжаем викторину "помоги тупому". Вопрос дня - Что я делаю не так...
Скрытый текст
Код:
; Этот сценарий создан с помощью Мастера Inno Setup. |
|
Цитата:
if это_приложение_уже_установлено then Result := True else Result := False; это_приложение_уже_установлено ведь нужно на что-то заменить? |
Цитата:
|
парни подскажите как сделать что бы одновременно шла установка и показывался splash
|
Цитата:
if {#MyAppName} then Result := True else Result := False; |
if ExpandConstant('{#MyAppName}')...
|
Цитата:
Скрытый текст
|
vk_k14m@vk, под if'ом должна быть логическая переменная
|
Цитата:
|
Цитата:
Splash:
Код:
[Setup] Код:
1 2 3 4 5 6 7 Background:
Код:
[Setup] Код:
1 2 3 4 5 |
Ответьте кто нибудь, как работает этот код?
Код:
[Files] AppName=Artificial Academy 2 Приложение которое должно запускаться перед началом установки: D:\Inno Setup\Installer\0 Delete after install\AA2Decrypt_unpack.bat |
Цитата:
тебе понятно как работают секции Инно, в частности Files? если да - продолжаем, если нет - читай справку в частности по ключевым словам что я тебе давал про порядок установки В ней дисительно расписано нормально если функция Уже_установленное_приложение возвращает True то строчка с Check: Уже_установленное_приложение; Код:
Check: Уже_установленное_приложение; Source: сразу_извлекается_и_запускается_этот_файл.exe; DestDir: {tmp}; BeforeInstall: ChangeCaption('Установка этого файла'); AfterInstall: install_this_file; Flags: ignoreversion recursesubdirs createallsubdirs; В строке присутствуют процедуры BeforeInstall и AfterInstall Первая работает перед копированием Source: сразу_извлекается_и_запускается_этот_файл.exe, вторая - после. После копирования файла Source: сразу_извлекается_и_запускается_этот_файл.exe запускается процедура AfterInstall: install_this_file, которая содержит запуск файла сразу_извлекается_и_запускается_этот_файл.exe из папки DestDir: {tmp} Отсюда побочный вывод: если копируется не один файл а папка с набором файлов то AfterInstall: нечто будет запускаться после копирования каждого файла из папки что может как минимум затормозить установку и вызвать непредвиденные последствия ____________ Всё что я расписал есть в справке, легко находится по словам Check, BeforeInstall и AfterInstall |
Цитата:
Так что я переименовал Check: Already_Installed_Application; Потом, инстеллер компилируется. Но потом когда пытаюсь установить свое приложение, выскакивает ошибка в этой строчке Function Already_Installed_Application():boolean; begin if это_приложение_уже_установлено then Result := True else Result := False; end; Приложение вообще не устанавливается. Значение это_приложение_уже_установлено нужно изменять на свое? Там нужно вписывать название приложение которое устанавливает инсталлер? Когда пишу ExpandConstant('{#MyAppName}') тоже ошибка. Как же заставить его работать... Цитата:
BeforeInstall: ChangeCaption('Установка этого файла') Так что он в этом случае бесполезен. |
Цитата:
vk_k14m@vk, загрузите себе перевод, поблагодарите коллегу mig73 за выложенное и читайте, читайте, читайте. |
Все работает, просто убрал проблемные строчки
Function Already_Installed_Application():boolean; begin if это_приложение_уже_установлено then Result := True else Result := False; end; и пошло как по маслу. Правда теперь то приложение при любой установке запускается. Зато лишней мороки с кодом нет... |
я то конечно для наглядности сделал русские идентификаторы и по наивности подумал что будет всё ясно, в т.ч что идентификаторы нужно поменять на английские
Цитата:
|
Цитата:
|
Цитата:
Цитата:
как ни советовали |
R.i.m.s.k.y. Извиняюсь, с чего началась тема подзабыл.
"распакованные" файлы, запакованные файлы, батник, консоль. Только "кинуть на него архива для распаковки" и "кинуть папку для запаковки" - Тяжело сразу понять данное ассорти. Я понимаю это игра. Мне подумалось что одни файлы нужно распаковать через один чекбокс, другие через другой чекбокс, сделать проверку на данные чекбоксы, ну и на запуск установленного исполняемого файла. Такие темы нужно более детально расписывать. |
ZVSRus, уот энто уот фсио на энтой странице
я пыталсо F1 но не алё |
Цитата:
Так установка прекрасно работает. Но если кто-то установил чистый вариант игры, а потом решит что-то добавить? Тот батник уже не будет правильно работать, и придется полностью удалять игру и ставить заново. По этому нужен второй батник, который перед началом установки будет делать обратное действие - распаковывать эти *.рр архивы что б их можно было дополнить, и опять в конце установки запаковать. Сначала я хотел что б этот второй батник запускался только в том случае, если эта игра уже была установлена и установщик запускают второй раз. Но не сложилось. Остановился на том что он всегда будет запускаться. И если файлов для распаковки нет, то он работает в холостую... |
vk_k14m@vk
Это полный пи....! Набор ахинейских фраз и предложений. Вы хоть понимаете что вам на 3 страницы писанины никто не может ответить, потому что никто толком не может вас понять до конца. На 213 странице где ваш скрип, это каша, Check: AA2Decrypt_unpack; чековая проверка пишется в конце строки (я вставляю данную проверку перед флагами). В секции [Files] все строки должны начинаться с Source: (во всяком случае чековую проверку в начале строки никогда не встречал). У вас есть чековая функция Function AA2Decrypt_unpack():boolean;, а где сам чекбокс, или что у вас там, я нигде не нашел то, на что ссылается данная проверка. Artificial Academy 2* это так и должно быть, или все же между двойкой и звездочкой должна стоять наклонная черта. Source: "D:\Inno Setup\Installer\2a [AA2][Uncensor][3D MK-III][FA][v2.0][Various]\Artificial Academy 2*"; - почти все строки так. Я понял только одно: У вас 2 батника, один распаковывается во временную папку и от туда через код запускается. DestDir: "{tmp}"; Source: "D:\Inno Setup\Installer\0 Delete after install\AA2Decrypt_unpack.bat"; DestDir: "{tmp}"; BeforeInstall: ChangeCaption('AA2Decrypt_unpack.bat'); AfterInstall: install_this_file; Check: AA2Decrypt_unpack; Второй батник в конце установки через секцию [Run] что то упаковывает. Все остальные папки что в секции [Files] через те или иные компоненты что в секции [Components] устанавливаются в директорию DefaultDirName=D:\Games\{#MyAppName}. Теперь вопрос, что нужно запускать или устанавливать через чекбокс или через что другое? Объясните подробно но кратко, своими простыми словами. |
ZVSRus, как раз это
Function Уже_установленное_приложение():boolean; begin if это_приложение_уже_установлено then Result := True else Result := False; end; я удалил. По тому что оно не работает. И нет объяснений как оно должно работать. А между двойкой и звездочкой должна стоять наклонная черта. Но я их специально по убирал что б протестировать работу установщика, и не ждать 8 часов пока все запакуется. Check: у меня в начале по тому что я скопировал ее из этого поста. Цитата:
Сейчас у меня все выглядит так: Скрытый текст
; Этот сценарий создан с помощью Мастера Inno Setup.
; ОБРАТИТЕСЬ К СПРАВОЧНОЙ ДОКУМЕНТАЦИИ, ЧТОБЫ ИСПОЛЬЗОВАТЬ ВСЕ ВОЗМОЖНОСТИ INNO SETUP! #define MyAppName "Artificial Academy 2" #define MyAppVersion "2.0.1" #define MyAppPublisher "Illusion" #define MyAppExeName "AA2Play.exe" [Setup] ; Примечание: Значение AppId является уникальным идентификатором для этого приложения. ; Не используйте одно и тоже значение AppId для разных приложений. ; (Для создания нового значения GUID, выберите в меню "Инструменты" пункт "Создать GUID".) AppId={{37EDDB6D-1F9B-474F-8FF4-57CC8277B1A7} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} DefaultDirName=D:\Games\{#MyAppName} DefaultGroupName={#MyAppName} AllowNoIcons=yes OutputDir=D:\Inno Setup OutputBaseFilename=setup SetupIconFile=D:\Inno Setup\Installer\ico.ico WizardImageFile=D:\Inno Setup\Installer\WizardImage.bmp WizardSmallImageFile=D:\Inno Setup\Installer\WizardSmallImage.bmp Compression=lzma2/ultra64 SolidCompression=yes DiskSpanning=yes DiskSliceSize=1536000000 [Languages] Name: "russian"; MessagesFile: "compiler:\Languages\Russian.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Components] Name: "Main"; Description: "Artificial Academy 2"; Types: full compact custom; Flags: fixed Name: "Anticensor"; Description: "Антицензор"; Types: custom Name: "Anticensor\MKIII"; Description: "МКIII"; Types: custom; Flags: exclusive Name: "Anticensor\MKIII\clothes"; Description: "Пак одежды для MKIII анцензора"; Types: custom; Flags: exclusive Name: "Anticensor\MKIII\clothes\garter_belt"; Description: "Аддон на подвязки"; Types: custom; Name: "Anticensor\SVII"; Description: "SVII"; Types: custom; Flags: exclusive Name: "Anticensor\SVII\clothes"; Description: "Пак одежды для SVII анцензора"; Types: custom; Flags: exclusive Name: "Anticensor\SVII\clothes\texture"; Description: "Пак текстур для одежды"; Types: custom; Name: "Anticensor\SVII\clothes\extra_a"; Description: "Extra A пак одежды для SVII анцензора"; Types: custom; Name: "Anticensor\SVII\clothes\extra_a\texture"; Description: "Пак тестур для одежды Extra A"; Types: custom; Name: "Anticensor\SVII\clothes\extra_h5"; Description: "Extra H5 пак одежды для SVII анцензора"; Types: custom; Name: "Anticensor\SVII\clothes\extra_h5\texture"; Description: "Пак тестур для одежды Extra H5"; Types: custom; Name: "Anticensor\SVII\clothes\garter_belt"; Description: "Аддон на подвязки"; Types: custom; Name: "Hairpack"; Description: "Пак дополнительных причесок"; Types: custom; Name: "Override"; Description: "Пак дополнительных лиц и причесок"; Types: custom; Name: "Russification"; Description: "Русификатор"; Types: custom; Name: "Russification\Hlimitation_yes"; Description: "Ограничение H-сцен"; Types: custom; Flags: exclusive Name: "Russification\Hlimitation_no"; Description: "Без аграничения"; Types: custom; Flags: exclusive Name: "ProgramFiles"; Description: "Дополнительные приложения"; Types: custom; Name: "ProgramFiles\AA2Install"; Description: "AA2Install"; Types: custom; Name: "ProgramFiles\ReiEditAA2"; Description: "ReiEditAA2"; Types: custom; Name: "ProgramFiles\AA2Face"; Description: "AA2Face"; Types: custom; [Files] Source: "D:\Inno Setup\Installer\0 Delete after install\AA2Decrypt_unpack.bat"; DestDir: "{app}"; BeforeInstall: ChangeCaption('Установка этого файла'); AfterInstall: install_this_file; Flags: ignoreversion recursesubdirs createallsubdirs Source: "D:\Inno Setup\Installer\1 Artificial Academy 2\Artificial Academy 2\*"; DestDir: "{app}"; Components: Main; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension Source: "D:\Inno Setup\Installer\2a [AA2][Uncensor][3D MK-III][FA][v2.0][Various]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Anticensor\MKIII; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\2a1 [AA2][HEXA Clothing Collection][MK-III][v5.2][Various]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Anticensor\MKIII\clothes; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\2a2 [AA2][HEXACC][Garter Belt][v1.5][Various]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Anticensor\MKIII\clothes\garter_belt; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\2b [AA2][SVII Uncensor][3D Pubes][All-In-One][v1.6]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Anticensor\SVII; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\2b1 [AA2][SVII Clothing Collection][3D Pubes][v5.0]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Anticensor\SVII\clothes; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\2b1a SVII Clothing Collection - Texture Pack v5.0\Artificial Academy 2\*"; DestDir: "{app}"; Components: Anticensor\SVII\clothes\texture; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\2b2 [AA2][SVII Clothing Collection][Extra A][3D Pubes][v1.2.1]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Anticensor\SVII\clothes\extra_a; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\2b2a SVII Clothing Collection - Extra A - Texture Pack v1.2\Artificial Academy \2*"; DestDir: "{app}"; Components: Anticensor\SVII\clothes\extra_a\texture; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\2b3 [AA2][SVII Clothing Collection][Extra H5][Uncensored][v1.0]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Anticensor\SVII\clothes\extra_h5; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\2b3a SVII Clothing Collection - Extra H5 - Texture Pack v1.0\Artificial Academy 2\*"; DestDir: "{app}"; Components: Anticensor\SVII\clothes\extra_h5\texture; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\2b4 [AA2][SVII Clothing Collection][Garter Belt][v1.5]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Anticensor\SVII\clothes\garter_belt; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\3 [AA2][HEXA Hairpack][RE][v3.0][Various]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Hairpack; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\4 [AA2][HEXA Override Collection][v3.5][Various]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Override; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\5a [AA2][Interface][Russian user interface v.1][AVA]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Russification; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\5b [AA2][Interface][Russian user interface v.5][AVA]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Russification and Anticensor; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\5ba [AA2][Interface][Russian user interface v.5][AVA]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Russification and Anticensor\MKIII; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\5bb [AA2][Interface][Russian user interface v.5][AVA]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Russification and Anticensor\SVII; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\5bxa [AA2][Interface][Russian user interface v.5][AVA]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Russification\Hlimitation_yes and Anticensor; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\5bxb [AA2][Interface][Russian user interface v.5][AVA]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Russification\Himitation_no and Anticensor; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\AA2Install v7 b3.1\Artificial Academy 2\*"; DestDir: "{app}"; Components: ProgramFiles\AA2Install; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\ReiEditAA2 0.9.5.3b\Artificial Academy 2\*"; DestDir: "{app}"; Components: ProgramFiles\ReiEditAA2; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\SVII Clothing Collection - ReiEdit v5.0\Artificial Academy 2\*"; DestDir: "{app}"; Components: ProgramFiles\ReiEditAA2 and Anticensor\SVII; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\HEXA Override Collection - ReiEdit\Artificial Academy 2\*"; DestDir: "{app}"; Components: ProgramFiles\ReiEditAA2 and Override; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\AA2Face 1.4.2\Artificial Academy 2\*"; DestDir: "{app}"; Components: ProgramFiles\AA2Face; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "D:\Inno Setup\Installer\0 Delete after install\Artificial Academy 2\*"; DestDir: "{app}"; Components: Main; Flags: ignoreversion recursesubdirs createallsubdirs deleteafterinstall solidbreak ; Примечание: Не используйте' флаги "ignoreversion" для общих системных файлов. [code] procedure install_this_file(); var res:integer; file, path : string; begin file := ExpandConstant('{app}\AA2Decrypt_unpack.bat'); path := ExpandConstant('{app}'); if FileExists(file) then Exec(file, 'параметры',path,SW_SHOW,ewWaitUntilTerminated,res) else MsgBox('Файл' + ' ' + file + #13#10 + 'не найден', mbInformation, MB_OK); end; procedure ChangeCaption(str: string); begin WizardForm.StatusLabel.Caption:= str; end; [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Run] Filename: "{app}\data\AA2Decrypt.bat"; WorkingDir: {app}/data; Description: Упаковка папок...; Flags: waituntilterminated [UninstallDelete] Name: {app}\data\*.pp; Type: files AA2Decrypt.bat - должен всегда запускаться после распаковки всех файлов. AA2Decrypt_unpack.bat - хотелось бы что б запускался только при повторной установке. Тоесть я установил приложение. А потом снова запускаю установщик, и в самом начале извлекается и запускается самый первый файл из списка - AA2Decrypt_unpack.bat. Пока он работает дальнейшее извлечение файлов не идет. И только когда этот батник закрывается, установка (извлечение) продолжится в обычном режиме. Это я уже все подробно расписывал... |
|
Цитата:
|
Цитата:
Скрытый текст
ну ясен-красен что это пример с аллегорией
|
vk_k14m@vk
Загляни в личку. R.i.m.s.k.y. Извиняюсь, но вы тоже не правы, человеку нужно готовое решение. Вы же видите что ему в не догадку поменять это_приложение_уже_установлено например на if AA2Decrypt_unpack then Result := True else Result := False;, придет время и он будет подсказывать. |
Цитата:
хотя наверное я слишком многого ждал |
Цитата:
Function Уже_установленное_приложение():boolean; begin if это_приложение_уже_установлено then Result := True else Result := False; end; Я ж думал что Уже_установленное_приложение и это_приложение_уже_установлено должны называться по разному. Я даже думал что это_приложение_уже_установлено нужно заменить на название игры которую устанавливается. Хватит об этой теме уже. Я надеялся что мне принесут все готовое, но сильно губу раскатал. С кем не бывает. Есть еще пара других вопросов. Я уже практически закончил свой установщик и скоро от вас отстану) 1) Для игры есть две версии русификатора, v1 для "чистой" игры, и v5 для игры с антицензором. И так же для v5 есть еще маленькая опция которой нет в v1. И вот эта опция (ограничение/без ограничений) должна быть неактивна если не поставить галочку на антицензор. Код:
[Components] 2) Вернемся к версии русификатора в секции [Files] добавлены две папки, в одной лежат файлы от v1 во второй от v5. Код:
Source: "D:\Inno Setup\Installer\5a [AA2][Interface][Russian user interface v.1][AVA]\Artificial Academy 2\*"; DestDir: "{app}"; Components: Russification; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak З.Ы. То как я написал во второй строчке Components: Russification and Anticensor; это верно? Сам InnoSetup ошибку не показывал. 3) Опять же спрашиваю, можно ли такое осуществить... 4) "...\illusion locale loader.exe" /MKIII - если был выбран компонент Anticensor\MKIII и "...\illusion locale loader.exe" /CVII - если был выбран компонент Anticensor\SVII Скрытый текст
5) 6) Скрытый текст
|
Цитата:
[Setup] DisableWelcomePage=no В последних версиях страница приветствия по умолчанию отключена. Цитата:
Name: "Anticensor\Russification"; Name: "Anticensor\Russification\Hlimitation_yes"; Name: "Anticensor\Russification\Hlimitation_no"; как то так |
Цитата:
Цитата:
|
vk_k14m@vk
В первом коде и во втором вы противоречите себе И вот эта опция (ограничение/без ограничений) должна быть неактивна если не поставить галочку на антицензор. И вот v1 не должна устанавливаться если был выбран компонент "Anticensor". Эти две строки противоречат друг другу |
Цитата:
|
vk_k14m@vk
[Components] Name: "Anticensor\Russification"; Description: "Русификатор"; Types: custom; Name: "Anticensor\Russification\Hlimitation_yes"; Description: "Ограничение H-сцен"; Types: custom; Flags: exclusive Name: "Anticensor\Russification\Hlimitation_no"; Description: "Без аграничения"; Types: custom; Flags: exclusive [Files] Source: "ru.png"; DestDir: "{app}"; Components: Anticensor\Russification\Hlimitation_yes; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak Source: "en.png"; DestDir: "{app}"; Components: Anticensor\Russification\Hlimitation_no; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension solidbreak А так тоже не пойдет? PS: Вы это делаете для себя, или для всех? |
Цитата:
Цитата:
|
Цитата:
Цитата:
Неужели никак нельзя это устроить? Может дополнительные страницы создать, и на них некоторые компоненты выбирать. Например на главной странице оставить антицензор и русификатор, а вторая страница будет открываться только если на антицензоре и русификаторе поставили галочки, и уже на второй странице выбирать опцию ограничение/без ограничений. Цитата:
Цитата:
З.Ы. Ваш файл объемом 117.2 Kb превышает предел в 97.7 Kb, установленный на форуме для этого типа файлов. |
Цитата:
Цитата:
Цитата:
я вот уже вторую страницу не могу догнать краями чего всё-таки нужно сделать распиши по пунктам 0. Установщик состоит из компонентов: ... 0.1 каждому компоненту соответствует папка ... 1. если программа не установлена 1.1 берем это файло 1.2 кладем сюда 1.3 запускаем это 2 если программа установлена 2.1 кладем это файло сюда 2.2 запускаем это 2.3 копируем остальное файло туда даже лучше блоксхему нарисуй что в каких случаях ставится/запускается/распаковывается/закукоживается самому проще будет и это, я наверное первый буду, а каков критерий определения наличия уже установленной проги? это отсылка к Цитата:
|
R.i.m.s.k.y., уже матом хочется сказать. Как ты узнаешь установлен у тебя на компе например Microsoft Visual C++ 2015 года. Если он уже установлен и ты снова попытаешься его установить, установщик скажет тебе что он уже установлен? Или как нивчем не бывало продолжит установку? Если ты поставил на комп игру Doom. А потом случайно снова запустил установщик. Ну забыл ты что игра у тебя уже есть, склероз старческий. Тебе игра предложит установиться в тоже самое место, где она уже стоит. Откуда она это знает? Может она в реестре прописываеться? Что б потом через программы и компоненты ее можно было удалить. Или как то иначе?
Как все должно работать, в очередной раз тебе объясняю. Ты первый раз запустил установщик. Установщик проверяет есть ли такая игры на ПК, или еще нету. Если нету. то файл AA2Decrypt_unpack.bat не должен запускаться перед установкой. Если ты запускаешь установщик n-раз. Он проверяет установлена ли на компе эта игра или нет. Если игра установлена, то файл AA2Decrypt_unpack.bat запускается сразу после распаковки. Все. Это ж элементарно. Не нужно быть гением что б это понять. И вообще. Я же сказал закрыть эту тему. Если она для вас настолько сложная, не нужно в нее вникать. Просто забудь. |
Цитата:
Цитата:
|
R.i.m.s.k.y., еще раз тебе расскажу как все работает.
Вот смотри, внизу список которые распаковывает установщик. В каждой такой папке лежит 10-400 файлов. После их распаковки, в самом конце запускается файл AA2Decrypt.bat который запаковывает каждую эту папку в *.рр архив, а саму папку удаляет. Код:
D:\Inno Setup\Installer\1 Artificial Academy 2\Artificial Academy 2\data\jg2e00_00_00 Вот и получается, что при повторной установке, что б все работало как надо. Все *.рр архивы нужно снова сделать папки, а сами архивы удалить. Это и делает AA2Decrypt_unpack.bat. Цитата:
|
ZVSRus, вот держи список папок вместе с файлами
https://www.dropbox.com/s/rv4l5b0tdm...s_new.txt?dl=0 Но для этого я немного другую команду прописывал. dir "D:\Inno Setup\Installer" /ad /s /a /b /-p /o:gen >"D:\Inno Setup\files.txt" |
Цитата:
Цитата:
Не много стал понимать что к чему. Если ошибусь поправите. Если при повторной установке установщик увидит что программа установлена, запустится батник на упаковку всего содержимого, а папки, файлы начнет удалять? Так (это называется сделать бекап) Только я не понимаю одного, для чего делать бекап на 65 гигов? Предполагаю что 65 гигов будут бекапится не один час. А не проще сделать так, при повторной установке снести за пару минут предыдущую установку, и установить снова с чистого листа. Оба батника будут уже не нужны. |
Цитата:
Цитата:
|
vk_k14m@vk
Ну и последний вопрос, вы подумали о конечном пользователе! То что у вас прописано в секции [Components] вам нужно писать руководство, что, куда, и зачем, думаю конечный пользователь заплутается в данном частоколе. Ну да ладно. Удачи! |
Цитата:
|
Цитата:
Код:
[code] Более того, ProductCode индивидуален мало того что для каждого языка Microsoft Visual C++ 2015, так еще и для каждой его ревизии, получается целый паровоз вариантов Цитата:
Цитата:
Хороший по ключу реестра, характерного для приложения, и наличия экзешника, например вот так определяется наличие проги и её версии Код:
Function isSVPexist():boolean; Цитата:
установщик тупо посмотрит в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppName}_is1 и если его нет поведет себя как будто проги нет в системе, а если ее ставили с другого установщика у которого другой GUID или {#MyAppName}? Спорный способ Цитата:
|
R.i.m.s.k.y., забей уже. Меня вполне устраивает то что я сейчас имею. Не надо мне эти ваши сложные коды. Мне совсем немного осталось доделать...
Цитата:
|
Цитата:
Name: "{group}\{#MyAppName} Help"; Filename: "{app}\{#MyAppHelpName}"; IconFilename: "{app}\Help.ico"; |
vk_k14m@vk,
3) 4) Код:
[Components] |
Цитата:
Цитата:
Цитата:
Скрытый текст
Код:
[Components] |
Цитата:
El Sanchez, а можно поподробнее что в вашем коде? Особенно секция [Run] интересует. Вы сделали тоже самое что у меня делали *.bat файлы только через консоль самого InnoSetup? Без всплывающего окна CMD? Хм. А что в этот момент будет отображаться в установщике? Просто текст Распаковка pp-файлов/Снятие атрибута R c файлов/Удаление pp-файлов/Перепаковка pp-файлов/Удаление временных файлов? Без % и прогресс бара? Допустим *.рр файлы весят 30 гигов. Первая строчка распакует все *.рр архивы если они есть, это уже 30+30=60 гигов. В *.рр архивах файлы не то что без сжатия, они даже немного больше весить будут. Снятие атрибутов не знаю что такое. Потом удаления *.рр архивов. 60-30 снова 30 гигов. Понимаете к чему я виду? Для этой перепаковки нужно иметь на ПК в два раза больше места чем весит игра (эти *.рр файлы занимают 90% веса игры). Мой батник распаковывает не сразу все архивы. А по очереди. Распаковал 1, удалил, распаковал второй, удалил второй. Тоесть требует для работы около 10% от общего веса игры. 30 +10% =33 гига. Плюс в самом батнике у меня отображаются % выполнения. Криво правда, % считаются не от общей проделанной работы, а от количества архивов. Например всего 100 архивов, распаковано 50, и отображается 50%. Несмотря на то что 1 архив может 20 секунд распаковываться, а другой больше минуты. В общем я конечно благодарен за старания. Но боюсь этот вариант мне не подходит. |
Цитата:
|
Цитата:
1. for /d %? in (jg2*) do ""{tmp}\AA2Decrypt_fix.exe"" ""%?.pp""" - pp-архивы, если есть папка с таким же именем, что и у архива, передаются утилите AA2Decrypt_fix.exe на распаковку. 2. for /d %? in (jg2*) do attrib -r ""%?\*"" /s - в папках jg2* у файлов снимается ранее установленный атрибут readonly 3. for /d %? in (jg2*) do del /f /q ""%?.pp"" - удаляются pp-архивы, если есть папка с таким же именем, что и у архива. 4. for /d %? in (jg2*) do ""{tmp}\AA2Decrypt_fix.exe"" ""%?"" - папки jg2* пакуются, на выходе pp-архивы. 5. for /d %? in (jg2*) do rd /s /q ""%?"" - папки jg2* удаляются. Цитата:
Код:
[Run] Цитата:
|
Цитата:
К слову, если бы люди все те компоненты ставили вручную. То времени на установку они потратили бы гораздо больше. |
Итак народ. Еще вопросик. Нужно что б мой установщик вносил в реестр такие изменения.
Код:
Windows Registry Editor Version 5.00 Почитав справку я набрал это Код:
[Registry] |
Цитата:
|
Как добавить компонентам описание, при наведении на них курсор мыши? В Inno Setup help нашел нечто подобное.
Inno Setup Faq. Как добавить описание к компонентам в ComponentsList? Код:
[Setup] Скрытый текст
Вторая ошибка выскакивает если удалить строчку ComponentsListTVStyle=true Может ли это быть из-за того, что help написан для 5.5.9 а у меня 5.5.8? |
Вложений: 1
Цитата:
P.S У меня Inno Setup версии 5.5.1. Для обычной версии Inno Setup подойдёт этот пример из справки: Скрытый текст
Файл dll прикрепил выше. Код:
[Setup] |
Цитата:
Скрытый текст
В самом коде же не надо ничего менять? Скрытый текст
Код:
; Этот сценарий создан с помощью Мастера Inno Setup. |
Цитата:
Код:
type |
Цитата:
Или справа от компонента знак [?] поставить, при нажатии на который высветится описание. |
Добрый день!
В зависимости от выбранного компонента, создаётся страница задач с двумя чекбоксами. На страницу с задачами надо добавить возможность выбора папки для установки некоторых файлов, для определённой задачи. Я пытался сделать, но всё что нашел CreateInputDirPage(wpSelectTasks,...), т.е. после страницы задач создаётся страница выбора папки. А ведь надо эту возможность поместить именно на страницу wpSelectTasks и выровнять с учётом расположения имеющихся на ней чекбоксов. Как это сделать? |
парни помогите соединить 2 скрипта вместе
1 скрипт
Код:
function InitializeSetup(): Boolean; 2 скрипт
Код:
procedure ShowSplashScreen(p1:HWND;p2:AnsiString;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload'; |
pollipen, На работоспособность не проверял, лень производить входящее содержимое (из рода: файлы, каталоги).
Скрытый текст
Код:
[Code] |
Гуру, как в секции [code] проверить язык установки? В зависимости от языка нужно выполнить либо один набор команд, либо другой. В [Languages] задано три языка.
|
Ivn78,
Скрытый текст
Код:
[Setup] |
Добрый день. Прошу помощи в решении.
Для замены файла в папке files делаю так: [Files] Source: "C:\1\file1.txt"; DestDir: "c:\MyProgr\files\"; Flags: ignoreversion А как сделать так, чтобы: - если папки files нет, то программа не выполняла никаких действий; если есть, то производила замену\добавление файла. Благодарю всех откликнувшихся. |
Цитата:
Код:
[Files] |
boss911, спасибо большое
|
Еще помогите, плиз.
В инсталляторе создана пользовательская страница. Задача привязать к ней MsgBox, т.е. чтобы он появлялся сразу при переходе на кастомную страницу. Ведь вроде CurStep не видит "нарисованных" страниц? |
Цитата:
Код:
procedure CurPageChanged(CurPageID: Integer); |
nik1967,
Еще вопрос... В зависимости от определенных условий кастомная страница может создаваться, а может и нет. Если создана, то выполняется еще ряд условий. Как проверить наличие кастомной страницы? |
Ivn78, а не проще плясать от тех определённых условий, в зависимости от которых и создаётся/не создаётся кастомная страница?
С проверкой страницы что-то не сталкивался. Или может забыл :( |
nik1967,
Уже пляшу) просто думал, есть более кошерный способ |
Ivn78, воспользоваться функцией SaveStringToFile
Из справки
Pascal Scripting: SaveStringToFile
Прототип: function SaveStringToFile(const FileName: String; const S: AnsiString; const Append: Boolean): Boolean; Описание: Сохраняет указанную строку в указанный файл. Если Append является True и указанный файл уже существует, то текст будет добавлен к файлу, вместо его полной перезаписи. При успешном выполнении возвращает True, иначе False. Комментарии: Эта функция автоматически не записывает символ перевода строки. Если Append является True и в конце существующего файла отсутствует символ перевода строки, функция добавит содержимое переменной S к последней строке. Чтобы избежать этого, вы можете поместить символы перевода строки перед и после вашей строки: SaveStringToFile('c:\filename.txt', #13#10 + 'the string' + #13#10, True); |
nik1967,
Да, спасибо, уже разобрался. А не подскажете, как на этапе ssDone открыть интернет-страницу в браузере по умолчанию? |
Код:
procedure CurStepChanged(CurStep: TSetupStep); |
Подскажите как поправить пример
Код:
[ code] Сам пытался, но нечего путнего у меня не вышло |
Цитата:
|
Цитата:
|
xryst,
Скрытый текст
Код:
[Setup] |
Здраствуйте, уважаемые знатоки!
Такая вот шняга. Скрипт Inno Setup подшаманить надо. Надо убрать инфу для удаления, а конкретно - два файла. unins000.dat и unins000.exe с целевой папки Может, посоветуете что? Вариант ручного удаления - не вариант. Надо чтобы их не оставалось после установки |
Карась з Днiпра, зачем?
|
Также задача второстепенной важности, которая мне никак не поддается. Буду благодарен, если поможете.
Видел как то русскую локализацию к игре Lost Via Domus, от пиратов. Целевой файл там на 2 ГБ, архив какой нибудь. А сам инсталл - мегабайта полтора или сколько там. Не помню. Мелочь. Подобное супер-мега-дупер-сжатие мне надо реализовать и в своем скрипте, потому как файлов там гигабайт на 15. Помогите, пожалуйста... |
Карась з Днiпра,
Читаем справку!
[Setup]: Uninstallable Возможные значения: yes или no, или логические выражения Значение по умолчанию: yes Описание: Inno Setup определяет, создавать ли автоматический деинсталлятор. При значении yes или логического выражения True он создается. Иначе автоматическое удаление будет невозможно, так что пользователь должен будет вручную удалять программу. Установка значения директивы в True может быть полезной, если Вы хотите установить 'переносимую' программу. Например: [Setup] Uninstallable=not IsTaskSelected('portablemode') [Tasks] Name: portablemode; Описание: "Portable Mode" См. также: CreateUninstallRegKey [Setup]: CreateUninstallRegKey Возможные значения: yes или no, или логическое выражение Значение по умолчанию: yes Описание: При значении no или False (логические выражения) инсталлятор не будет создавать пункта программы в диалоге Установка и удаление программ. Это может быть полезно, если программа является обновлением для уже установленного приложения и запись в этом диалоге не нужна, но надо сохранить возможность удаления обновления (Uninstallable=no). В этом случае, UpdateUninstallLogAppName обычно устанавливается в no. |
Iska, для моего инсталла деинсталяция вообще не нужна. Да и лишние файлы в целевой папке тоже.
|
Цитата:
|
nik1967, попробую прописать в код, спасибо.
По поводу упаковщика. Можно подробнее, пожалуйста? Я очень далек от всего этого, но сделать нужно. |
Карась з Днiпра,
Ну, если по шапке не получу.
|
nik1967, спасибо огромное!
Попробовал команду Uninstallable. В инсталле по этому поводу доп. окошко появляется, не оч. кошерно. Попробую просто Uninstallable=not Еще раз спасибо! |
Карась з Днiпра,
Возможные значения: yes или no То есть Код:
[Setup] |
А теперь все кошерно! Спасибо вам, люди!
nik1967, смеканул об этом до компиляции, но тем не менее спасибо) |
Карась з Днiпра,
Не забудь про:
[Setup]: CreateUninstallRegKey Возможные значения: yes или no, или логическое выражение Значение по умолчанию: yes Описание: При значении no или False (логические выражения) инсталлятор не будет создавать пункта программы в диалоге Установка и удаление программ. Код:
[Setup] Если нужно, конечно. |
Цитата:
|
Вопрос знатокам: как можно подавить MsgBox деинсталлятора "Программа полностью удалена с вашего компьютера" или изменить его текст в зависимости от условий?
|
Цитата:
Скрытый текст
Код:
[Setup] |
Подскажите есть ли возможность в Inno Setup отключить проверку "битости" инсталятора, требуется для упаковки файла протектором, сейчас после упаковки выдает сообщение что он поврежден, получите новую копию.
|
xryst, простого шифрования Вам недостаточно?
|
Цитата:
|
Народ, а как работает параметр "Components" в секции [Files]? Если я ввожу "Components: Main Full;" то как это будет работать? Этот файл установится если выбран один из компонентов? Или когда выбрано сразу оба?
И вообще, какие логические выражения там можно использовать? and, or или not там работают? В help об этом ни слова, только в [Tasks] написано про них. |
Цитата:
Скрытый текст
|
Цитата:
Если был назначен тип full на два компонента, например: Код:
[Components] Если к этому будет применён флаг exclusive Код:
[Components] |
Iska, вы так и не научились читать то что я пишу?
Цитата:
Nordek, ваш ответ вообще не к месту. Я не о секции [Components] спрашивал. А про параметр "Components" в секции [Files]. Читайте внимательнее то что я пишу. Итак повторю свой вопрос. Как работает параметр "Components" в секции [Files]? Если я ввожу Код:
[Components] И так же, работают ли в секции [Files] логические выражения and, or или not? |
Цитата:
2Nordek: вот это тоже сарказм. |
Iska, я написал все довольно подробно. В help ни слова о применении логических выражений в секции [Files]. Там вообще ничего о них не написано. О них сказано только в [Task], который в моем установщике вообще не применяется. И об этом я написал в самом первом посте. А вы скинули мне скриншот из help с логическими выражениями в [Task]. Вас спрашиваешь за фломастер а вы говорите за карандаш. А виноват конечно же я. Хорошо у вас все устроенно.
Куча текста а ответ на вопрос я так и не получил.. Неужели так сложно ответить вместо того что б загружать бесполезные скриншоты и писать тонны текста... Для понимая, напишу вам кучу текста. Может это приблизит вас хоть немного к пониманию моего вопроса. Вот скриншот - Параметры секций [Components] и [Tasks] Скрытый текст
Видно тут хоть слово про секцию [Files]. Нет? Я тоже не вижу. Тут только [Components] и [Tasks]. Вопрос был про [Files]. А вот в секции [Files] нет вообще ничего про логические выражения. Ни слова не написано. Вообще. Там только Source, DestDir, DestName, Excludes, ExternalSize, CopyMode, Attribs, Permissions, FontInstall, StrongAssemblyName, Flags и т.д. Нет ничего о параметре "Components" или о логических выражениях. Что вам еще написать? И так по полочкам уже все разложил. |
Цитата:
vk_k14m@vk, Не понятно объясняешь. Так и пиши: Мне нужно объяснение комбинирования значений. Скрытый текст
a or b
Будет задействовано содержимое инсталлятора только в том случае, если выбран флажок a, b или a и b. Eсли будет снят с a и b, то задействовано не будет. a and b Будет задействовано содержимое инсталлятора только в том случае, если выбраны a и b. Если с a, b, a и b флажки сняты, то задействовано не будет. not a or b Будет задействовано содержимое инсталлятора только в том случае, если не выбран флажок a и выбран флажок b. Если с a и b или b не выбраны, то задействовано не будет. not (a or b) Будет задействовано содержимое инсталлятора только в том случае, если для a и b флажки не выбраны. Если будет выбран a, b или a и b, то задействовано не будет. a b Будет задействовано содержимое инсталлятора только в том случае, если для a, b, a и b выбраны флажки. Если с a и b флажки сняты, то задействовано не будет. |
vk_k14m@vk, я много чего написал, затем удалил. Затем ещё написал. Затем снова убрал. Ещё написал. И опять убрал, решив, что сарказма на сегодня хватит, да и Вы его навряд ли в запальчивости поймёте.
vk_k14m@vk, возможно Вас сбил с толку кривой перевод. Смотрим оригинал: Цитата:
Цитата:
Данное место следует понимать как «Параметры любых разделов, принимающих общие параметры, за исключением разделов [Types], [Components] и [Tasks]». То есть [Files] входит в этот перечень «all sections whose entries are separated into parameters, except [Types], [Components] and [Tasks]», и к нему в полной мере должно относиться (по крайней мере, в теории — я не проверял специально) использование «boolean expressions» в параметрах «Components» и «Tasks». |
Ребята помогите пожалуйста . нужен скрипт или пример на uninstall созданный полностью на ботве 2 . не могу не где чет найти . за ранее всем огромное спасибо
|
Цитата:
Если уж совсем коротко. |
Цитата:
|
Еще вопрос. Флаг ignoreversion. Как он работает, не совсем понял из того описания что к нему прилагается. Он же применим ко всем фалам? Или только к EXE?
Как я понял, если убрать этот флаг, то установщик будет записывать версии ВСЕХ файлов? А потом при повторной установке той же программы в ту же папку, установщик начнет сверять версии тех файлов что уже есть, с теми что устанавливает. И если они совпадают, то просто пропускать. А при несовпадении заменять. Я правильно говорю? Таким образом можно будет например восстанавливать поврежденные файлы приложения что б оно снова работало? И как он вообще проверяет файлы? Как читает версию? Насколько файлы должны быть похожи что б он не заметил подмены? Например два текстовых файлы, в каждом по 100 символов, и во втором файле всего 1 символ отсутствует или изменен. Он увидит разницу? |
vk_k14m@vk, номер версии применим к исполняемым файлам, к библиотекам, к определённого вида шрифтам. Номер версии может заноситься в ресурсы исполняемого файла/библиотеки разработчиком/компилятором при его создании.
Цитата:
Вообще пробежитесь по разделу Version Information (Windows), станет понятнее. Цитата:
Цитата:
|
Iska, ясно. Но ответ все же не полный. Если установить приложение. А потом снова запустить установщик и снова попробовать установить приложение в ту же папку. Что он сделает с файлами которые уже есть? Пропустит, заменит или спрашивать будет? С флагом ignoreversion он заменит все. А что будет без него? На это ответ я не увидел...
З.Ы. И не подсовывайте мне инглиш сайты, знаете же что я не знаю язык. А значит и читать там ничего не буду. |
Цитата:
Inno Setup Knowledge Base: Цитата:
Цитата:
|
Iska
Цитата:
Цитата:
Как то это глупо. Я имею ввиду про более низкий номер версии. Очевидно же что 2.0 более новый файл. Но он не будет установлен? |
Гуглопереводчик избрал худший вариант из невозможных:
Скрытый текст
Впрочем, и все остальные машинные переводчики «лажают» так же, пусть и с некоторыми отклонениями. И никакие «нейронные сети» тут не помогают. Понимать «unless» следует как противопоставление, здесь — «за исключением следующих случаев». То есть, в случае отсутствия флага, получается так: Цитата:
Цитата:
Например, у нас есть два комплекта установки. В оба комплекта входят по паре одноимённых файлов, например, «docs.txt» и «app.exe», разного содержимого. Кроме того, «app.exe» имеет в первом комплекте версию, например, «1.0.0.0» и во втором — «1.5.0.0».
|
скажите, пожалуйста, inno умеет переменные с плавающей точкой? нужно определить AR монитора и в зависимости от него выполнить некоторые действия
|
R.i.m.s.k.y., если речь про встроенный язык Pascal Scripting — то да, там такое есть. Например:
Код:
function InitializeSetup(): Boolean; |
не, мне хотелось бы как-то так
Код:
var ar1, ar2 : float |
Цитата:
Код:
function InitializeSetup(): Boolean; Скрытый текст
|
Цитата:
а single не додумался |
R.i.m.s.k.y., ну, и обратите внимание, что хотя для получения результата деления двух целых чисел в виде числа с плавающей запятой достаточно переменной данного типа, но чтобы получить правильный результат, хотя бы один из операндов деления должен быть тоже числом с плавающей запятой. Иначе сначала получается результат в виде целого, который только потом преобразуется к числу с плавающей запятой и может оказаться так:
Скрытый текст
|
Iska, ничоси нюансы! дзинкуе!
|
R.i.m.s.k.y., нет, это издержки обучения широкого профиля ;). Чаще полезные, но иногда начинаешь путать, что к какому языку относится.
|
Народ. Когда то давно, товарищ R.i.m.s.k.y. подкинул мне полезный код.
Код:
[Files] А можно как то сделать его скрытый запуск? Что б не отображалось окно командной строки. В секции [Run] есть фалг runhidden. Хотелось бы что-то подобное... |
vk_k14m@vk, установите
|
Цитата:
Exec(file, 'параметры',path,SW_SHOW подставить Exec(file, 'параметры',path,0 ? Или не 0 а SW_HIDE? |
vk_k14m@vk, да, четвёртый параметр. Надо ж было мне так обсчитаться :(. Приношу Вам свои извинения.
Цитата:
|
Iska, что ж буду проверять)
|
Цитата:
Код:
SW_HIDE |
скажите, пожалуйста, можно ли как-то научить писать инно в ini через секцию ini в UTF8?
или как-то сконвертировать потом сформированный установщиком ниншник в utf8? |
R.i.m.s.k.y., а что, разве не сохраняет в UTF8?
Скрытый текст
|
nik1967, надо сохранение в UTF-8 создаваемого разделом [INI] инсталлятора ini-файла. Но дело в том, что WritePrivateProfileString()/GetPrivateProfileString() не работают с UTF-8. Ещё не существующий файл будет создаваться посредством WritePrivateProfileStringA() в ANSI/1251. Если предварительно создать искомый пустой ini-файл в UTF-16LE/1200 — будет использоваться WritePrivateProfileStringW(). Аналогично будет работать и при удалении. Но вот путей совместить раздел [INI] и UTF-8 я не вижу.
Можно попробовать оставить создание ini-файла из раздела [INI] как есть, а на заключительном этапе после установки просто взять и кодом прочитать содержимое файла, а затем посредством SaveStringsToUTF8File() перезаписать его. Для деинсталляции проделать обратное — на предварительном этапе прочитать UTF-8 и записать содержимое в ANSI, чтобы деинсталлятор смог отработать указанными выше функциями. Это, конечно, предварительные соображения, я их даже не проверял. P.S. По поводу скриншота с примером: если в файле нет многобайтовых символов (например, той же кириллицы), то UTF-8 без BOM ничем не отличается от ANSI/1251. |
Цитата:
Скрытый текст
Код:
[INI] |
Как можно запускать приложение через секцию [Сode] с параметрами.
Например в секции [Run] все просто Код:
[Run] Код:
[Соde] *** И еще. Можно сделать еще одно окно с индикатором выполнения? У меня через секцию [Сode] запускается 101 приложение. И в [Run] еще 178. Хотелось бы наглядно видеть ход их выполнения... |
парни, проблема я отключил папку установки , но теперь не отображается дополнительные программы Microsoft Visual C++ может кто поправит
скрипт
[Setup] DisableWelcomePage=yes DisableReadyPage=yes DisableFinishedPage=yes Compression=none RestartIfNeededByRun=no AppName=vbvb AppVersion=5 CreateAppDir=False [Files] Source: "C:\Users\ww\Desktop\длполнение\W.bmp"; Flags: dontcopy [Run] Filename: {src}\Redist\vcredist_x86.exe; Parameters: /q; StatusMsg: Устанавливаем Microsoft Visual C++ 2005 Redist...; Flags: skipifdoesntexist; Check: MicrosoftVisualCheck Код:
var |
Может ли Inno Setup проверять наличие нужной папки перед установкой? и если ее нет, то завершать процесс установки.
|
Может. Что Вы подразумеваете под «нужной папкой»?
|
А меня уже принято игнорить?
|
Цитата:
первое - целочисленное, используется для кода ошибок, второе - строковое, задаешь пути в них Что не работает то? |
Цитата:
|
Цитата:
Цитата:
Пример
Код:
[Code] Цитата:
|
как сделать такое окно https://s8.hostingkartinok.com/uploa...531f517572.png
сам скрипт http://rgho.st/6HNm67hXF |
|
Цитата:
Цитата:
|
El Sanchez, а как это прописать в скрипте?
|
Цитата:
Скрытый текст
Код:
// далее находятся закомментированые примеры различных функций распаковки (чтобы каждый раз не лазить в справку за примерами) |
El Sanchez, выдает ошибки при компиляций https://s8.hostingkartinok.com/uploa...9d605eb966.png
|
web_form, ошибка приведена непосредственно в тексте сообщения. Опишите указанную переменную в коде.
|
Iska, как?
|
web_form, так, как это сделано в примере по ссылке, приведённой коллегой El Sanchez выше: в области описаний переменных — имя переменной и её тип.
|
Iska, и что мне делать,из за чего ошибка?
|
Цитата:
|
|
Del
|
Цитата:
web_form, на кой ляд Вы взялись за создание инсталляторов, если не стремитесь ни пальцем шевельнуть, ни мозгами? |
Iska, я уже половину скрипта исправил,осталось толь ка маленькие детали
|
Нужна помощь, отображаются только первые четыре картинки.
Components
Код:
Name: AKM; Description: AKM(AK-47):; Types: full; Flags: fixed; Code
Код:
function NextButtonClick(CurPageID: Integer): Boolean; |
Цитата:
Код:
ComponentsInfoImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\akm_4.bmp')); |
El Sanchez, также вопрос, как во вкладке выбора компонентов убрать размерность для следующих пунктов?
Components
Код:
Name: MAIN; Description: Основное оружие:; Types: full; Flags: fixed; <----- убрать размерность |
|
Речь идет про повышение привилегий до уровня Администратора..
установка PrivilegesRequired=admin эффекта не дает... То есть, если инсталятор запущен без прав админа, восполнение инструкций требующих права Администратора закончатся сбоем. Даже при наличии PrivilegesRequired=admin |
Цитата:
Скрытый текст
Код:
[Components] Цитата:
Скрытый текст
Код:
for i := 0 to WizardForm.ComponentsList.ItemCount - 1 do |
Цитата:
|
Code
Код:
function NextButtonClick(CurPageID: Integer): Boolean; |
Цитата:
|
Цитата:
Скрытый текст
Код:
[Code] |
Друзья может кто подскажет как сделать что бы при обновлении программы не выскакивала вот эта зараза
|
Вложений: 1
Файл 149911 |
Цитата:
|
файл в данный момент используется
|
Цитата:
|
Цитата:
|
El Sanchez, огромное спасибо.
|
проблема решена, сделал папку с программой системной теперь при обновлении программы ошибки не выдаёт :yahoo:
|
Здравствуйте.
Подскажите пожалуйста,как сделать выбор папки пуск на странице выбора папки установки и там же расположить создание ярлыка на рабочий стол и папки пуск? |
vvVVvv VV vvVVvv, из Справки
Скрытый текст
Код:
#define MyAppName "My Program" |
Цитата:
|
Нужна помощь,как указать оставшееся время https://s8.hostingkartinok.com/uploa...b5b039e874.png
вот скрипт с файлами http://rgho.st/8TsjZx2Y6 |
Цитата:
Однажды, давно это было, мне также было не понятно почему у меня "Тестовый прогон" до тех пор, пока не прочитал справку. web_form, Вам также дам хороший совет: Прочтите справку. Т.е у вас два варианта:
Цитата:
|
Nordek, спасибо,а как сделать сделать две полоски с вершу и снизу начальной установки приветствия https://s8.hostingkartinok.com/uploa...7d235b5b15.png
|
web_form,
Чтобы полосы сверху и снизу отображались на странице приветствия, зайди в папку modules открой page.iss, найди такие строки if CurPageID=wpWelcome then begin HideComponents; это будут 22 и 23 строки и вставь после них Bevel2.show; Bevel3.show; и все отобразится |
ZVSRus, спасибо а как подключить Проверка MD5
|
web_form
Цитата:
PS. Цитата:
|
ZVSRus, он уже прописано в скрипте но не знаю как подключится
|
Вложений: 1
Друзья, подскажите пожалуйста как убрать флажок с компонентов по умолчанию?
Вот скриншот. По умолчанию компонент "HD HUD" выбран, как убрать? http://forum.oszone.net/attachment.p...1&d=1513171034 вот кусочек кода: Код:
[Types] |
Alloc,
Код:
Name: Patch\HUD; Description: {cm:HUD}; Flags: collapsed |
nik1967, спасибо, все настолько просто) я уже думал программным путём менять через - WizardForm.ComponentsList.Checked[8] := False;
но это не вариант в моем случае :Beer: |
как закоментировать эти строки https://s8.hostingkartinok.com/uploa...1bb0ed9794.png чтобы при установке исходила "russian" "english"
скрип с файломи http://rgho.st/8JMZGmxMY |
web_form
Вам нужно чтобы при выборе языка Русский что подчёркнуто читалось на русском, а при выборе языка английский читалось на английской? Правильно понял? |
ZVSRus, да
|
web_form
У вас в скрипте есть секция [CustomMessages], и многие названия уже переделаны под выбор языка, отображение надписей на русском или английском. Вобщем должно быть так: Код:
[Languages] russian.здесь название свое=слово на русском english.здесь название свое=перевод на английский |
ZVSRus, выдает ошибку при компелятции https://s8.hostingkartinok.com/uploa...8a146863a5.png
|
web_form
На какой строке ошибка. Сделай скриншот. |
web_form
Я же описал как делать, будь более внимательней: Код:
|
Цитата:
Код:
Caption:=ExpandConstant('{Установка завершена успешно. Запуск можно произвести при помощи соответствующей иконки в меню Пуск или на Рабочем столе.}'); т.е Код:
Caption:=ExpandConstant('Установка завершена успешно. Запуск можно произвести при помощи соответствующей иконки в меню Пуск или на Рабочем столе.'); Код:
Caption := 'Установка завершена успешно. Запуск можно произвести при помощи соответствующей иконки в меню Пуск или на Рабочем столе.'; Если для CustomMessages, то так: Код:
[CustomMessages] |
ZVSRus,
на всех остальных строк выдает ошибки который закоментировал https://s8.hostingkartinok.com/uploa...1bb0ed9794.png мне и остальных строк добавить ('{cm:InstallationCompleted}'); или ('{cm:captionmesscomp}'); |
web_form
Попробую объяснить по другому: Код:
[CustomMessages] |
ZVSRus,
ошибка https://s8.hostingkartinok.com/uploa...f0a067f2af.png |
web_form
Цифрами написал для примера, что бы было более понятней, нужно писать текстом. Замени 002, 003 на свои имена, ну скажем: [CustomMessages] russian.name1=Русский текст english.name1=Английский текст russian.name2=Завершение установки english.name2=Installation complete russian.name3=Ошибка при установке. english.name3=Error installation. Procedure Error(CurPageID: Integer); Begin if (CurPageID = wpFinished) and ISDoneError then begin ImgSetVisibility(Wizard16, True); ImgSetVisibility(Wizard17, False); ImgApplyChanges(WizardForm.Handle); WizardForm.Caption:= ExpandConstant('{cm:name2}'); LabelFinish.Top:= 239; LabelFinish.Caption:= ExpandConstant('{cm:name3}'); end; end; |
а как сделать чтобы при установке игры отобразилось время руский на руском а англиский на англиском https://s8.hostingkartinok.com/uploa...bd87207a40.png
|
Цитата:
Если нужен скрип,могу в лс скинуть. |
Цитата:
|
Цитата:
|
Цитата:
Как я понимаю, если вы выбрали стим тогда устанавливается не зарегистрированная версия, когда выбрали взломанная устанавливается зарегистрированная. Если так тогда все что вы называете кряком (все файлы что у вас в отдельной папке) также как и все файлы прописываем в секции [Files] через переключатель который соответствует взломанной версии. Как то так: [Files] Source: "{app}\amazingaudioplayer,1.exe"; DestDir: "{app}"; DestName: "amazingaudioplayer.exe"; Check: StimCheck; Flags: ignoreversion Source: "{app}\amazingaudioplayer,2.exe"; DestDir: "{app}"; DestName: "amazingaudioplayer.exe"; Check: VzlomCheck; Flags: ignoreversion |
Цитата:
Я вас понял,объясняю.Там идёт файл config.ini в котором прописаны всякие настройки,смена языка,включение длс,так же еще присутствует dll файл который отвязывает от стима игру,а точнее steam_api64.dll. Но бывает так же что в месте с ini и dll так же присутствует exe файл игры. |
vvVVvv VV vvVVvv
Поймите, корректно поставленный вопрос, залог быстрого и исчерпывающего ответа. Цитата:
Source: "{app}\steam_api64.dll"; DestDir: "{app}"; Check: StimCheck; Flags: ignoreversion Source: "{app}\steam.exe"; DestDir: "{app}"; Check: StimCheck; Flags: ignoreversion Папка {app} (синий цвет) это папка где лежат ваши файлы, путь может быть любой, например: D:\ПАПКА\ПОДПАПКА Папка {app} (красный цвет) это папка куда вы их должны скопировать, например: {pf}\Название игры. StimCheck это внутреннее название переключателя, как он у вас называется я не знаю, нужно в скрипте смотреть. Если у вас есть переключение между взломанной и стим, значит есть и эти переключатели. Выбрали стим, данные файлы не установились, выбрали взломанную, файлы установились в нужное место, куда укажете путь. Ничего сложного. |
Цитата:
|
vvVVvv VV vvVVvv Отправил.
|
Цитата:
|
как кнопку Обзор.... передвинуть чуть чуть верх, https://s8.hostingkartinok.com/uploa...a1911e7bc8.png
http://rgho.st/8TsjZx2Y6 |
Все привет.
В инсталляторе при определенных условиях создается кастомная страница. Как в дальнейшем коде проверить, существует она или нет? Или, если проще, можно создавать страницу в любом случае, но при определенных условиях как ее пропустить? |
Цитата:
Цитата:
Замени Top := ScaleY(115); на Top := ScaleY(112); это координаты отступа сверху. Как поднять или опустить не вопрос, вопрос в том пойди найди нужный компонент в этих джунглях! |
ZVSRus,
как указать свой размер игры в скрипте? https://s8.hostingkartinok.com/uploa...963a131aea.png |
Цитата:
Цитата:
Код:
if CustomPade then begin |
Цитата:
тогда это в скрипте в самом верху что красным шрифтом //===== [Need Size] =====\\: #define NeedSize "10240" = это объём игры //===== [Game Size] =====\\: #define TotalNeedSize "10240" = требуется для установки 10240 = запись в мегабайтах |
Цитата:
PS. Ну а вообще я не до конца понял суть вопроса. |
ZVSRus,
Страница создается скажем при наличии ключа в реестре. Если ключа нет, она не создается. Далее в коде (уже совсем в другом месте, скажем, на ssDone при нажатом чекбоксе на той самой странице происходит еще что-то. Проблема возникает, если на ssDone идет обращение к чекбоксу страницы, которая ввиду условий не была создана. Это все упрощенно, условий для создания страницы больше Повторюсь, может проще ее создавать изначально, но при тех же условиях ее просто не показывать ( пропускать) |
Цитата:
Костомная страница при наличии ключа сама не создастся, её нужно изначально ручками создавать. А уже потом написать функцию для ключа в реестре, в функции прописать если ключ в реестре есть страницу показывать, ключа в реестре нет страницу не показывать. Цитата:
|
ZVSRus,
немного мы не понимаем друг друга, ну да ладно Код:
procedure CreatePageUPnP(); Цитата:
|
Цитата:
Скрытый текст
Код:
procedure InitializeWizard; |
Прошу помощи. Нужно организовать проверку установленной версии IE.
Код:
HKLM, 'SOFTWARE\Microsoft\Internet Explorer', 'Version' |
Ivn78,
Пример
Код:
[Setup] |
nik1967,
а как быть, если первое число двухзначное? сейчас получается, что 10<8 |
Ivn78,
Тогда так
Код:
[Setup] |
подскажите пожалуйста как удалить название игры в этом пункте https://s8.hostingkartinok.com/uploa...f32e281622.png
http://rgho.st/8TsjZx2Y6 |
Цитата:
Код:
[Languages] |
Nordek, не убирается удалил « %1 » не помогло
|
Цитата:
Код:
[Messages] |
Цитата:
SelectDirLabel3=Программа установит [name] в следующую папку. SelectDirLabel3=Setup will install [name] into the following folder. Помести запись, что вам привёл Nordek ru.SelectDirLabel3=Программа установит в следующую папку. en.SelectDirLabel3=Setup will install into the following folder. в секцию [Messages] что находится в messages.iss в самом низу, к ru подпиши s, к en подпиши g. Так как в самом верху в секции [Languages] выглядет так Name: rus; MessagesFile: modules\Russian.isl Name: eng; MessagesFile: modules\english.isl |
Цитата:
Отредактировать файлы по своему усмотрению (Наверняка вам вздумается что-то ещё удалить/изменить или добавить). Включить в инсталлятор, например: Код:
[Languages] |
подскажите пожалуйста как изменить размер в обоих языках https://s8.hostingkartinok.com/uploa...cf477d88cb.png
а то конец немного великоват |
Цитата:
Код:
WizardForm.FinishedHeadingLabel.Font.Height := -13; |
Здравствуйте.Как сделать что бы в реестре прописывался путь к игре?
Вот пример ветки реестра,нужно что бы при установке,прописывался тот путь который выбрал пользователь. И такой же пример нужен для x64 систем. Код:
Windows Registry Editor Version 5.00 |
vvVVvv VV vvVVvv,
Код:
Root: HKCU32; Subkey: "Software\Blizzard Entertainment\Warcraft III"; ValueType: String; ValueName: "InstallPath"; ValueData: "{app}"; |
Nordek, где мне его искать,в скрипте или папке modules?
|
Цитата:
Цитата:
Код:
Root: HKLM; SubKey: SOFTWARE\DVDFab; Flags: uninsdeletekeyifempty Цитата:
TextLabel[10]:= TLabel.Create(WizardForm); Font.Height := -13; Правда в данном блоке всё это продублировано аж 3 раза. А зачем вам этот размер уменьшать, на всех страницах данный лейбл одинаков -13 |
ZVSRus, в конце размер шрифта немного вили к
|
web_form
Я не пойму, в каком конце, на последней странице шрифт больше чем на предыдущих? |
ZVSRus, да,всё получилось,изменить надо было font.Size:=13; на font.Size:=11;
спасибо огромное |
Цитата:
Да ну :)
|
Iska
То что вы показываете, я видел, у меня тоже самое есть. Есть ещё Гугл. Не думаю что у вас в данной ветке наберетя десяток программ. [Registry] Root: HKCU; SubKey: Software\Wow6432Node\Google; Flags: uninsdeletekeyifempty Root: HKCU; SubKey: Software\Wow6432Node\Google\Chrome; Flags: uninsdeletekeyifempty Root: HKCU; SubKey: Software\Wow6432Node\Google\Chrome\Extensions; Flags: uninsdeletekeyifempty Я просто не стал писать кроме редких исключений, даже может редчайших. |
Цитата:
Цитата:
Цитата:
|
Iska
Просто наверное не правильно сформулировал предложение, нужно было что типа такого: Хотя в ветке реестра HKEY_CURRENT_USER (HKCU) и есть Wow6432Node но обычные программы туда не летят, записи 64 битных программ находятся в ветке Root: HKLM; SubKey: SOFTWARE\; Flags: uninsdeletekeyifempty записи 32 битных программ на 64 битной системе находятся в ветке Root: HKLM; SubKey: SOFTWARE\Wow6432Node\; Flags: uninsdeletekeyifempty Себя не причисляю к продвинутым пользователям, и мне без разницы native x64 приложения или какие то другие, но ежемесячно, ради своих экспериментов ставлю и затем удаляю не одну сотню программ, но в данной ветке не встречал более того что есть. |
Цитата:
Converter или RegExporter |
Цитата:
|
Цитата:
Вот тут когда-то расписывал (слово "куст" читать как "раздел", да, знаю, путал термины :)). |
Подскажите пожалуйста как убрать локализацию языка https://s8.hostingkartinok.com/uploa...a8ddb8b5a1.png
http://rgho.st/8TsjZx2Y6 |
web_form,
Код:
[Components] |
ZVSRus, когда запускаешь отдельно Setup.exe оно всё равно отображается и при нажатие рус енг выдает ошибку https://s8.hostingkartinok.com/uploa...a3ef8d1955.png
|
Цитата:
Нет. Тут дело не в том, «обычные программы» или не «обычные». Дело в том, в каком режиме устанавливается приложение. Если оно устанавливается в режиме «На машину» — используется HKLM, Program Files для файлов и общий профиль для общих настроек/ярлыков, если в режиме «На пользователя» — используется HKCU и профиль пользователя для файлов, настроек и ярлыков (я излагаю очень упрощённо, в реальности там куча тонкостей). Ну, по крайней мере, теоретически должна использоваться, поскольку сие оговорено требованиями. И независимо от изложенного выше, есть отдельная история — для x86 приложений (в том числе и для инсталляций) под x64 ОС используется виртуализация некоторых разделов реестра и путей файловой системы. Краткие обзорные сведения и отношение к технологии со стороны разных производителей страждущие (Вам оно, скорее всего, не требуется) могут почерпнуть по запросу per-user per-machine installation - Поиск в Google. |
web_form
Код:
//===== [Components] =====\\: |
подскажите пожалуйста как изменить жирность шрифта https://s8.hostingkartinok.com/uploa...6e245b9895.png
|
Бедный мой инсталлятор. Что с ним пытаются сделать? (Не начинка, конечно же, а дизайн, содранный с моего инсталла).
|
nik1967, пытаюсь создать ваш оригинальный скрипт ,не подскажите как подключить md5?
|
подскажите пожалуйста как убрать это синий окно https://s8.hostingkartinok.com/uploa...66701ac6c8.png
хочу чтобы выглядела так https://s8.hostingkartinok.com/uploa...7ef025fdde.png http://rgho.st/8TsjZx2Y6 |
Каждый из вас по разному написал и я не пойму,так всё таки, как правильно прописать , что бы установка в реестре прописывалась туда ,куда установил пользователь и можно такой же пример для установки в x86 битную систему,вот по этим примерам реестров.
Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Electronic Arts] |
del
|
web_form
Ну вы вообще! То что обведено в рамочку, и называете окнами, может вы можете это все перетащить куда нибудь? |
ZVSRus, я часть файлов и текстов удалил осталось только последние
|
Цитата:
Скрытый текст
Код:
[Setup] В скрипте используйте константу {app}, она будет равна значению, которое указано в DefaultDirName или тому, что пользователь укажет в окне выбора папки установки. Только вот я не знаю, что с "Origin", судя по реестру, оно ставится не в папку с основным приложением (игрой), тут вам виднее, как быть. Ключи реестра тут прописаны под 32-битную ОС, так как игра тоже 32-битная, судя из вашего REG примера. |
Цитата:
У каждого текста в начале строки есть, как бы правильно сказать идентификатор engwpFinished21=An error occurred during installation! Please correct the problem and run Setup again. ruswpFinished21=Во время установки произошла ошибка! Пожалуйста, устраните проблему и запустите установку снова. Caption := CustomMessage(lang+'wpFinished21') - Когда найдёте то что выделено, это будет сам лейбл со всеми координатами и размерами текста. Где искать не говорю, даю возможность найти самому, и научится ориентироваться. |
ZVSRus, нашло а как убрать жирность текста
|
Цитата:
Код:
TextLabel[4]:= TLabel.Create(WizardForm); |
подскажите пожалуйста как сделать такое окно http://www.picshare.ru/uploads/171226/UX9WP71bwy.jpg
http://rgho.st/8TsjZx2Y6 в этом скрипте есть http://rgho.st/6lp6vVmrZ но не знаю как распределить к ординаты |
парни подскажите в чём проблема, поправте.
скрипт
[code]
[Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application OutputDir=C:\Users\ww\Desktop DisableReadyPage=True DisableReadyMemo=True DisableFinishedPage=True [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Dll Pack\ISSkin.dll"; DestDir: "{app}"; Flags: ignoreversion dontcopy Source: "C:\Program Files (x86)\Inno Setup 5\IS_Skin\Styles\Chromium.cjstyles"; DestDir: "{tmp}"; Flags: ignoreversion dontcopy Source: "..\skf.exe"; DestDir: "{tmp}"; Flags: ignoreversion Код:
function InitializeSetup2(): Boolean; |
Цитата:
|
Цитата:
Код:
[Setup] P.S pollipen, Также это прочтите. |
Цитата:
|
Цитата:
Для начала изучите реестр. Затем изучите Inno. После этого что-то будете утверждать если получится. У вас по умолчанию содержимое будет извлечено в "C:\Program Files (x86)", а данные реестра внесены в "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node" - Поскольку сам исполняемый файл является как x32 приложение. Чтоб по умолчанию устанавливалось в "C:\Program Files" а данные реестра вносились в "HKEY_LOCAL_MACHINE\SOFTWARE" необходимо приложение пометить как явное x64 - Для этого нужно в секции [Setup] установить директиву ArchitecturesInstallIn64BitMode со значением x64: Код:
[Setup] Если хотите чтоб приложение x32 устанавливало программу в системе x64 как для x64 - нужно в секции [Setup], в директиве DefaultDirName, заменить константу {pf} на {pf64} Код:
DefaultDirName={pf64}\Example Равно как и для реестра в секции [Registry] - В корне вместо HKLM указать HKLM64 Код:
[Registry] По этому давайте не будете писать нелепицу, я уже начинаю путаться от подобной чуши которую вы представляете. |
Тут надо не реестр изучать, а MSDN и TechNet: принципы функционирования x86-приложений под x64 ОС, что такое перенаправление, как оно работает, к каким объектам файловой системы и к каким разделам реестра оно применяется, как и в каких случаях может быть отключено, и т.д, и т.п. И это — помимо общих принципов, по которым должны работать инсталляторы в «родной среде». В общем,
|
подскажите пожалуйста,где путь лежит к этим шрифтам https://s8.hostingkartinok.com/uploa...ced42b2a72.png
|
Цитата:
Если шрифт изменить хотите, то: Код:
[Code] Первое сообщение темы:
Цитата:
|
Nordek, нет,хочу переименовать,всё не могу найти
|
Цитата:
Я думал что вы хоть немного начали ориентироваться где что находиться, а вы все там же! |
ZVSRus, я новичок в этом деле
|
Цитата:
Скрытый текст
|
всё нашёл спасибо
|
Цитата:
Я вам уже говорил, что все в данном проекте разбросано по подключаемым модулям. Окно что вы показываете, это форма вызванная нажатием кнопки отмена. Открываем папку modules и видим cancel form.iss. Все что там находится относится к данной форме отмены. И уже по названиям лейблов ищем все компоненты. |
ZVSRus, нашёл change lang прописоноКлавиши CTRL+F помог спасибо
там "Нажмите «Да», чтобы выйти из программы установки"недописанный "«Нет», чтобы продолжить." если прописать то сежает куда то если в центр то английский из центро пропадает всё в одном кординате вздвиге прописон ,как бы отдельно можно приписать? |
Цитата:
|
Цитата:
можно ли как не будь выковыривоть эту окну http://www.picshare.ru/uploads/171226/UX9WP71bwy.jpg Цитата:
и надпись с английского передвигаедся https://s8.hostingkartinok.com/uploa...7066caec23.png ,можноли всё это отдельно сделать чтобы отдельно передвигалось |
Цитата:
В скрипте что вы переделываете, нужно внимательно пошариться, и включить данную страницу (для каких целей не понятно), но как она будет выглядеть, это уже большой вопрос, потому что данный скрипт написан с нуля (от Inno Setup там осталось одно название), все родные компоненты скрыты. На счет второго вопроса, я уже честно запутался, то вы с одного скрипта покажете скриншот, то от другого, из двух скриптов собирать один (какой вы хотите) вам никто не будет, сделайте за меня, это уже вопрос для другой темы. |
подскажите пожалуйста как включить такое окно http://www.picshare.ru/uploads/171226/UX9WP71bwy.jpg
вот скрип с файлами http://rgho.st/8TsjZx2Y6 |
Цитата:
Код:
[Setup] |
boss911, убрал но всё равно не показывается это страничка
|
Цитата:
(Компоненты, Дополнительные задачи и Ярлыки), обрати внимание, когда на странице Компоненты, Дополнительные задачи и Ярлыки вы нажимаете на кнопку установить, то у вас ощущение что как бы ничего не произошло, никуда вас не перекинуло, на самом деле вы уже находитесь на странице ReadyPage ту что включили, то есть по внешнему виду вам показывается страница Компоненты, Дополнительные задачи и Ярлыки как бы два раза. Я же вам написал выше (но как она будет выглядеть, это уже большой вопрос). Это потому что OuterNotebook скорее всего скрыт (сам по скрипту и модулям не выискивал), так как у всех компонентов на всех страницах родитель WizardForm. Каждая страница отрисовывалась по отдельности. В папке modules есть hides.iss где все компоненты что задумал автор скрипта скрыты, а уже в моделе page.iss на разных страницах показываются соответствующие компоненты. Но так как для страницы ReadyPage нет никаких компонентов, да и в скрипте нет ничего для данной страницы, вот по этому на ней отображается все что на предыдущей странице. Выхода два, перенести что связано с данной страницей из другого скрипта, или отрисовывать данную страницу вновь. Но это как говорится, уже другая история. |
Цитата:
|
Цитата:
|
подскажите пожалуйста как включить такую страничку https://s8.hostingkartinok.com/uploa...40a81c5a9e.png
вот скрип с файлами http://rgho.st/8TsjZx2Y6 |
http://rgho.st/6t4LxzN8V забирай web form
|
pollipen, это тот же скрипт который я выложим, в нём нет ничего изменённого
|
парни как можно сделать перед установкой основной программы сделать тихую установку другой программы
скрипт
[Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application OutputDir=C:\Users\ww\Desktop DisableReadyPage=True DisableReadyMemo=True DisableFinishedPage=True [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Dll Pack\ISSkin.dll"; DestDir: "{app}"; Flags: ignoreversion dontcopy Source: "C:\Program Files (x86)\Inno Setup 5\IS_Skin\Styles\Chromium.cjstyles"; DestDir: "{tmp}"; Flags: ignoreversion dontcopy [code] Код:
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); |
Как выровнять текст по середине в TNewEdit?
|
прошу легкой помощи.
понадобилось собрать инсталлятор. нужно прочитать из реестра ключ. в ключе путь куда нужно распаковать файлы вот и все . подскажите как это сделать |
JIeT4uK, самый простой вариант
для определенного файла Код:
[Files] Код:
[Setup] |
Оно! Спасибо
еще вопросик. как достучаться до HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{3B97C9A2-56CE-480B-AD59-9B320479A5CE}_is1 пишет Invalid Registry constant |
JIeT4uK, пробуйте
Код:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\%7B{3B97C9A2-56CE-480B-AD59-9B320479A5CE}_is1 |
вернулось дефолтное значение. значит не прочитало
как в процессе увидеть что возвращает функция |
Цитата:
Код:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{3B97C9A2-56CE-480B-AD59-9B320479A5CE}_is1 Прошу прощения, я не прав. Использование двойных фигурных скобок внутри константы не работает, как в других случаях, я не знал об этом нюансе. И никогда не используйте в путях WOW6432Node. Если инсталлятор работает в 32-битном режиме (ArchitecturesInstallIn64BitMode=x86 или не задано), то Windows x64 (WOW64) автоматически перенаправит путь в WOW6432Node. |
Код:
[Files] |
Цитата:
|
эксперименты показали что не читает из HKLM даже при запуске от имени админа.
а из HKCU все норм читается и работает есть выход из этой проблемы?? |
JIeT4uK, во-первых очистите свою личку т.к. нет возможности отправить вам сообщение
во-вторых дайте полностью весь скрипт, а не кусок |
Код:
[Setup] |
JIeT4uK, Вы хоть ветку реестра правильно указали? Большую часть (около 99,9%) всех программ хранятся в ветке HKEY_LOCAL_MACHINE
|
Да. Извините. Забыл исправить после экспериментов. Нужно в HKLM искать
|
JIeT4uK
У меня работает: Код:
#define MyAppName "My Program" Вы используете директиву ArchitecturesInstallIn64BitMode=x64, которая означает, что инсталлятор будет работать в 64-разрядном режиме, имеет смысл использовать в том случае, если ваше приложение так же 64-разрядное. Имейте это в виду! Если ваше приложение, которое вы компилируете, 32-битное, то не используйте данную директиву, иначе будут проблемы при установке на ОС x64, например, путь, указанный в константе {reg:} не обнаружиться. Прошу прощения, я был не прав. Использование двойных фигурных скобок внутри константы не работает, как в других случаях, я не знал об этом нюансе. |
Цитата:
Константы
Главную роль в скрипте играют константы. Константы всегда заключаются в фигурные скобки { }. Инсталлятор (или деинсталлятор) присваивает константам значения, котроые определяются пользователем, либо опираясь на конфигурацию системы. Например, {win} будет воспринята компилятором как "C:\WINDOWS", если ОС установлена в эту папку.
Символ "{" рассматривается как начало константы. Если требуется ввести "{", наберите ее два раза. (You do not need to double "}" characters.) Если за константой следует обратный слеш ("\"), инсталлятор его автоматически удалит, если константа уже оканчивается на обратный слеш. Например, если константа {const} имеет значение "C:\", а мы введем {constantname}\filename, в конечном счете получится "C:\filename", а не "C:\\filename", как должно быть по логике. Если требуется вывести именно "C:\\filename", обратный слеш придется заключить в фигурные скобки: {const}{\}\filename. Список поддерживаемых констант. Константы папок {app} Папка, куда устанавливается приложение. Она выбирается пользователем в окне Выбор папки назначения при установке. Например: если Вы ввели {app}\MYPROG.EXE в значение параметра Source и пользователь пожелал установить Вашу программу в "C:\MYPROG", на выходе получится "C:\MYPROG\MYPROG.EXE". {win} Папка, где установлена Windows. Например: ввели {win}\MYPROG.INI , папка Windows "C:\WINDOWS", на выходе "C:\WINDOWS\MYPROG.INI". {sys} Системная папка Windows. Например: ввели {sys}\CTL3D32.DLL системная папка Windows "C:\WINDOWS\SYSTEM", на выходе "C:\WINDOWS\SYSTEM\CTL3D32.DLL". На 64-разрядном Windows, по умолчанию, путь System32, возвращаемый этой константой указывает к папке, содержащий 32-разрядные системные файлы, точно так же как в 32-разрядном Windows. (Константа может быть переопределена включением 64-разрядного режима.) {syswow64} На 64-разрядном Windows системная папка SysWOW64, обычно "C:\WINDOWS\SysWOW64". Это каталог, в котором находятся 32-разрядные системные файлы. Не используйте эту константу, если нет необходимости получить имя каталога, в котором находятся 32-разрядные системные файлы. Многократное использование {syswow64} в местах, где {sys} будет достаточен, может вызвать проблемы. (Для примера см. документацию флага sharedfile секции [Files].) {src} Папка, в которой находится инсталлятор. Например: ввели {src}\MYPROG.EXE, инсталлятор запущен из "S:\", на выходе "S:\MYPROG.EXE". {sd} Системный диск, на котором установлен Windows. Обычно это "C:". Эта константа эквивалентна переменной среды SystemDrive. {pf} Путь к папке Program Files. {pf} эквивалентна {pf32}, если инсталлятор не работает в 64-разрядном режиме, иначе эквивалентна {pf64}. {pf32} Путь к 32-разрядной системной папке Program Files, обычно "C:\Program Files" в 32-разрядном Windows и "C:\Program Files (x86)" в 64-разрядном Windows. {pf64} Только для 64-разрядного Windows: 64-разрядные программные файлы. Путь к 64-разрядной системной папке Program Files, обычно "C:\Program Files". Будет исключение, если предпринять попытку использования этой константы в 32-разрядном Windows. {cf} Общие файлы - Common Files. {cf} эквивалентна {cf32}, если инсталлятор не работает в 64-разрядном режиме, иначе эквивалентна {cf64}. {cf32} 32-разрядные общие файлы. Путь к 32-разрядной системной папке Common Files, обычно "C:\Program Files\Common Files" в 32-разрядном Windows и "C:\Program Files (x86)\Common Files" в 64-разрядном Windows. {cf64} Только для 64-разрядного Windows: 64-разрядные общие файлы. Путь к 64-разрядной системной папке Common Files, обычно "C:\Program Files\Common Files". Будет исключение, если предпринять попытку использования этой константы в 32-разрядном Windows. {tmp} Временная папка. Это не значение переменной среды TEMP пользователя. Это папка, где создаются временные файлы инсталлятора ("C:\WINDOWS\TEMP\IS-xxxxx.tmp"). Все файлы и папки удаляются из папки Temp после завершения установки приложения. Эта константа используется в случае, если в секции [Run] указаны файлы, необходимые при инсталляции, но не нужные для дальнейшей работы приложения. {fonts} Папка шрифтов. Обычно именуется FONTS и находится в папке Windows. {dao} Папка DAO. Эквивалентна {cf}\Microsoft Shared\DAO. {dotnet11} 32-разрядная корневая папка .NET Framework версии 1.1. Будет исключение, если предпринять попытку использования этой константы в системе, где не установлена .NET Framework версии 1.1. {dotnet20} Корневая папка .NET Framework версии 2. {dotnet20} эквивалентна {dotnet2032}, если инсталлятор не работает в 64-разрядном режиме, иначе эквивалентна {dotnet2064}. Будет исключение, если предпринять попытку использования этой константы в системе, где не установлена .NET Framework версии 2. {dotnet2032} 32-разрядная корневая папка .NET Framework версии 2. Будет исключение, если предпринять попытку использования этой константы в системе, где не установлена .NET Framework версии 2. {dotnet2064} Только для 64-разрядного Windows: 64-разрядная корневая папка .NET Framework версии 2. Будет исключение, если предпринять попытку использования этой константы в системе, где не установлена .NET Framework версии 2. {dotnet40} Корневая папка .NET Framework версии 4. {dotnet40} эквивалентна {dotnet4032}, если инсталлятор не работает в 64-разрядном режиме, иначе эквивалентна {dotnet4064}. Будет исключение, если предпринять попытку использования этой константы в системе, где не установлена .NET Framework версии 4. {dotnet4032} 32-разрядная корневая папка .NET Framework версии 4. Будет исключение, если предпринять попытку использования этой константы в системе, где не установлена .NET Framework версии 4. {dotne4064} Только для 64-разрядного Windows: 64-разрядная корневая папка .NET Framework версии 4. Будет исключение, если предпринять попытку использования этой константы в системе, где не установлена .NET Framework версии 4. Константы специальных папок В Inno Setup используются и другие константы, именуемые константами специальных папок. Используются они так же, как и константы папок. Константы "common" являются общими для всех профилей пользователей. Константы "user" берутся из профиля текущего пользователя, от имени которого выполняется инсталлятор. А пользователь часто не тот, который находится в системе, так что используйте константы "user" с осторожностью. Как уже говорилось, константы специальных папок применимы ко всем версиям Windows, поддерживающих Inno Setup. * = константа "common" равна константе "user", если пользователь, устанавливающий приложение, является администратором или PrivilegesRequired=lowest {group} Путь к группе меню Пуск, который пользователь может изменить на странице Выберите папку в меню «Пуск». Эта папка всегда создается для всех профилей пользователей, если только пользователь, устанавливающий приложение, не имеет прав администратора, иначе путь задается только для профиля текущего пользователя. {localappdata} Путь к локальной папке приложения (не Roaming). {sendto} Путь к папке Send To пользователя (общей Send To папки нет). {userappdata} & {commonappdata} Путь к папке с данными приложения (Application Data). {usercf} Путь к папке Common Files текущего пользователя. Константа поддерживается только в Windows 7 и более поздних версиях. При использовании в предыдущих версиях Windows значение константы будет заменено на {localappdata}\Programs\Common. {userdesktop} & {commondesktop} * Путь к папке рабочего стола. {userdocs} & {commondocs} Путь к папке Мои документы. {userfavorites} & {commonfavorites} * Путь к папке Избранное. {userpf} Путь к папке Program Files текущего пользователя. Константа поддерживается только в Windows 7 и более поздних версиях. При использовании в предыдущих версиях Windows значение константы будет заменено на {localappdata}\Programs. {userprograms} & {commonprograms} * Путь к папке Программы в меню Пуск. {userstartmenu} & {commonstartmenu} * Путь к "корню" меню Пуск. {userstartup} & {commonstartup} * Путь к папке Автозагрузка в меню Пуск. {usertemplates} & {commontemplates} * Путь к папке шаблонов. Прочие константы {\} Обратный слеш. Прочитайте в начале этой страницы о правилах использования {\} и \. {%NAME|DefaultValue} Вставляет значение переменной среды.
Код:
{%COMSPEC} {cmd} Полный путь к стандартному системному интерпретатору. Это обычно Windows\System32\cmd.exe. При этом переменная среды COMSPEC не используется. {computername} Имя компьютера, на котором запущен инсталлятор или деинсталлятор (результат функции GetComputerName). {drive:Path} Возвращает букву диска и двоеточие из указанного пути (например, "C:"). В случае установки через сеть возвращает имя сервера и имя общего документа (например, "\\SERVER\SHARE").
Код:
{drive:{src}} {groupname} Имя папки, которую пользователь выбрал на странице Выберите папку в меню «Пуск». В отличие от константы {group} эта константа равна имени папки «Пуск», а не полному пути к ней. {hwnd} (Специального назначения) Дескриптор фонового окна инсталлятора. {wizardhwnd} (Специального назначения) Дескриптор окна мастера инсталлятора. Равен '0', если на момент обращения окно не существует. {ini:Filename,Section,Key|DefaultValue} Берет значение из .INI файла.
Код:
{ini:{win}\MyProg.ini,Settings,Path|{pf}\My Program} {language} Встроенное имя выбранного языка. Для справки обратитесь к секции [Languages]. {cm:MessageName} {cm:MessageName,Arguments} Возвращает стандартное сообщение на заданном языке.
Код:
{cm:LaunchProgram,Inno Setup} {reg:HKxx\SubkeyName,ValueName|DefaultValue} Возвращает значение реестра.
Код:
{reg:HKLM\Software\My Program,Path|{pf}\My Program} {param:ParamName|DefaultValue} Возвращает параметры командной строки.
Код:
{param:Path|{pf}\My Program} {srcexe} Полный путь инсталлятора, например "C:\SETUP.EXE". {uninstallexe} Полный путь деинсталлятора, например "C:\Program Files\My Program\unins000.exe". Эта константа чаще всего используется в секции [Icons] для задания иконки деинсталлятора. Действует только если директиве Uninstallable секции [Setup] присвоено значение yes (по умолчанию). {sysuserinfoname} {sysuserinfoorg} Имя и организация, соответственно, к которым зарегистрирован Windows. Эта информация берется из реестра. {userinfoname} {userinfoorg} {userinfoserial} Имя, организация и серийный номер, которые пользователь указал на странице Информация о пользователе (эту страницу можно активировать директивой UserInfoPage). Обычно эти константы используются в секциях [INI] и [Registry], чтобы сохранить их значения для дальнейшего использования. {username} Имя пользователя, запустившего инсталлятор или деинсталлятор (результат функции GetUserName). {log} Имя файла системного журнала, или пустая строка, если журналирование не включено. |
Nordek, спасибо, но русифицированный ISetup.chm имеется, только заглядываю я туда по случаю, как раз такой случай был несколькими часами тому назад.
|
подскажите пожалуйста как прописать 4 exe файла в скрипте
вот скрип с файлами http://rgho.st/8TsjZx2Y6 |
web_form
[Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application [Files] Source: "MyProg-1.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "MyProg-2.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "MyProg-3.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "MyProg-4.exe"; DestDir: "{app}"; Flags: ignoreversion |
ZVSRus, выдает ошибку https://s8.hostingkartinok.com/uploa...81328d7ca2.png
я прописал и так не получилось //===== [Game exe 1] =====\\: #define LinkName "Начать сетевую игру Call of Duty" #define ExeName "CoDMP.exe" #define ExeIco "CoDMP.exe" ////===== [Game exe 2] =====\\: #define LinkName2 "Начать одиночную игру Call of Duty" #define ExeName2 "codsp.exe" ////===== [Game exe 3] =====\\: #define LinkName2 "Call of Duty - United Offensive Сетевая игра" #define ExeName2 "CoDUOMP.exe" ////===== [Game exe 4] =====\\: #define LinkName2 "Call of Duty - United Offensive Одиночная игра" #define ExeName2 "CoDUOSP.exe" |
web_form, написано, что исходный файл не найден по указанному пути.
|
Iska, но я указал правильно путь к файлу
|
web_form
Проверь правильность пути, на вашем скрине и на примере что выше файлы должны лежать рядом со скриптом, если файлы лежат где то в папке, пропиши путь. |
Цитата:
Также убедитетесь, что: У вас CoDMP.exe а не СoDMP.exe. |
ZVSRus, как это сделать?
|
web_form
Где у вас лежит CoDMP.exe (в папке или ещё в подпапке) |
ZVSRus, может через TeamViewer поможете ,я вам личику пароль и логин скинул ,дело на 5 минут
https://s8.hostingkartinok.com/uploa...6dae035165.png |
Цитата:
Код:
Source: "CoDMP.exe"; DestDir: "{app}"; Flags: ignoreversion Код:
Source: "New Folder\CoDMP.exe"; DestDir: "{app}"; Flags: ignoreversion |
web_form
Зайдите в папку где лежат у вас файлы для установки, далее скопируйте адрес из адрессной строки и покажи. Например так: D:\!!!_РАЗДАЧА-3_!!!\YTD Video Downloader PRO 5.9.2 RePack (& Portable) by ZVSRus В этой папке у меня лежат 4 файла. |
ZVSRus, может через TeamViewer поможете я так нечего не понимаю так быстрее будет и по понятнее
430 691 576 518btj |
web_form
То что вы показываете, я в этом круглый 0 PS: Что вы хотите сделать игру или программу? |
ZVSRus, игру
там нечего сложного видёте мой ID и пароль и подключаетесь мой компьютер у вас рабочем столе открывается мой рабочи стол там как бы вы управляете моим компоп |
web_form, что непонятного-то? Файла по указанному пути нет. Коллега Nordek по Вашему скриншоту показал, где он на самом деле есть:
Цитата:
|
Iska, пробовал и так выдает ту же ошибку
|
web_form
Не рановато браться за такой скрипт, если вы не знаете где у вас лежат файлы, здесь экстрасенсов нет. |
Цитата:
Main.iss MyGame\File1.exe MyGame\File2.exe MyGame\File3.exe MyGame\File4.exe MyGame\File5.exe В этом случае, в секции [Files] будет выглядеть так: Код:
[Files] Если у вас файлы расположены рядом со скриптом Main.iss: Main.iss File1.exe File2.exe File3.exe File4.exe File5.exe то в секции [Files] будет выглядеть так: Код:
[Files] |
на рабочем столе не отображается 4 ярлыка толька один
|
web_form
[Icons] Name: "{commondesktop}\MyProg-1"; Filename: "{app}\MyProg-1.exe"; Name: "{commondesktop}\MyProg-2"; Filename: "{app}\MyProg-2.exe"; Name: "{commondesktop}\MyProg-3"; Filename: "{app}\MyProg-3.exe"; Name: "{commondesktop}\MyProg-4"; Filename: "{app}\MyProg-4.exe"; |
Nordek, ZVSRus, спасибо вам получилось
|
ребята как убрать
|
Цитата:
Код:
[Messages] |
спасибо
|
парни как сделать если программа устанавливается скрытно,
что бы на это время вышла рамка (идёт установка) и после установки рамка исчезла. |
Цитата:
Код:
[Run] |
да как вариант пойдёт , но у меня немного другое
скрипт
[Setup] DisableWelcomePage=True DisableReadyPage=True DisableReadyMemo=True DisableFinishedPage=True AppName=Patcher AppVersion=1 AppCopyright=Dilan RestartIfNeededByRun=False CreateAppDir=False UsePreviousGroup=False DisableProgramGroupPage=yes Uninstallable=no VersionInfoVersion=1 VersionInfoTextVersion=1 VersionInfoProductVersion=1 OutputBaseFilename=Patcher Compression=lzma2/ultra64 InternalCompressLevel=ultra64 CompressionThreads=2 AllowCancelDuringInstall=False TimeStampsInUTC=True [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Dll Pack\ISSkin.dll"; DestDir: "{app}"; Flags: ignoreversion dontcopy Source: "C:\Program Files (x86)\Inno Setup 5\IS_Skin\Styles\Chromium.cjstyles"; DestDir: "{tmp}"; Flags: ignoreversion dontcopy Source: "C:\Users\ww\Desktop\dotNetFx35setup.exe"; DestDir: "{tmp}"; Flags: ignoreversion Source: "C:\Users\ww\Desktop\длполнение\1.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "..\Mo.exe"; DestDir: "{tmp}"; Flags: ignoreversion [Messages] SetupWindowTitle=%1 [Run] Filename: "{app}\1.exe" Код:
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); |
Цитата:
|
А что мешает запускать/устанавливать через секцию Run? Или зачем через секцию Code это делать?
вносятся изменения в программу так как скрытый инстал оригинальный |
Цитата:
|
Всё до пилил (Если долго мучиться, что ни-будь получиться) Золотые слова. |
|
pollipen,
Код:
WizardForm.DirBrowseButton.SetBounds(тра ла ла); |
подскажите вот такой случай :
где и что прописать на СКРЫТУЮ установку софта ( например PhysX ) после установки самого репака ? |
Цитата:
Код:
[Tasks] |
Здравствуйте. Возможно задам глупый вопрос, но может ли inno перезаписать фалы в архиве (архив формата .pack)?
|
Цитата:
|
в процессе сборки установщика вылезает ошибка с надписью "Ошибка компилятора""Не удается найти указанный файл" и ссылается на проблемный файл, в названии которого присутствуют чешские или венгерские
буквы. подскажите как решить эту проблему, терпения не хватит переименовывать тысячу файлов) |
Как изменить текст на MessageBox на при нажатии кнопки "Cancel" ?
|
pakuwacenu,
Код:
[Messages] |
Цитата:
|
pakuwacenu,
Код:
[CustomMessages] |
Цитата:
Line 51: Column 8: Unknown identifier 'MsgBoxEx' Не использую Inno Setup Ultra Немного не так, нужно чтобы не было секции [CustomMessages], весь текст сообщения должен быть полностью в коде (секция [code]) |
Цитата:
|
Добрый день!
Подскажите пожалуйста - как в окне выбора папки добавить чекбокс с возможность выбора установки (Steam, No Steam) со сменой пути, при смене пункта в чекбокс? Пример как это сделать в отдельном окне видел, но как в окне выбора папки это реализовать самостоятельно разобраться не могу. |
Цитата:
|
Цитата:
|
Добрый день!
Подскажите еще пожалуйста - возможно ли сделать проверку MD5 группы файлов не используя ResTools? |
|
Цитата:
|
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin Confirm:=False; Cancel:=False; MsgBox('Are you sure you want to cancel {#AppName} installation?', mbInformation, MB_YESNO); end; Как сделать кнопки рабочими ? |
Цитата:
|
Здравствуйте, при создании инсталлятора я столкнулся с проблемой. Мне нужно сделать несколько кастомных страниц с выбором компонентов, а также с превью и описанием компонентов, желательно через botva2. Кто-нибудь знает, как это можно реализовать?
|
Inno Setup Scripting 5.1 от Kindly
https://yadi.sk/d/zLRic4yZ3TvyHM MD5: 8864d4574596690b9d9f282e2d4d6a64 3 МБ |
Вложений: 2
Здравствуйте, уважаемые пользователи форума Oszone.net. Нужна ваша помощь!
2.Можно ли установить изображение, не важно в каком формате(см.скрин.1); 3.Можно ли поставить текст, допустим: разработано кем-то и т.д.(см.скрин.1); 4.Почему-то не указывается выбор установки: полная, кастомная и т.д., наверно я опять накосячил где-то(см.скрин.2); 5.Как сделать, чтобы при наведении на компонент отображалось изображение, именно в моём коде.(см.скрин.2) -- Заранее спасибо вам огромное! Если найду ответы на свои вопросы, то сразу буду зачёркивать пункты. Cекции Types and Components
Код:
[Types] Секция CODE
Код:
var |
Цитата:
|
Цитата:
Цитата:
|
Тема будет закрыта и переведена в архивное состояние.
Продолжаем тут: Скрипты Inno Setup. Помощь и советы [часть 9] |
Время: 12:42. |
Время: 12:42.
© OSzone.net 2001-