Показать полную графическую версию : [архив] Inno Setup .:[все вопросы]:.
snark, несколько упрощенный ваш батник
@ECHO off
"%ProgramFiles%\Inno Setup 5\Compil32" /cc "%1"
EXIT
Команда на запуск: script.bat имя_скрипта.iss
При предложенной вами структуре каталога указывать путь к скрипту не нужно, плюс батник обрабатывает скрипты с любым именем
Ну и для "совсем ленивых" :wink: ! В реестр добавьте след информацию:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.iss]
@="InnoSetupScriptFile"
[HKEY_CLASSES_ROOT\InnoSetupScriptFile\shell\CompileWithInnoSetup]
@="Compile with I&nnoSetup"
[HKEY_CLASSES_ROOT\InnoSetupScriptFile\shell\CompileWithInnoSetup\command]
@="\"C:\\Program Files\\Inno Setup 5\\Compil32.exe\" /cc \"%1\""
и будете компилировать из контекстного меню.
(проверьте только путь к компилятору. он может отличаться от здешнего)
HiGH_ZeRO
05-02-2008, 17:40
Вопрос
Есть Autpost firewall pro 2008 исталятор Inno 5.2.1!
Делаю "OutpostProInstall_ru.exe /VERYSILENT /SP-" - но всеравно вилазит окошко выбора языка!
Вопрос как забрать ето окошко или подскажыте чем распаковать Inno 5.2.1 - пробовал Inno Setup unpacker но он говорит что неможет распаковать что файы установки повреждены хотя інсталяция проходит нормально
HiGH_ZeRO
поставь в скрипте инно
[Setup]
ShowLanguageDialog=no
а innounp забирай отсюда (http://webfile.ru/1726107) (88 кб)
Делаю "OutpostProInstall_ru.exe /VERYSILENT /SP-" - но всеравно вилазит окошко выбора языка! »
/LANG=language
Задает используемый язык. language задает имя языка, заданного в параметре секции
[Languages]. При использовании параметра /LANG появляется диалог Выбор языка установки.
HiGH_ZeRO
05-02-2008, 20:31
boss911
спасибо незаметил
Теперь делаю так
OutpostProInstall_ru.exe /SILENT /LANG=ru /NORESTART - язык вибирается руский но нет тихой установки а появляется стандартое окно продолжения инсталяции
OutpostProInstall_ru.exe /LOADINF="1.inf" /SILENT /NORESTART - такой метод тоже неработает
А содержимое 1.inf уж больно маленькое:
[Setup]
Lang=ru
Dir=D:\Program Files\Agnitum\Outpost Firewall Pro
Group=Agnitum
NoIcons=0
Tasks=
HiGH_ZeRO
Попробуйте так:
OutpostProInstall_ru.exe /VERYSILENT /SP- /LANG=ru
HiGH_ZeRO
05-02-2008, 21:48
Код:
OutpostProInstall_ru.exe /VERYSILENT /SP- /LANG=ru »
Не работает
А если извлечь и добавить[Setup]
ShowLanguageDialog=no »
То при компиляции возникает куча ошибок:
В скрипте инсталятора указываются пути к файла которых несуществует например:
Source: "{code_GetDest}\zlib,2.dll"; DestDir: "{code:GetDest}"; DestName: "zlib.dll"; AfterInstall: "UpdateComponentControl"; Flags: restartreplace overwritereadonly uninsrestartdelete ignoreversion uninsremovereadonly
mvnmvbnfxcs
zlib,2.dll -такого файла нет есть только zlib,1.dll
когда я удаляю ети ветки то следущая ошибка нет файла licence, я в нужной папке делаю файл licence и после етого выбивает ошыбку {code:GetDest} нет такой переменной
Ветки не удаляй, а сделай из этого файл *,2. Таких там куча будет. На 110 линии кричит, что SandBox.cat нету. А его и правда нет. Чо делать? Попробую накатить из дистрибутива и поискать в виндах.
И по поводу языка установки: в этой версии еще не дошел, но в прошлой, да и во всех инсталяхах, где есть несколько языков, удаляю все нерусские файлы, в секции [Files] удаляю все строки, со ссылками на них, секцию [CustomMessages] тоже чищу, ну и по мелочам, в каждой инсталяхе по разному, но понять без проблем. На выходе имеем только русский язык и меньший размер дистрибутива.
и в секции [Languages] оставляй только ru
HiGH_ZeRO
10-02-2008, 00:13
SandBox.cat - есть но в другом каталоге. Я потом посмотрел ето просто дублируются строчки незнаю почему!
Мне уже позно разбиратся- написал AUTOIT скрипт сразу с регистрацыей :)
Чем лучше всего защитить сборку, скомпилированную с помощью Inno, от распаковывания?
ChVL
в корне папки программы InnoSetup есть файл ISCrypt.dll. Это модуль криптования, и его необходимо скачивать отдельно. Подробнее тут (http://www.jrsoftware.org/isdl.php), там же и ссылка на закачку.
[Setup]: Encryption
Valid values:
yes or no
Default value:
no
Description:
If set to yes, files that are compiled into the installation (via [Files] section entries) will be encrypted using ARCFOUR encryption, with a 128-bit key derived from the value of the Password [Setup] section directive.
Because of encryption import/export laws in some countries, encryption support is not included in the main Inno Setup installer and must be downloaded and installed separately if you wish to use it. See the Inno Setup Downloads page for more information.
If encryption is enabled and you call the ExtractTemporaryFile function from the [Code] section prior to the user entering the correct password, the function will fail unless the noencryption flag is used on the [Files] section entry for the file.
The key used for encryption is a 128-bit MD5 hash of 64-bit random salt plus the value of Password.
При распаковке инсталляционного файла, защищенного паролем, программа распаковки запросит пароль.
в скрипте добавить строки
[Setup]:
Encryption=true
Password=123456
unikum111
13-02-2008, 03:39
Вопрос: при установки собранных с помощью данного инсталятора программ при выборе пункта "Запустить программу такую-то" (по окончании установки) инсталлятор не закрывается, а уходит в свёрнутый режим, и закрывается только после закрытия программы. Как это можно исправить?
В скрипте в секции [Run] указываем след. флаг:
Было:
Filename: {app}\dmaster.exe; Description: Запустить Download Master; Flags: postinstall unchecked
Стало:
Filename: {app}\dmaster.exe; Description: Запустить Download Master; Flags: postinstall unchecked nowait
nowait - не ждать завершения запущенной программы и выйти из установки
unikum111
13-02-2008, 04:21
Вот так всё просто, мог бы и сам догадаться=)
Спасибо!
snark,
Вообще-то работает, но чрезвычайно криво.
Открываю запароленный MyProg.exe в Inno Setup Unpacker'e и он спокойно показывает всё содержимое сборки (впрочем, мне это тоже бы не хотелось). Даю команду распаковать и он, как обычно, просит папку. Тыкаю носом - всё, Unpacker намертво зависает. До этого момента, правда, успевает появиться папка {app} с файликом is-00001.tmp нулевого объёма. Никакого запроса пароля не последовало.
В принципе такой сценарий устраивает и даже вполне - это какой же будет мат при попытке распаковать.... Однако, смешно: я ведь тоже не смогу это сделать. Не дай Бог потерять исходники... И зачем тогда пароль?
Для справки:
Inno Setup Compiler 5.2.2
Inno Setup Unpacker 5.2.1
ChVL, содержимое сборки - это еще не весь скрипт :)
Я пробовал распаковывать тестовую программу (сделано Inno Setup Compiler 5.2.2) через Uniextract 1.5 + innounp.exe v 0.20 (перепакованная версия с обновленными модулями). Распаковать пытается, спрашивает пароль; если пароля нет - тогда "до свиданья"...
я ведь тоже не смогу это сделать. Не дай Бог потерять исходники... И зачем тогда пароль? »
пароль хранится в открытом виде в скрипте - достаточно просто сделать резервную копию, чтоб быть уверенным, что не придется взламывать свои же наработки. Пароль - против тех, от кого нужно скрыть содержимое скрипта.
snark,
Спасибо за деятельное участие.
Ещё. Как построить процедуру введения в скрипт внешних данных через ключ? Например, необходимо ввести в реестр регистрационные данные, которые у каждого пользователя программой свои. Понятно, что для внутреннего использования всё вводится прямо в скрипт.
jameszero
14-02-2008, 12:05
ChVL
Если предусматривать поля для ввода регистрационных данных во время установки, то нужно будет "рисовать" эти поля в секции , не скажу, что это просто... мануалы почитать придётся.
А с помощью ключей установки регистрацию можно реализовать так:
В скрипт добавляется секция [code]
[CODE]
[code]
function GetSerial(Param: String): String;
begin
if ExpandConstant('{param:SERIAL}') = '' then
Result := ExpandConstant('{cm:DemoSerial}')
else Result := ExpandConstant('{param:SERIAL}')
end;
function GetName(Param: String): String;
begin
if ExpandConstant('{param:USER}') = '' then
Result := ExpandConstant('{sysuserinfoname}')
else Result := ExpandConstant('{param:USER}')
end;
function GetOrganisation(Param: String): String;
begin
if ExpandConstant('{param:COMPANY}') = '' then
Result := ExpandConstant('{sysuserinfoorg}')
else Result := ExpandConstant('{param:COMPANY}')
end;
В [CustomMessages] и [Registry] добавляется
[CustomMessages]
DemoSerial=1111-2222-3333-4444
[Registry]
Root: HKLM; SubKey: SOFTWARE\Program; ValueType: string; ValueName: Serial; ValueData: {code:GetSerial}
Root: HKLM; SubKey: SOFTWARE\Program; ValueType: string; ValueName: User; ValueData: {code:GetName}
Root: HKLM; SubKey: SOFTWARE\Program; ValueType: string; ValueName: Company; ValueData: {code:GetOrganisation}
Установка программы с регистрацией:
program.exe /SERIAL=9999-8888-7777-6666 /USER=Pupkin /COMPANY=Home
При установке программы без ключей, подхватится демонстрационный серийный номер из секции [CustomMessages], а имя пользователя и название организации будут взяты системные из Windows
jameszero,
Понял, спасибо! Особенно интересна последняя фишка. А вот если б ещё без ключей прописывалось "демонстрационное" имя - цены бы ей не было...
К сожалению, дальнейшие исследования функции Encryption показали её полную несостоятельность. Оказалось, что если в секции [Setup] происана строка Encryption, причём, неважно(!) с каким значением: yes или no, то при попытке инсталляции сборки запрашивается Password. Мне это совсем не надо. Что-то тут Jordan Russell или Martijn Laan явно перемудрили (или недомудрили). Если же строку Password не писать или оставить пустой - не компилируется.
Похоже, придётся искать стороннюю программу для защиты от распаковки...
jameszero
14-02-2008, 21:19
ChVL
если б ещё без ключей прописывалось "демонстрационное" имяЕсли я правильно понял вопрос, то это делается по аналогии с серийным номером.
При отсутствии ключа /USER, в реестр пропишется слово Tester
[CustomMessages]
DemoSerial=1111-2222-3333-4444
DemoName=Tester
[code]
function GetSerial(Param: String): String;
begin
if ExpandConstant('{param:SERIAL}') = '' then
Result := ExpandConstant('{cm:DemoSerial}')
else Result := ExpandConstant('{param:SERIAL}')
end;
function GetName(Param: String): String;
begin
if ExpandConstant('{param:USER}') = '' then
Result := ExpandConstant('{cm:DemoName}')
else Result := ExpandConstant('{param:USER}')
end;
...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.