Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив] Inno Setup .:[все вопросы]:.

Закрытая тема
Настройки темы
[архив] Inno Setup .:[все вопросы]:.

Новый участник


Сообщения: 6
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: volk1234
Дата: 27-08-2009
Описание: перевел в архив
Лимит страниц.
Тема закрыта.
продолжаем тут:

Inno Setup. Обсуждение установщика

Скрипты Inno Setup. Помощь и советы



Полезные ресурсы:
Официальный сайт| Inno Setup 5.2.3 RU
Русская справка |Зеракало 1| Зеракало 2
ISTool 5.30 |Русификатор
Русификатор ISTool |Зеркало 1|Зеркало 2
Inno Setup Script Generator |Зеркало 1
Unpaker 2.1 от 21.04.2009 - распаковывает инсталляторы, созданные с помощью Inno Setup, начиная с версии 2.0.18 по 5.2.4.
InnoUnpaker 2.6b3 [от valeron87]- можнет просмотривать содержание CompiledCode.bin
Unpaker 0.23 - расширенная китайская версия 2008-08-08 ( модификация)
Unpacker 0.24 | Зеркало 1 | Зеркало 2 - Inno Setup Unpacker (innounp plus) - расширенная версия распаковщика инсталляторов Inno Setup начиная с версии 2.0.8 по 5.3.0 Beta. Поддерживаются версии Unicode. Русифицирована. Последний релиз: 0.24 [23.05.2009]
Набор Restools
Restools - расширенная версия Inno Setup от китайских разработчиков, добавляет вашему инсталлятору новые возможности по оформлению, а также более удобный редактор скриптов (требуется наличие установленного Preprocessor'а).
Последние версии разработок от Restools:
InnoCompiler090319_English - в него входят файлы: Compil32.exe и Templates.dat;
Inno_ISCmplr_Setup090302 - в него входят файлы, лучше из папки InnoSetup_FullVCL: setup.e32, ISCmplr.dls, ISCmplr.dll и SetupLdr.e32.
InnoCompiler090319_Russian - Русский перевод (80%) от tem000 - NEW !

QuickStart Pack - Inno Setup + Preprocessor (последняя версия ispack-5.2.4-dev)
"Всё в одном" от unikum111
читать дальше »

Цитата unikum111:
В сборку входят следующие компоненты:
Inno Setup compiler 5.2.2 русская версия;
ISTool 5.2.1 русская версия;
Inno Script Generator английская версия;
Inno Setup Unpacker Explorer 1.0 аглийская версия;
Примечание: в Inno Setup Unpacker Explorer 1.0 заменён innounp.exe на тестовую версию 2.0, так что распаковывает инсталляторы вплоть до версии 5.2.2.
Есть возможность выбора компонентов.
Скачать: ifolder, RapidShare, iBox (Размер: 5.34 Mb).»



Полезные мелочи для Inno Setup:

- Converter v.0.1.2 - конвертор REG- файлов в формат скриптов Inno от Serega_ -новая версия
- Как убрать страницу приветствия (wpWelcome) в мастере установки приложения:
- Примеры скриптов на паскале
- Inno Setup Addon 0.07 For Total Commander
- Параметры командной строки инсталляторов InnoSetup:

Код: Выделить весь код
/SP-
Отключает страницу "Эта программа установит... Вы хотите продолжить?" инсталятора. 
Выполнится только если DisableStartupPrompt секции [Setup] равна yes. 

/SILENT, /VERYSILENT  
Установка в ускоренном или очень ускоренном режиме. При установке в ускоренном режиме 
окно мастера и фоновое окно мастера не отображаются, отображается только окно прогресса. 
При очень ускоренной установке окно прогресса тоже не отображается. Остальная установка 
проходит как обычно - отображаются сообщения об ошибках в ходе установки, страница 
приветствия (если ее отображение не отменено директивой DisableStartupPrompt или 
параметром '/SP-' командной строки).

Если после установки необходима перезагрузка, команды '/NORESTART' не дано и установка 
проходит в ускоренном режиме, появится сообщение "Перезагрузить компьютер?". Если режим 
установки очень ускоренный, система перезагрузится не спрашивая.

/LOG 
Указывает инсталятору создать log-файл в папке TEMP для подробного отчета о действиях 
и событиях в секции [Run], предпринятых в ходе установки. Применяется при отслеживании 
ошибок. Например, если вы подозреваете, что файл не был удален, хотя должен был, 
log-файл сообщит, что файл былдействительно пропущен и почему. 

log-файлу присваивается уникальное имя на базе текущей даты. (Существующие файлы не 
перезаписываются и не дополняются). 
Информация, содержащаяся в log-файле, техническая и поэтому не может быть понята 
пользователем. 

/LOG="filename" 
Параметр похож на /LOG, но в отличие от него позволяет указать фиксированный
путь/имя файла для log-файла. Если файл с указанным именем уже существует, он будет 
заменен. Если файл не может быть создан, установка прервется и выдаст сообщение 
об ошибке.

/NOCANCEL  
Не дает пользователю прервать установку, отключая кнопку Отменить и игнорируя клики на 
кнопке Закрыть. Используется в комбинации с '/SILENT' или '/VERYSILENT'. 

/NORESTART 
Указывает инсталятору не перезагружать компьютер даже если это необходимо. 

/RESTARTEXITCODE=exit code  
Задает инсталятору код, который он должен возвратить, если необходима перезагрузка. 
Используется с '/NORESTART'.
См. также Коды выхода инсталятора. (кому интерестно, могу выложить или же доступно в хелпе)

/LOADINF="filename" 
Указывает инсталятору загрузить параметры установки из указанного файла после проверки 
командной строки. Этот файл может быть подготовлен с помощью '/SAVEINF='command.
Не забудьте ставить кавычки при использовании имен, содержащих пробелы. 

/SAVEINF="filename" 
Указывает инсталятору сохранять параметры установки в указанный файл.
Не забудьте ставить кавычки при использовании имен, содержащих пробелы. 

/LANG=language 
Задает используемый язык. language задает имя языка, заданного в параметре секции 
[Languages]. При использовании параметра /LANG появляется диалог Выбор языка установки.

/DIR="x:\dirname" 
Меняет имя папки, заданное по умолчанию, на странице Выбор папки назначения. 
Должен быть задан полный путь. 

/GROUP="folder name" 
Меняет имя папки на странице Выбор папки меню Пуск. Если директива 
DisableProgramGroupPage секции [Setup] равна yes, этот параметр командной строки 
игнорируется. 

/NOICONS 
Указывает инсталятору проверять, выбрана ли команда Не создавать значков на странице 
Выбор папки меню Пуск. 

/COMPONENTS="comma separated list of component names" 
Меняет выбраные по умолчанию компоненты. В этом случае параметр командной строки 
указывает инсталятору менять тип установки на Выборочный. 

/PASSWORD=password  Задает пароль. Если не указана директива Password секции [Setup], 
этот параметр игнорируется. Если введен неправильный пароль, параметр 
также игнорируется.

Отправлено: 21:42, 17-03-2005

 

Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


подскажите как в окне приветствия сдвинуть границу между логотипом и текстом - тоесть чтоб картинки было больше

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

да, и появилось уже какое то решение убрать окно о программе не конфликтующее с форматированием rtf файлов ?

Отправлено: 16:34, 02-06-2009 | #841



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для semiono

Ветеран


Сообщения: 836
Благодарности: 33

Профиль | Отправить PM | Цитировать


Какой синтакс у этого вызова в реестре?
Вот это например понятно
\??\source file
!\??\target file
Переименование нам не нужно, хотя это следует даже из названия, но тем не менее этим ключём можно и удалять!
http://www.pcreview.co.uk/forums/thread-1715654.php
Но я так и не понял всётаки логику, сколько и где надо нулей -
Цитата:
WXP: Right-click the value, choose "Modify Binary Data", click at the
end of the hex string, enter 0000 (four zeros)
Это на словах так легко выглядит! Но я делаю инсталяторы и вот что я нашёл методом подбора-

{olddata} - это предыдущая запись; {break} - это "00" нули; записи соответственно прибавляются друг за другом.
Код: Выделить весь код
"PendingFileRenameOperations"; ValueData: "{olddata}{break}{break}\??\{sys}\mmc.ko"
"PendingFileRenameOperations"; ValueData: "{olddata}{break}\??\{sys}\mmcbase.ko"
"PendingFileRenameOperations"; ValueData: "{olddata}{break}\??\{sys}\mmcndmgr.ko"
"PendingFileRenameOperations"; ValueData: "{olddata}{break}\??\{sys}\hnetwiz.ko"
"PendingFileRenameOperations"; ValueData: "{olddata}{break}\??\{sys}\taskmgr.ko{break}{break}"
Все другие способы не работают почему-то, хотя логика этого мне тоже не понятна! Ну например зачем в начале нужно {break}{break}?
Да и в конце зачем, одного чтоль мало? Причём похоже что реестр сам прибавляет ещё один байт нулей "00"
Но моя запись работает, а проблемма в том что если запустить друг за другом два инсталлера с подобным кодом,
то записи одного из них будут проигнорированны... А мне какраз нужно много инсталлеров!
Кароче сколько там нулей вообще непонятно.

Пока что получается из моих наблюдений такое
{старая_запись} 00 00 \??\Файл1_для_удаления
{старая_запись} 00 \??\Файл2_для_удаления
{старая_запись} 00 \??\Файл3_для_удаления 00 00

Но два раза записать из инсталлеров вызовет проблемму! Один работает нормально...
??

-------
Полезное сообщение


Отправлено: 23:54, 02-06-2009 | #842


Ветеран


Сообщения: 1133
Благодарности: 581

Профиль | Отправить PM | Цитировать


semiono, пережде всего, нужно было написать, что вы делаете инсталляторы на Inno Setup и спрашивать в соответствующей теме.
Цитата semiono:
{olddata} - это предыдущая запись »
{olddata} - означает, что если этот параметр в реестре существует, то он будет дополнен, а не перезаписан.
Цитата semiono:
{break} - это "00" нули »
{break} - это четыре нуля, если быть точнее и означает переход на новую строку.
Все эти команды действительны для REG_MULTI_SZ.
Цитата semiono:
{старая_запись} 00 00 \??\Файл1_для_удаления »
Не понятно, что означают ваши вопросы в строке.
Цитата semiono:
{olddata}{break}{break}\??\{sys}\mmc.ko »
Зачем {break} - перевод в строки в начале записи, это должна сделать предыдущая запись. У вас должно быть так:
Код: Выделить весь код
{olddata}{sys}\mmc.ko{break}
P.S.
И мне не совсем понятна, суть вашего вопроса...

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Последний раз редактировалось Serega, 03-06-2009 в 00:54.

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:37, 03-06-2009 | #843


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Привет всем, уважаемые программисты! Помогите мне (чайнику) разобраться с моим скриптом.

Задача простая.
Мой сетап должен ставить в каталог с программой дополнительные файлы (что он успешно и делает), но при этом необходимо сделать до инсталяции резервную копию одного из заменяемых файлов (вот тут то и проблема, не хочет работать).
При деинсталяции резервный файл надо вернуть на место (до этого еще не дошел).
Файл предполагается копировать в папку "backup" , которая должна создаться в том же каталоге куда инсталятся файлы.

Вот код скрипта полностью:
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
AppName=Death a Board (beta5)
AppVerName=Дополнение к Left 4 Dead
DefaultDirName=C:\Program Files\Steam\SteamApps\Common\left4dead
DefaultGroupName=Death a Board (beta5)
DisableProgramGroupPage=yes
OutputDir=E:\Загрузки\Output
OutputBaseFilename=setup
SetupIconFile=E:\Left4Dead\left4dead\Left 4 Dead Demo.ico
Compression=lzma
SolidCompression=yes

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

[Files]
Source: "E:\Загрузки\Output\left4dead\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[code]
procedure CurStepChanged(CurStep: TSetupStep);
var
s1, s2: string;
begin
s1:=ExpandConstant('{app}')+'\resource\UI\L4D360UI\LoadingPosters.res';
s2:=ExpandConstant('{app}')+'\Backup\left4dead\resource\UI\L4D360UI';
If FileExists(s1) then
begin
CreateDir(s2);
FileCopy(s1, s2+'\LoadingPosters.res', True);
end;
end;

Отправлено: 02:11, 03-06-2009 | #844


Пользователь


Сообщения: 66
Благодарности: 29

Профиль | Отправить PM | Цитировать


dinazav, попробуйте так:
читать дальше »
Код: Выделить весь код
[Setup]
AppName=Death a Board (beta5)
AppVerName=Дополнение к Left 4 Dead
DefaultDirName=C:\Program Files\Steam\SteamApps\Common\left4dead
DefaultGroupName=Death a Board (beta5)
DisableProgramGroupPage=yes
OutputDir=E:\Загрузки\Output
OutputBaseFilename=setup
SetupIconFile=E:\Left4Dead\left4dead\Left 4 Dead Demo.ico
Compression=lzma
SolidCompression=yes

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

[Files]
Source: "E:\Загрузки\Output\left4dead\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

[_Code]
procedure CurStepChanged(CurStep: TSetupStep); 
begin 
if CurStep = ssInstall then 
begin 
CopyFiles(ExpandConstant('{app}\resource\UI\L4D360UI'),ExpandConstant('{app}\Backup\resource\UI\L4D360UI'),('LoadingPosters.res')); 
end; 
end; 

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); 
begin 
if CurUninstallStep = usPostUninstall then 
begin 
MoveFiles(ExpandConstant('{app}\Backup\resource\UI\L4D360UI\'),ExpandConstant('{app}\resource\UI\L4D360UI\'),('LoadingPosters.res')); 
RemoveDir(ExpandConstant('{app}\Backup')); 
end; 
end;

Отправлено: 02:49, 03-06-2009 | #845


Аватара для semiono

Ветеран


Сообщения: 836
Благодарности: 33

Профиль | Отправить PM | Цитировать


Я боюсь что этот вопрос выходит за пределы InnoSetup, причём я обычно не использую
restartreplace флаги, так как мне не нужны диалоги в инсталлере.
Поэтому пытаюсь удалять файлы "ручным способом", кстати это даже интересно.
Цитата Serega_:
{break} - это четыре нуля »
Не уверенн, но раз вы говорите проверю.
Цитата Serega_:
Не понятно, что означают ваши вопросы в строке. »
Это правильная запись сетевых по-моему устройств, не знаю точно, но по крайней мере
это майкрософт придумано - \??\C:\windows...
Хотя я думаю вы в курсе, просто можно было подумать что это я что-то там зашифровал
Хотя я не пробовал напрямую писать без '\??\' может и не будет валидным?
Цитата Serega_:
Зачем {break} - перевод в строки в начале записи »
Я и сам удивлён, но другие варианты у меня никакие не работают!
Хотя я думаю что есть альтернатива? Суть вопроса какраз в том, как правильно удалять
используя PendingFileRenameOperations, но меня не один файлик интересует, а сразу много!
Причём с возможностью добавлять строки из разных подряд запускаемых инсталяторов.
То что вы говорите что брейк вначале не нужен - это верно и я это тоже знаю,
но почему-то на практике работает только именно как у меня было.
Просто если второй инсталятор запишет позади свой код то он уже не будет выполняться.
А вот многократный запуск одного и того же инсталятора хотя он и начинает
дублировать записи но тем не менее файлы будут удалены всё как положенно.
Наверное два инсталлера суммируют какой-то сдвиг по нулям {break} и происходит косяк!

---
То что я записываю в виде:
ValueData: "{olddata}{break}{break}\??\{sys}\mmc.ko"
ValueData: "{olddata}{break}\??\{sys}\mmcbase.ko"
это не принципиально, просто так удобнее код контролировать, хотя можно и в строчку всё оформить:
ValueData: "{olddata}{break}{break}\??\{sys}\mmc.ko{break}\??\{sys}\mmcbase.ko итакдалее"

-------
Полезное сообщение


Отправлено: 06:14, 03-06-2009 | #846


Аватара для -Marshall-

Старожил


Сообщения: 170
Благодарности: 13

Профиль | Отправить PM | Цитировать


Подскажите пожалуйста, как сделать так, чтоб инсталлятор не могли распаковать, как это сделано у Boss911 в его трансформ-паке?

Отправлено: 12:50, 03-06-2009 | #847


Ветеран


Сообщения: 1133
Благодарности: 581

Профиль | Отправить PM | Цитировать


Цитата semiono:
Я боюсь что этот вопрос выходит за пределы InnoSetup »
А вы не бойтесь... это как раз и есть вопрос по Inno Setup.
Цитата semiono:
причём я обычно не использую
restartreplace флаги, так как мне не нужны диалоги в инсталлере. »
Не понятно, причём тут флаг restartreplace и диалоги в инсталляторе?
Цитата из Справки:
restartreplace

Этот флаг необходим при перемещении системных файлов ядра. Если файл существовал ранее и оказался заблокирован инсталлятором из-за невозможности его переместить, инсталлятор зарегистрирует файл (в WININIT.INI или используя MoveFileEx для Windows и Windows NT соответственно), чтобы переместить его после перезагрузки системы. Когда это произойдет, пользователю будет предложено перезагрузить компьютер в конце установки.
Цитата semiono:
Поэтому пытаюсь удалять файлы "ручным способом" »
Вы имеете в виду не создаёте деинсталлятор?
Цитата semiono:
Это правильная запись сетевых по-моему устройств, не знаю точно, но по крайней мере
это майкрософт придумано - \??\C:\windows... »
Вот здесь, я с вами не согласен, это скорей всего, попытка не правильной перекодировки из формата Unicode в ANSI...
Вообще, все инсталляторы делают люди и нельзя сказать с уверенностью, что если вы увидели такую запись у себя в реестре, после установки, какой-нибудь переупакованной игры, что именно эта запись верная... Потому, что перед установкой игры, если цель переупаковать инсталлятор, обычно делают снимок реестра и вместе с нужными ключами реестра для этой игры, пихают весь свой хлам из системы, что вообще не относится к данному инсталлятору. В итоге, получается бардак с реестром. ИМХО.
Цитата semiono:
Суть вопроса какраз в том, как правильно удалять
используя PendingFileRenameOperations, но меня не один файлик интересует, а сразу много! »
Что вы удаляете? откуда? И честное слово, я не телепат... Если вы действительно хотите получить помощь, то показывайте скрипт и объясните нормально, для чего вам записи в PendingFileRenameOperations? и как на основе этих записей вы, что-то собрались удалять?
Одним словом, вопросов встречных много...

P.S.
Вот вам пример скрипта, устанавливайте, сколько угодно раз и всегда будет дописываться ещё одна строка...
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Registry]
Root: HKLM; SubKey: SOFTWARE\My Program; Flags: uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\My Program; ValueType: multisz; ValueName: My Program; ValueData: {olddata}My Program{break}; Flags: uninsdeletevalue uninsdeletekeyifempty


И извините, за мою неточность: {break} - это шесть нолей...

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Последний раз редактировалось Serega, 03-06-2009 в 21:08.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:24, 03-06-2009 | #848


Ветеран


Сообщения: 1133
Благодарности: 581

Профиль | Отправить PM | Цитировать


-Marshall-, используйте шифрование инсталлятора...
Пример
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes
Password=-Marshall-
Encryption=True

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

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}

