Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: kpa61k
Дата сообщения: 26.11.2011 21:23
TaTTDoGGСпасибо большое !!! помогло)
Автор: Devils_Night
Дата сообщения: 26.11.2011 21:41
TaTTDoGG, похоже добавление таким образом Служб видимо просто не судьба, сначала вроде всё работает, но стоит только перезагрузить компьютер, и тут начинается лажа с интернетом, раза три - четыре переустанавливал систему, и всё одно и тоже, устанавливаю программу, всё работает, перезагрузил комп и интернет не работает, причём как локальная сеть не фурычит, так и соединение VPN. Вот не знаю что такое.
Ах да, чуть не забыл, ОС Windows XP, если конечно этот что-то изменит.
Автор: TaTTDoGG
Дата сообщения: 26.11.2011 22:08
Devils_Night
я в шоке... до сих пор у меня твоя служба работает... при старте системы всё норм запускается...
я сам много раз так устанавливал службу mysql и ни разу не было никаких ошибок... мб твоя служба рубит что-нибудь...
Автор: Devils_Night
Дата сообщения: 27.11.2011 00:01

Цитата:
мб твоя служба рубит что-нибудь...
Не, не, вряд ли, т.к когда устанавливаю исходный инсталятор (идёт как есть от производителя, интал InstallShield), то всё норм, все службы грузятся, всё работает, перезагружал раз десять, всё норм, инет работает, только стоит пересобрать на Inno Setup с добавление службы твоего варианта, то всё, край, соединение с инетом и локальной сетью не работает, как будто сетевой картой там и не пахнет. Вот странно.

Моя служба безобидна, она играет роль только при запуске устройства, т.е висит себе висит, вставляю устройство, и когда устройство вставлено то по ходу дела, устройство даёт команду службе, а потом эта служба сверяет определённый ключ в реестре, если ключ найден и он совпадает, то служба, запускает ПО для работы на этом устройстве.
Автор: TaTTDoGG
Дата сообщения: 27.11.2011 00:27
Devils_Night
тогда я в шоке...
Автор: Devils_Night
Дата сообщения: 27.11.2011 01:11
TaTTDoGG
Цитата:
тогда я в шоке...
Да я сам в шоке, ладно, позже переустановлю систему, и в качестве службы задействую Aimp, протестирую и узнаю что к чему.

Ещё вопрос, имеются файлы File.exe для X64 и File.exe для X86, как сделать так, что бы File.exe (X64) устанавливалось для X64, а File.exe (X86) устанавливалось для X86 архитектур?
Смотрел справку, нашёл только что-то там про IsWin64, в общем я нифига не понял.
Можно ли как то проще? Типа

Код: [Files]
Source: File.exe; DestDir: {app}; Flags: X64
Source: File.exe; DestDir: {app}; Flags: X86
Автор: nik1967
Дата сообщения: 27.11.2011 03:15
Devils_Night

Код: [Files]
Source: x64\File.exe; DestDir: {app}; Check: IsWin64
Source: x32\File.exe; DestDir: {app}; Check: not IsWin64
Автор: Stalqer
Дата сообщения: 28.11.2011 11:46
ISDONE 6.0f+music+vide_flash заценитє переделаний мной скрипт феникса не судите. Не судитє строго.
http://rghost.ru/32339191
Автор: Raf_SE
Дата сообщения: 28.11.2011 18:33
Ктонить может подкрутить скрипт, чтоб та часть что касается возврата оригинальных файлов, запускалась только если выбран компонент "Game\Lokal\Backup", а та часть что отвечает за проверку на оставшыеся файлы, если выбран "Game\Full"?

[more]
Код:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
Res: Integer;

