Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 8]
Optitron
24-11-2016, 09:40
nik1967, Спасибо!
Еще такой вопрос, можно ли создавать собственные ключи командной строки, пр.: чтобы не писать "/Components=Directx", а просто "/Directx".
Dodakaedr
24-11-2016, 22:07
Подскажите, можно ли как-то в секции Setup для параметра UninstallLogMode задать определенное условие? Что-то типа такого:
[Setup]
...
UninstallLogMode={code:GetUniMode}
[code]
function GetUniMode(s: string): string;
begin
if условие then
s := 'new' else s := 'append';
Result := s;
end;
Всем привет.
есть кто в этой проге силен ? Мне надо сделать просто Setup что бы файлы распаковывались в свои папки и всё, кто может помочь? С меня 100р за простую работу, напишите в лс кто согласен :)
El Sanchez
29-11-2016, 12:07
можно ли как-то в секции Setup для параметра UninstallLogMode задать определенное условие? »
Dodakaedr, нет, и я не советую для данной директивы менять значение по умолчанию.
Optitron
02-12-2016, 10:15
Здравствуйте. Не подскажите, как сделать так, чтобы при выборе компонента "1" его дефолтный путь установки был выбран как обычно (в Program Files), а при выборе компонента "2" дефолтный путь был бы установлен на рабочий стол (при этом путь установки можно поменять).
Optitron, Например так (В данном примере рассматривается включённый в инсталлятор отдельный файл):
[Components]
Name: cmp1; Description: Компонент 1
Name: cmp2; Description: Компонент 2
[Files]
Source: File.exe; DestDir: {app}\Application; Flags: ignoreversion; Components: cmp1
Source: File.exe; DestDir: {userdesktop}\Application; Flags: ignoreversion; Components: cmp2
Или например так (В данном примере рассматривается включённый в инсталлятор каталог с файлами и подкаталогами):
[Components]
Name: cmp1; Description: Компонент 1
Name: cmp2; Description: Компонент 2
[Files]
Source: Folder\*; DestDir: {app}\Application; Flags: ignoreversion recursesubdirs createallsubdirs; Components: cmp1
Source: Folder\*; DestDir: {userdesktop}\Application; Flags: ignoreversion recursesubdirs createallsubdirs; Components: cmp2
В обоих вариантах для "Компонент 2" используется константа {userdesktop} - означает, что файлы или каталог с файлами будут размещены на Рабочем столе текущего пользователя. Если нужно чтоб расположение для файлов было размещено для всех пользователей, используйте константу {commondesktop}
Учтите, что для "Компонент 2" путь жёстко привязан.
Optitron
02-12-2016, 17:30
Nordek, Спасибо, но мне как раз таки нужно, чтобы для компонента "2" путь был привязан не жестко, например изначально он задавался бы на рабочий стол, но его можно было бы поменять.
R.i.m.s.k.y.
05-12-2016, 09:18
Подскажите, пожалуйста, как можно в секции реестра подставлять в путь выхлоп функции из секции code
Прокатит так?
[Registry]
Root: HKU; SubKey: {code:GetOriginalSID}\www; ValueType: binary; ValueName: www_setup; ValueData: 12345
________
ап: да, прокатило
Добрый вечер! Подскажите пожалуйста, что такое модуль IDP в Inno Setup и как его убрать? Дело в том, что при компиляции у меня практически всегда файл setup с вирусом HEUR/QVM06.1.0000.Malware.Gen (при проверке через virustotal.com). Нашла такую фразу
HEUR/QVM06.1.0000.Malware.Gen (например в Qihoo-360) - это ложно положительное срабатывание, например, на инсталлятор Inno Setup с модулем IDP, нужен для скачивания недостающих файлов во время установки.. Так вот и думаю, может как то убрать этот модуль и тогда на virustotal не будет показывать, что в установщике вирус, ведь я вирусов не добавляю и во время установки тоже ничего не скачивается. Надеюсь на ответ. Спасибо)
RADEON73
19-12-2016, 15:36
Только начал освоение 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
20-12-2016, 20:20
но он воспринимает функцию ProjectName как текст, а нужно чтобы он считывал путь из нее »
RADEON73, ProjectName без кавычек сделайте, это ж переменная, а не литерал.
Притом оба этих файла распаковываются только во время установки, то есть окно выбора должно появляться после распаковки файлов »
RADEON73, если устанавливаются оба, то путь второго файла-параметра известен, зачем тогда указывать?
RADEON73
21-12-2016, 08:03
El Sanchez, Вот я краб, все так просто путь сработал, сейчас остальные параметры прикрутить попробую...выбор второго файла обусловлен тем что программа инсталлятора задумывается как шаблон, в котором потом будут менять отдельные файлы копируемого содержимого внутри папок и компилировать заново , и будут меняться названия файлов... человек который будет это делать - не я... требовать от него называть файл одним и тем же именем каждый раз так себе решение..., подумывал сделать тупо поиск по маске расширения, и автоматический выбор, но есть вероятность что там единовременно окажутся несколько файлов с одинаковым расширением, поэтому остановился на ручном вводе...если есть другие идеи было бы интересно услышать
El Sanchez
21-12-2016, 09:19
сейчас остальные параметры прикрутить попробую »
RADEON73, пока вы не начудили:
if GetOpenFileName('', ProjectName, '', 'Text Documents (*.txt)|*.txt|All Files|*.*', 'txt') then
begin
ProjectName := Format('"%s" -l -c', [ProjectName]);
CreateShellLink(ExpandConstant('{userdesktop}\') + 'XXX.lnk', '', ExpandConstant('{app}\') + 'Просто_путь\{#XXXName}' , ProjectName, '', 'D:\IS FILES\eye.ico', 0, SW_SHOWNORMAL);
end;
RADEON73
21-12-2016, 09:44
El Sanchez, Буду иметь ввиду, но я использовал уже такой вариант (ExpandConstant(ProjectName) + ' -l -c'), вроде работает, вопрос другой появился, при создании ярлыков через секцию кода, как прикрутить на их создание условие от галочек
"Не устанавливать ярлыки на рабочий стол..."
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}";
И "Не создавать папку в меню пуск?"
AllowNoIcons=yes
Этот скрипт создает ярлыки в любом случае ( даже при выключенной галочке рабочий стол), и выдает ошибку если папки {group} не существует ( в случае если отказаться от установки в меню пуск)...может можно проверку как-нибудь на состояние переменной прикрутить?
El Sanchez
21-12-2016, 12:29
но я использовал уже такой вариант (ExpandConstant(ProjectName) + ' -l -c'), вроде работает »
RADEON73, возможен сценарий, когда пользователь укажет путь, содержащий в себе папки с именами вида {чего-нибудь}. ExpandConstant будет пытаться раскрывать такие имена и обломается с руганью.
может можно проверку как-нибудь на состояние переменной прикрутить? »
RADEON73, проверка выбрана ли задача - функция IsTaskSelected, проверка "Не создавать папку в меню пуск?" - функция WizardNoIcons.
RADEON73
21-12-2016, 14:39
El Sanchez, Первое проверил, и правда ругается, хотя шанс что такая папка попала бы в рамках этого инсталлятора стремиться к нулю, но на всякий случай переписал, спасибо...
Второе попробую завтра :)
habib2302
24-12-2016, 13:07
Доброе время суток. Возможно ли выгрузить dll-файл без завершения процесса Explorer?
Bio_Hazard
24-12-2016, 19:39
Здравствуйте. Простите за наглость, хотел попросить помощи сделать ингалятор программы с выбором компонентов, режимом установки/распаковки и созданием ярлыков. Если можно, поделитесь скриптом, дальше попробую со всем разобраться. Интерфейс инсталлятора самый простой. Заранее благодарю.
habib2302
24-12-2016, 21:04
Bio_Hazard, для примера https://yadi.sk/d/lpuo1KLi34kri3
Bio_Hazard
24-12-2016, 21:39
habib2302, кроме inno setup еще что-то нужно? При компиляции вылетает ошибка (http://i86.fastpic.ru/big/2016/1224/db/141bc2eeac361b76bd1dee1a354e1bdb.png).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.