[_Code]
// пропускаем страницу с вводом пароля
procedure CurPageChanged(CurPageID: Integer);
begin
  If CurPageID = wpPassword then begin
    WizardForm.PasswordEdit.Text := '-Marshall-';
    WizardForm.NextButton.OnClick(WizardForm.NextButton);
  end;
end;

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:09, 03-06-2009 | #849


Аватара для semiono

Ветеран


Сообщения: 836
Благодарности: 33

Профиль | Отправить PM | Цитировать


Цитата Serega_:
Вы имеете в виду не создаёте деинсталлятор? »
Да, uninstall у меня тоже отсутствует.
Цитата Serega_:
Вот здесь, я с вами не согласен, это скорей всего, попытка не правильной перекодировки из формата Unicode в ANSI »
Я не знаю, но можно посмотреть сюда, где полно таких же записей:
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices

Вообще в разделе SYSTEM\Services я встречал какие угодно записи, например
%SystemRoot%\System32 и тут же \SystemRoot\System32 и всё это записи майкрософт по большому счёту,
всмысле если даже \??\ это не правильная запись от \??\\ я тоже с этим согласен.

Цитата Serega_:
Что вы удаляете? откуда? И честное слово, я не телепат »
А какая разница что, если надо удалять?
Конечно же открытые и не доступные для удаления файлы!
К примеру, я заменил Icons ресурсы в taskmgr.exe, или если пофантазировать русифицыровал его, хотя это навряд ли. Впрочем, я ошибаюсь taskmgr легко итак заменить, а вот какие-то DLL ну скажем даже shell32.dll,
то это без перезагрузки не получиться. Сначала я переименовываю файл в shell32.old, потом удаляю.