//Возврат оригинальных файлов
begin
if CurUninstallStep = usPostUninstall then
begin
MoveDir(ExpandConstant('{app}\Backup\'),ExpandConstant('{app}'));
RemoveDir(ExpandConstant('{app}\Backup\'));
end;


//Проверка на оставшыеся файлы
begin
case CurUninstallStep of
usPostUninstall:
begin
if DirExists(ExpandConstant('{app}')) then
if ExpandConstant('{language}') = 'ua' then
case MsgBox('Папка "' + ExpandConstant('{app}') + '" не порожня.'#13#13 +
'"Так" – повне видалення всіх файлів у папці, включаючи саму папку.' #13#13 +
'"Ні" – відкрити папку в провіднику, щоб вручну видалити файли.'#13#13 +
'"Скасувати" – нічого не робити, видалити папку пізніше самостійно.', mbInformation, MB_YESNOCANCEL) of

IDYES:
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('Папка не видалена.' #13#13 'Папка або один з файлів у ній задіяні іншою програмою.', mbError, MB_OK);

IDNO:
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Помилка відкриття.' #13#13 'Папка не знайдена.', mbError, MB_OK);

IDCANCEL:;
end
else
if ExpandConstant('{language}') = 'ru' then
case MsgBox('Папка "' + ExpandConstant('{app}') + '" не пуста.'#13#13 +
'"Да" – полное удаление всех файлов в папке, включая саму папку.' #13#13 +
'"Нет" – открыть папку в проводнике, чтобы вручную удалить файлы.'#13#13 +
'"Отмена" – ничего не делать, удалить папку позже самостоятельно.', mbInformation, MB_YESNOCANCEL) of

IDYES:
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('Папка не удалена.' #13#13 'Папка или один из файлов в ней задействованы другим приложением.', mbError, MB_OK);

IDNO:
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Ошибка открытия.' #13#13 'Папка не найдена.', mbError, MB_OK);

IDCANCEL:;
end
else
case MsgBox('Directory "' + ExpandConstant('{app}') + '" is not empty.'#13#13 +
'"Yes" to delete all of the files in the directory, including the directory itself.' #13#13 +
'"No" to open the directory with explorer to delete the files manually.'#13#13 +
'"Cancel" to do nothing and delete the directory later manually.', mbInformation, MB_YESNOCANCEL) of

IDYES:
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('Directory is not deleted.' #13#13 'Directory or one of the files are used by the other application.', mbError, MB_OK);

IDNO:
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Error opening the directory.' #13#13 'Directory is not found.', mbError, MB_OK);

IDCANCEL:;
end
end
end
end;
end;
Автор: Begun999
Дата сообщения: 28.11.2011 18:51
Добрый вечер!
Пожалуйста помогите!!!
Добавил в скрипт

[more][Tasks]
Name: task1; Description: Дополнительное программное обеспечение:
Name: task1\task2; Description: Обновить DirectX
Name: task1\task3; Description: Установить Ubisoft Game Launcher
Name: task1\task4; Description: Установить Microsoft Visual C++ Redist

[Run]
Filename: {src}\Redist\DirectX\DXSETUP.exe; Parameters: /silent; Tasks: task1\task2; Flags: waituntilterminated
Filename: {src}\Redist\UbisoftGameLauncherInstaller.exe; Parameters: /Q; Tasks: task1\task3; Flags: waituntilterminated
Filename: {src}\Redist\vcredist_x86.exe; Parameters: /Q; Tasks: task1\task4; Flags: waituntilterminated[/more]

и в итоге получилось

и Ubisoft Game Launcher устанавливается в самом начале.
А хотелось бы так

Помогите пожалуйста!!!
Скрипт Napoleon Total War
Автор: TaTTDoGG
Дата сообщения: 28.11.2011 22:16
я вообще не юзаю секцию run потому что она всё в начале делает.
у меня в коде есть процедура AdditionalSoftware которая вызывается в ssPostInstall
а в самой процедуре я устанавливают только то что было выделено в секции Task

а по поводу "поднять выше", то ищите в скрипте нужные вам лейблы и меняйте их Top значение

и почему вы решили что ubisoftlauncher нужно устанавливать с ключом /Q ?
Автор: Begun999
Дата сообщения: 28.11.2011 22:39
TaTTDoGG
Спасибо за ответ. Такой процедуры у меня нет. Я слабоват в создании скриптов - только учусь, пользуюсь готовыми. В скрипте нет добавления дополнительного ПО и сам стараюсь его сделать. Кто-то выложил, как добавить DirectX вот и попробовал.
Вот оригиналы:
[more=Вариант 1][Tasks]
Name: task1; Description: Дополнительное программное обеспечение:
Name: task1\task2; Description: Обновить DirectX
Name: task1\task3; Description: Установить PhysX
Name: task1\task4; Description: Установить Microsoft Visual C++ Redist

[Run]
Filename: {src}\Redist\DirectX\DirectX.exe; Parameters: /silent; Tasks: task1\task2; Flags: waituntilterminated
Filename: {src}\Redist\PhysX.exe; Parameters: /Q; Tasks: task1\task3; Flags: waituntilterminated
Filename: {src}\Redist\VC Redist.exe; Parameters: /Q; Tasks: task1\task4; Flags: waituntilterminated[/more]

[more=Вариант 2][Components]
Name: first; Description: Обновить vcRedist 2005; Flags: checkablealone; Types: full
Name: second; Description: Обновить vcRedist 2008; Flags: checkablealone; Types: full
Name: fird; Description: Обновить DirectX (нужно интернет соединение); Flags: checkablealone; Types: full

[Run]
Filename: {app}\vcredist_x86_2005.exe; WorkingDir: {app}\; Parameters: /q; StatusMsg: Завершение распаковки, ждите...; Components: first
Filename: {app}\vcredist_x86_2008.exe; WorkingDir: {app}\; Parameters: /q; StatusMsg: Завершение распаковки, ждите...; Components: second
Filename: {app}\dxwebsetup.exe; WorkingDir: {app}\; StatusMsg: Завершение распаковки, ждите...; Components: fird

[Files]
Source: C:\Redist\vcredist_x86_2005.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall;
Source: C:\Redist\vcredist_x86_2008.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall;
Source: C:\Redist\dxwebsetup.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall;[/more]

Второй выбивает ошибку.
Ну вот итог вы видите.
Автор: TaTTDoGG
Дата сообщения: 28.11.2011 22:49

Код:
procedure InstallAdditionalSoftware;
var
ResultCode: integer;
begin

if IsTaskSelected('addsw/directx') then
begin
Exec(ExpandConstant('{src}\Redist\DirectX\DXSETUP.exe'), '/silent', ExpandConstant('{src}\Redist\DirectX'), SW_HIDE, ewWaitUntilTerminated, ResultCode);
end;

if IsTaskSelected('addsw/vcredist') then
begin
Exec(ExpandConstant('{src}\Redist\VCR_Ext_x86_x64.exe'), '/S', ExpandConstant('{src}\Redist'), SW_HIDE, ewWaitUntilTerminated, ResultCode);
end;

end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if (CurStep=ssPostInstall) then
begin
InstallAdditionalSoftware;
end;
Автор: Begun999
Дата сообщения: 28.11.2011 22:58
TaTTDoGG
Я так понимаю, что нужно оставить Task и в коде прописать Ваш скрипт?
Автор: TaTTDoGG
Дата сообщения: 28.11.2011 23:03
Begun999
да, оставить Task, убрать Run
поменять в IsTaskSelected имена Taskов
ну и для ubisoftlauncher добавить ещё одну проверку
Автор: Begun999
Дата сообщения: 28.11.2011 23:05
TaTTDoGG
Огромное СПАСИБО!!!
И ещё вопрос - Где прописывать? Можно везде?
Автор: TaTTDoGG
Дата сообщения: 28.11.2011 23:08
Begun999
ну если в вашем коде нету процедуры CurStepChanged то везде где угодно. главное чтобы InstallAdditionalSoftware находилась выше CurStepChanged.
Автор: Begun999
Дата сообщения: 28.11.2011 23:14
TaTTDoGG
Спасибо!!!
CurStepChanged Есть, буду пробовать. Ещё раз Спасибо!!!
Автор: TaTTDoGG
Дата сообщения: 28.11.2011 23:26
Begun999
ещё небольшой совет
перед тем как выполнять InstallAdditionalSoftware нужно проверить не произошли ли в процессе установки какие-нибудь ошибки. например в модуле ISDone это нужно сделать так:

Код:
if not ISDoneError then
InstallAdditionalSoftware;
Автор: bongo123
Дата сообщения: 29.11.2011 17:39
Доброго времени суток!
Не сочтите за офф топ, а просто ответьте или подскажите где поискать ответ.
Вопрос: нужна прога, перехватчик значений реестра, вносимых инсталлятором Install Shield, при установке приложения, ну или любым другим, спасибо.
Автор: TaTTDoGG
Дата сообщения: 29.11.2011 21:07
bongo123
2 варианта
1) распаковать installshield'овский exeшник. и запустить msi чтобы тот создал лог действий
2) скачать прогу Process Monitor http://technet.microsoft.com/ru-ru/sysinternals/bb896645
Автор: Kizyak
Дата сообщения: 29.11.2011 21:51
Всем привет, такой вопрос - после установки игры , в "Пуск" - "Все программы" в игре отсутствует ярлык



Где может быть ошибка ?
Автор: notAlx
Дата сообщения: 29.11.2011 21:57
Kizyak
Очевидно же, слэш забыли в {app}Demonstone.exe, но думаю вы и сами уже увидели.
Автор: Kizyak
Дата сообщения: 30.11.2011 08:10
notAlx
спасибо, не углядел)
Автор: Y4enik32
Дата сообщения: 30.11.2011 14:54
Добрый день форумчане !!!!

Кто может обновить ISDone в скрипте ?

Если что то вот скрипт ТУТ
Автор: Saturas32
Дата сообщения: 30.11.2011 16:02
Здраствуйте.
Проблема в том что на разных системах по со всем по разному отображаются шрифты,графика и т.б
Просьба кого не затруднит протестировать его,о результатах писать в лс
http://zalil.ru/upload/32167151
http://rghost.ru/32670311
Автор: TaTTDoGG
Дата сообщения: 30.11.2011 16:27
Saturas32
а результат состоит в том, что в вашем exe файле находится троян
Автор: 0D0A
Дата сообщения: 30.11.2011 16:48
Подскажите, а возможен ли вообще вызов в коде колбэк-функций WinAPI, вроде EnumWindows? Пытаюсь перевести такой дельфи-код:

Код:
function EnumWindowsProc(Window: HWND; Found: PLongBool): LongBool; stdcall;
begin
Result := True;
if (Window <> 0) then
Found^ := True;
end;

procedure Stop;
var
Found: LongBool;
begin
Found := False;
EnumWindows(@EnumWindowsProc, LongWord(@Found));
if Found then
Sleep(500);
end;
Автор: Begun999
Дата сообщения: 30.11.2011 21:04
Добрый вечер!
Подскажите пожалуйста, как разбить игру на 3 диска?
Есть файлы:
Папка - Soft
autorun.inf
setup.exe
DVD1.bin
DVD2.bin
DVD3.bin
Сжималось всё фриарком. Вопрос, как прописать здесь???
[more]repeat
MyError:=true;
if not ISDoneInitialize(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, 0, false, MainForm.Handle, {#NeedMem}, @ProgressCallback) then break;
repeat

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\*.bin'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;


// примеры использования компонентов и всплывающего запроса следующего диска:

//if not ShowChangeDiskWindow('Пожалуйста, вставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW2_Disk2.arc' ) then break;
//if not ISArcExtract ( 1, 0, ExpandConstant('{src}\bin\data1.bin'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
//if not ISArcExtract ( 2, 0, ExpandConstant('{src}\bin\data1.bin'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
//if not ISArcExtract ( 3, 0, ExpandConstant('{src}\bin\data4.bin'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
//if not ISArcExtract ( 4, 0, ExpandConstant('{src}\engvoice.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
//if not ISArcExtract ( 5, 0, ExpandConstant('{src}\bin\data4.bin'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;

(* if not ISArcExtract ( 6, 0, ExpandConstant('{src}\engvoice.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ShowChangeDiskWindow('Пожалуйста, вставьте первый диск и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW_2.arc' ) then break;[/more]
Автор: TaTTDoGG
Дата сообщения: 30.11.2011 22:19
Begun999
из спавки по ISDone

Цитата:
Пример 3 : запрос второго диска.

Код: ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
repeat
if not FileSearchInit(false) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data00.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data00.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
if not ShowChangeDiskWindow('Пожалуйста, вставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'data03.arc') then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data02.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data03.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;

ISDoneError:=false;
until true;
ISDoneStop;
end;

думаю тут все понятно. Единственное стоит упомянуть, что в функции ShowChangeDiskWindow последним параметром необходимо указывать ЛЮБОЙ файл, находящийся ТОЛЬКО на втором диске. Для третьего, четвертного и т.д. делается по аналогии.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

Предыдущая тема: поиск


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.