Цитата Serega_:
Если вы действительно хотите получить помощь, то показывайте скрипт »
Часть скрипта в первом посте, весь целиком он не интересен и большой. Суть вообще-то понятна я думаю..?

Цитата Serega_:
: {break} - это шесть нолей... »
Вы меня опять убили
Я так и не проверял ещё, но раньше вроде заглядывал и между записями путей вроде бы 00 00 было!?...
Где-то это продокументированно в Inno хелпе чтоли?

Пример установки PowerISO:
Код: Выделить весь код
[Setup]
AppName=PowerISO
AppVerName=PowerISO 4.4.0.0
AllowUNCPath=yes
DefaultDirName={code:GetPath}
DirExistsWarning=no
DisableDirPage=yes
DisableFinishedPage=no
DisableProgramGroupPage=yes
DisableReadyMemo=yes
DisableReadyPage=no
ArchitecturesInstallIn64BitMode=x64
Compression=lzma
SolidCompression=yes
OutputDir=..\..\SVCPACK
OutputBaseFilename=PowerISO
TouchDate=2001-01-01
TouchTime=00:00
MinVersion=4.1,4.0
VersionInfoCompany=Semiono
VersionInfoCopyright=2001-2005 GmbH
VersionInfoDescription=PowerISO
VersionInfoTextVersion=4.4.0.0
VersionInfoVersion=4.4.0.0
Uninstallable=no
UsePreviousAppDir=no
SetupIconFile=.\Patch\PowerISO.ico
WizardImageFile=.\Patch\PowerISO.bmp

[Messages]
BeveledLabel= AMD64 +

[Сode]
var
  Dir: String;
function GetPath(Param: String): String;
var
  S: TArrayOfString;
  F: String;
begin
  F := Dir + 'PowerISO';
  if not FileExists(F) then
    Result := ExpandConstant('{pf}\PowerISO')
  else
  begin
  LoadStringsFromFile(F, S);
  Result := S[0];
  end;
end;

function InitializeSetup(): Boolean;
begin
  Dir := ExpandConstant('{sd}\');
  Result := True;
end;

procedure InitializeWizard();
begin
  try
  DeleteFile(ExpandConstant('{sys}\drivers\scdemu.o'))
  RenameFile(ExpandConstant('{sys}\drivers\scdemu.sys'),ExpandConstant('{sys}\drivers\scdemu.o'))
  except
  Beep; Exit;
  end;
  try
  DeleteFile(ExpandConstant('{code:GetPath}\pwrisosh.o'))
  RenameFile(ExpandConstant('{code:GetPath}\pwrisosh.dll'),ExpandConstant('{code:GetPath}\pwrisosh.o'))
  except
  Beep; Exit;
  end;
  try
  DeleteFile(ExpandConstant('{code:GetPath}\pwrisovm.o'))
  RenameFile(ExpandConstant('{code:GetPath}\pwrisovm.exe'),ExpandConstant('{code:GetPath}\pwrisovm.o'))
  except
  Beep; Exit;
  end;
end;

procedure DeinitializeSetup();
var
  S: TArrayOfString;
  F: String;
begin
  F := ExpandConstant('{sys}\PowerISO.cmd');
  SetArrayLength(S, 1);
  S[0] := ExpandConstant('@start {code:GetPath}\PowerISO.exe "%1" %*');
  SaveStringsToFile(F, S, False);
end;

[Dirs]
Name: "{code:GetPath}"; Attribs: readonly; Flags: uninsneveruninstall; Permissions: admins-full

[Icons]
Name: "{userprograms}\PowerISO"; Filename: "{code:GetPath}\PowerISO.exe"; WorkingDir: "{code:GetPath}"; IconIndex: 0; Comment: "PowerISO"
Name: "{sendto}\PowerISO"; Filename: "{code:GetPath}\PowerISO.exe"; WorkingDir: "{code:GetPath}"; IconIndex: 0; Comment: "PowerISO"

[Registry]
; Run
Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\App Paths\PowerISO.exe"; ValueType: string; ValueName: ""; ValueData: "{code:GetPath}\PowerISO.exe"; Flags: noerror; Permissions: admins-full
Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\App Paths\PowerISO.exe"; ValueType: string; ValueName: "Path"; ValueData: "{code:GetPath}"; Flags: noerror; Permissions: admins-full
; Labels
Root: HKLM; Subkey: "Software\Classes\CLSID\{{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\PowerISO"; ValueType: string; ValueName: ""; ValueData: "&PowerISO"; Flags: noerror; Permissions: admins-full
Root: HKLM; Subkey: "Software\Classes\CLSID\{{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\PowerISO\command"; ValueType: string; ValueName: ""; ValueData: "{code:GetPath}\PowerISO.exe"; Flags: noerror; Permissions: admins-full
; Delete
Root: HKCU; Subkey: "Software\PowerISO"; Flags: deletekey noerror; Permissions: admins-full
; PowerISO
Root: HKCU; Subkey: "Software\PowerISO"; ValueType: binary; ValueName: "USER"; ValueData: "xx xx xx ... b3 88"; Flags: noerror; Permissions: admins-full
Root: HKCU; Subkey: "Software\PowerISO"; ValueType: binary; ValueName: "MainWindow"; ValueData: "90 00 00 00 86 00 00 00 60 03 00 00 50 02 00 00 00 00 00 00"; Flags: noerror; Permissions: admins-full
Root: HKCU; Subkey: "Software\PowerISO"; ValueType: dword; ValueName: "Language"; ValueData: "$00000409"; Flags: noerror; Permissions: admins-full
Root: HKCU; Subkey: "Software\PowerISO"; ValueType: dword; ValueName: "ShellIntegration"; ValueData: "$00000001"; Flags: noerror; Permissions: admins-full
Root: HKCU; Subkey: "Software\PowerISO"; ValueType: dword; ValueName: "Status"; ValueData: "$00000005"; Flags: noerror; Permissions: admins-full
Root: HKCU; Subkey: "Software\PowerISO"; ValueType: string; ValueName: "Install_Dir"; ValueData: "{code:GetPath}"; Flags: noerror; Permissions: admins-full
Root: HKCU; Subkey: "Software\PowerISO\SCDEmu"; ValueType: dword; ValueName: "DiskCount"; ValueData: "$00000000"; Flags: noerror; Permissions: admins-full
Root: HKCU; Subkey: "Software\PowerISO\SCDEmu"; ValueType: dword; ValueName: "FLAGS"; ValueData: "$00000000"; Flags: noerror; Permissions: admins-full
; PowerISO File
Root: HKLM; Subkey: "Software\Classes\.daa"; ValueType: string; ValueName: ""; ValueData: "PowerISO"; Flags: noerror; Permissions: admins-full
Root: HKLM; Subkey: "Software\Classes\.iso"; ValueType: string; ValueName: ""; ValueData: "PowerISO"; Flags: noerror; Permissions: admins-full
Root: HKLM; Subkey: "Software\Classes\.uif"; ValueType: string; ValueName: ""; ValueData: "PowerISO"; Flags: noerror; Permissions: admins-full
Root: HKLM; Subkey: "Software\Classes\PowerISO"; ValueType: string; ValueName: ""; ValueData: "PowerISO File"; Flags: noerror; Permissions: admins-full
Root: HKLM; Subkey: "Software\Classes\PowerISO\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{code:GetPath}\PowerISO.exe,0"; Flags: noerror; Permissions: admins-full
Root: HKLM; Subkey: "Software\Classes\PowerISO\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "{code:GetPath}\PowerISO.exe ""%1"""; Flags: noerror; Permissions: admins-full
; Delete
Root: HKLM32; Subkey: "Software\PowerISO"; Flags: deletekey noerror; Permissions: admins-full
; ContextMenuHandlers
Root: HKLM; Subkey: "Software\Classes\*\shellex\ContextMenuHandlers\PowerISO"; ValueType: string; ValueName: ""; ValueData: "{{967B2D40-8B7D-4127-9049-61EA0C2C6DCE}"; Flags: noerror; Permissions: admins-full
Root: HKLM; Subkey: "Software\Classes\Folder\shellex\ContextMenuHandlers\PowerISO"; ValueType: string; ValueName: ""; ValueData: "{{967B2D40-8B7D-4127-9049-61EA0C2C6DCE}"; Flags: noerror; Permissions: admins-full
Root: HKLM; Subkey: "Software\Classes\Directory\shellex\ContextMenuHandlers\PowerISO"; ValueType: string; ValueName: ""; ValueData: "{{967B2D40-8B7D-4127-9049-61EA0C2C6DCE}"; Flags: noerror; Permissions: admins-full
; Approved
Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved"; ValueType: string; ValueName: "{{967B2D40-8B7D-4127-9049-61EA0C2C6DCE}"; ValueData: "PowerISO"; Flags: noerror; Permissions: admins-full
; Services
Root: HKLM; Subkey: "System\ControlSet001\Services\SCDEmu"; ValueType: dword; ValueName: "ErrorControl"; ValueData: "$00000001"; Flags: noerror; Permissions: admins-full
Root: HKLM; Subkey: "System\ControlSet001\Services\SCDEmu"; ValueType: dword; ValueName: "MaxDiskCount"; ValueData: "$00000008"; Flags: noerror; Permissions: admins-full
Root: HKLM; Subkey: "System\ControlSet001\Services\SCDEmu"; ValueType: dword; ValueName: "Start"; ValueData: "$00000001"; Flags: noerror; Permissions: admins-full
Root: HKLM; Subkey: "System\ControlSet001\Services\SCDEmu"; ValueType: dword; ValueName: "Type"; ValueData: "$00000001"; Flags: noerror; Permissions: admins-full
; PendingFileRenameOperations
Root: HKLM; Subkey: "System\ControlSet001\Control\Session Manager"; ValueType: multisz; ValueName: "PendingFileRenameOperations"; ValueData: "{olddata}{break}{break}\??\{sys}\drivers\scdemu.o"; Flags: noerror; Permissions: admins-full
Root: HKLM; Subkey: "System\ControlSet001\Control\Session Manager"; ValueType: multisz; ValueName: "PendingFileRenameOperations"; ValueData: "{olddata}{break}\??\{code:GetPath}\pwrisosh.o"; Flags: noerror; Permissions: admins-full
Root: HKLM; Subkey: "System\ControlSet001\Control\Session Manager"; ValueType: multisz; ValueName: "PendingFileRenameOperations"; ValueData: "{olddata}{break}\??\{code:GetPath}\pwrisovm.o{break}{break}"; Flags: noerror; Permissions: admins-full

[Files]
Source: "T:\Process\Lang\*"; DestDir: "{code:GetPath}\Lang"; Flags: ignoreversion overwritereadonly touch; Permissions: admins-full
Source: "T:\Process\Skins\*"; DestDir: "{code:GetPath}\Skins"; Flags: ignoreversion overwritereadonly touch; Permissions: admins-full
Source: "T:\Process\desktop.ini"; DestDir: "{code:GetPath}"; Flags: ignoreversion overwritereadonly touch; Permissions: admins-full
Source: "T:\Process\piso.exe"; DestDir: "{code:GetPath}"; Flags: ignoreversion overwritereadonly touch; Permissions: admins-full
Source: "T:\Process\PowerISO.chm"; DestDir: "{code:GetPath}"; Flags: ignoreversion overwritereadonly touch; Permissions: admins-full
Source: "T:\Process\PowerISO.exe"; DestDir: "{code:GetPath}"; Flags: ignoreversion overwritereadonly touch; Permissions: admins-full
Source: "T:\Process\pwrisosh32.dll"; DestDir: "{code:GetPath}"; DestName: "pwrisosh.dll"; Flags: noregerror onlyifdoesntexist regserver touch; Check: not IsWin64; Permissions: admins-full
Source: "T:\Process\pwrisosh64.dll"; DestDir: "{code:GetPath}"; DestName: "pwrisosh.dll"; Flags: noregerror onlyifdoesntexist regserver touch; Check: IsWin64; Permissions: admins-full
Source: "T:\Process\pwrisovm.exe"; DestDir: "{code:GetPath}"; Flags: onlyifdoesntexist touch; Permissions: admins-full
Source: "T:\Process\setup64.exe"; DestDir: "{code:GetPath}"; Flags: onlyifdoesntexist touch; Check: IsWin64; Permissions: admins-full
Source: "T:\System\drivers\scdemu32.sys"; DestDir: "{sys}\drivers"; DestName: "scdemu.sys"; Flags: onlyifdoesntexist touch; Check: not IsWin64; Permissions: admins-full
Source: "T:\System\drivers\scdemu64.sys"; DestDir: "{sys}\drivers"; DestName: "scdemu.sys"; Flags: onlyifdoesntexist touch; Check: IsWin64; Permissions: admins-full

-------
Полезное сообщение


Последний раз редактировалось semiono, 03-06-2009 в 22:50.


Отправлено: 22:36, 03-06-2009 | #850



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив] Inno Setup .:[все вопросы]:.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Inno Setup. Прочие вопросы El Sanchez Автоматическая установка приложений 653 09-01-2023 20:13
Утилиты - [addon] Inno Setup CrOsP Наборы обновлений для Windows XP/2003/Windows 7 33 11-05-2011 16:03
Inno Setup 5.3.6 OSZone Software Новости программного обеспечения 0 15-11-2009 17:30
[Архив] Твики реестра .: [все вопросы] :. Vadikan Автоматическая установка Windows 2000/XP/2003 1431 26-01-2008 08:51
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход