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

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

Автор: Victor_Dobrov
Дата сообщения: 10.01.2008 22:59
Vitalliano, Если вы хотели порадовать приведённым скриптом новичков, то они получат следующие ошибки:

1) Reading file (License) - Не удаётся найти указанный файл.
2) Cannot Inport dll:user32[\color]
3) Отсутствие файлов 1-9.jpg, Splash.bmp, get_hw_caps.dll, bass.dll, Sound.mp3 и прочее...
4) Сообщение: Вы используете взломанную или пиратскую версию.


Для знатоков скрипт не представляет интереса, так как уже опубликован (зачем постить повторно) и устарел.

P.S. Советую прочитать Примечание для всех участников в шапке.
Автор: RusDiego
Дата сообщения: 11.01.2008 08:59
Здравствуйте!

Вот часть скрипта для бэкапа:
[more]procedure CreateBackup;
var
srcFile, destFile: string;
basePath, shortPath: string;
begin
basePath := ExpandConstant('{app}');
srcFile := ExpandConstant(CurrentFileName);
shortPath := srcFile;
StringChangeEx(shortPath, basePath, '', True);
destFile := ExpandConstant('{userdocs}\GothicFilesBackup') + shortPath;
ForceDirectories(ExtractFilePath(destFile));
MoveFile(PChar(srcFile), PChar(destFile));
end;
[/more]
Но вот в чем проблема - корневая папка {app} бэкапится, а вложенные - нет.
Что тут не так?

И ещё, как написать скрипт, чтобы после окончания инсталяции удалялась одна папка, которая находится в подпапке вместе со всем содержимым без каких либо вопросов, а выше стоящая папка не удалялась?
Нужно именно после инсталяции, перед нажатием кнопки - готово!

Пока, заранее спасибо за помощь!
Сергей.
Автор: Bikaev
Дата сообщения: 11.01.2008 09:40
пожалуйста помогите совместить эти два кода
этот [more]
const
BackGround=6;
Timer=16;
function isxbb_AddImage(Image: PChar; Flags: Cardinal): integer; external 'isxbb_AddImage@files:isxbb.dll stdcall delayload';
function isxbb_Init(hWnd: Integer): integer; external 'isxbb_Init@files:isxbb.dll stdcall delayload';
function isxbb_StartTimer(Seconds: Integer; Flags: Cardinal): integer; external 'isxbb_StartTimer@files:isxbb.dll stdcall';
function isxbb_KillTimer(Flags: Cardinal): integer; external 'isxbb_KillTimer@files:isxbb.dll stdcall';
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:boolean); external 'ShowSplashScreen@files:SouthInno.dll stdcall delayload';
function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';
procedure InitializeWizard();
begin
WizardForm.Position:=poScreenCenter;
MainForm.BorderStyle:=bsNone;
MainForm.Width:=GetSystemMetrics(0);
MainForm.Height:=GetSystemMetrics(1)+1;
MainForm.Top:=-1;
MainForm.Left:=0;
ExtractTemporaryFile('splash.bmp');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\splash.bmp',600,3000,600,0,255,False,$FFFFFF,False);
ExtractTemporaryFile('splash.JPG');
isxbb_AddImage(ExpandConstant('{tmp}')+'\splash.JPG',BackGround);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));
MainForm.Visible:=True;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall then begin
ExtractTemporaryFile('1.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\1.jpg',BackGround or Timer);
ExtractTemporaryFile('2.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\2.jpg',BackGround or Timer);
ExtractTemporaryFile('3.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\3.jpg',BackGround or Timer);
ExtractTemporaryFile('4.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\4.jpg',BackGround or Timer);
ExtractTemporaryFile('5.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\5.jpg',BackGround or Timer);
ExtractTemporaryFile('6.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\6.jpg',BackGround or Timer);
ExtractTemporaryFile('7.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\7.jpg',BackGround or Timer);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));
isxbb_StartTimer(25,BackGround)
end;
if CurStep=ssPostInstall then begin
isxbb_KillTimer(BackGround);
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling then begin
WizardForm.MainPanel.Visible:=False;
WizardForm.Bevel1.Visible:=False;
WizardForm.Width:=ScaleX(395);
WizardForm.Height:=ScaleY(142);
WizardForm.Left:=ScaleX(MainForm.Width-420);
WizardForm.Top:=ScaleY(MainForm.Height-170);
WizardForm.InnerNotebook.Left:=ScaleX(10);
WizardForm.InnerNotebook.Top:=ScaleY(10);
WizardForm.InnerNotebook.Width:=ScaleX(370);
WizardForm.StatusLabel.Left:=ScaleX(0);
WizardForm.StatusLabel.Top:=ScaleY(0);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left:=ScaleX(0);
WizardForm.FileNameLabel.Top:=ScaleY(20);
WizardForm.FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:=ScaleY(40);
WizardForm.ProgressGauge.Width:=WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:=ScaleX(154);
WizardForm.CancelButton.Top:=ScaleY(80);
end;
if CurPageID=wpFinished then begin
WizardForm.Width:=502;
WizardForm.Height:=392;
WizardForm.Position:=poScreenCenter;
end;
end;[/more]

и этот[more]
function sndPlaySound(lpszSoundName: string; uFlags: cardinal):integer;
external 'sndPlaySoundA@winmm.dll stdcall';
procedure InitializeWizard();
begin
ExtractTemporaryFile(ExpandConstant('sound.wav'));
sndPlaySound(ExpandConstant('{tmp}\sound.wav'), $0001 or $0008);
end;
[/more]
Автор: Vitalliano
Дата сообщения: 11.01.2008 11:44
Victor_Dobrov

Да, верно он пупликовался, но на этом форуме я его не видел!!!

А насчет ошибок я писал, что нужно немного подкоректировать!

Автор: iTASmania_Inc
Дата сообщения: 11.01.2008 14:20
Bikaev
Ну, склейка скриптов - не такая уж и сложная вещь , [more=подробнее]
const
BackGround=6;
Timer=16;

function isxbb_AddImage(Image: PChar; Flags: Cardinal): integer; external 'isxbb_AddImage@files:isxbb.dll stdcall delayload';
function isxbb_Init(hWnd: Integer): integer; external 'isxbb_Init@files:isxbb.dll stdcall delayload';
function isxbb_StartTimer(Seconds: Integer; Flags: Cardinal): integer; external 'isxbb_StartTimer@files:isxbb.dll stdcall';
function isxbb_KillTimer(Flags: Cardinal): integer; external 'isxbb_KillTimer@files:isxbb.dll stdcall';
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:boolean); external 'ShowSplashScreen@files:SouthInno.dll stdcall delayload';
function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';
function sndPlaySound(lpszSoundName: string; uFlags: cardinal):integer; external 'sndPlaySoundA@winmm.dll stdcall';

procedure InitializeWizard();
begin
ExtractTemporaryFile(ExpandConstant('sound.wav'));
sndPlaySound(ExpandConstant('{tmp}\sound.wav'), $0001 or $0008);
WizardForm.Position:=poScreenCenter;
MainForm.BorderStyle:=bsNone;
MainForm.Width:=GetSystemMetrics(0);
MainForm.Height:=GetSystemMetrics(1)+1;
MainForm.Top:=-1;
MainForm.Left:=0;
ExtractTemporaryFile('splash.bmp');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\splash.bmp',600,3000,600,0,255,False,$FFFFFF,False);
ExtractTemporaryFile('splash.JPG');
isxbb_AddImage(ExpandConstant('{tmp}')+'\splash.JPG',BackGround);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));
MainForm.Visible:=True;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall then begin
ExtractTemporaryFile('1.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\1.jpg',BackGround or Timer);
ExtractTemporaryFile('2.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\2.jpg',BackGround or Timer);
ExtractTemporaryFile('3.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\3.jpg',BackGround or Timer);
ExtractTemporaryFile('4.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\4.jpg',BackGround or Timer);
ExtractTemporaryFile('5.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\5.jpg',BackGround or Timer);
ExtractTemporaryFile('6.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\6.jpg',BackGround or Timer);
ExtractTemporaryFile('7.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\7.jpg',BackGround or Timer);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));
isxbb_StartTimer(25,BackGround)
end;
if CurStep=ssPostInstall then begin
isxbb_KillTimer(BackGround);
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling then begin
WizardForm.MainPanel.Visible:=False;
WizardForm.Bevel1.Visible:=False;
WizardForm.Width:=ScaleX(395);
WizardForm.Height:=ScaleY(142);
WizardForm.Left:=ScaleX(MainForm.Width-420);
WizardForm.Top:=ScaleY(MainForm.Height-170);
WizardForm.InnerNotebook.Left:=ScaleX(10);
WizardForm.InnerNotebook.Top:=ScaleY(10);
WizardForm.InnerNotebook.Width:=ScaleX(370);
WizardForm.StatusLabel.Left:=ScaleX(0);
WizardForm.StatusLabel.Top:=ScaleY(0);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left:=ScaleX(0);
WizardForm.FileNameLabel.Top:=ScaleY(20);
WizardForm.FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:=ScaleY(40);
WizardForm.ProgressGauge.Width:=WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:=ScaleX(154);
WizardForm.CancelButton.Top:=ScaleY(80);
end;
if CurPageID=wpFinished then begin
WizardForm.Width:=502;
WizardForm.Height:=392;
WizardForm.Position:=poScreenCenter;
end;
end;
[/more]...
Автор: KurtWagner
Дата сообщения: 11.01.2008 14:31
Почему нельзя совместить

Encryption=Yes

с этим

[Files]
Source: "C:\BASS.dll"; DestDir: "{tmp}"; Flags: dontcopy
Source: "C:\01-OVERSEER-Doomsday.mp3"; DestDir: "{tmp}"; Flags: dontcopy

[Code]
//большее указание смотрите в дельфийских исходниках в архиве с библиотекой
сonst
BASS_SAMPLE_LOOP = 4; //повторение

type
HSTREAM = DWORD; //тип звукового потока

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: PChar; offset: DWORD; length: DWORD; flags: DWORD): HSTREAM;
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';

procedure InitializeWizard();
var
Name1: string;
    i: Integer;
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('01-OVERSEER-Doomsday.mp3');
if BASS_Init(-1, 44100, 0, 0, 0) then
begin
BASS_Start();
Name1:=ExpandConstant('{tmp}\01-OVERSEER-Doomsday.mp3');
i:=BASS_StreamCreateFile(FALSE, PChar(Name1), 0, 0, 4);
if i <> 0 then
    begin
BASS_ChannelPlay(i, True);
end;
end;
end;
procedure DeInitializeSetup();
begin
BASS_Stop(); //нужно для остановки проигрывания
BASS_Free(); //нужно для быстрой выгрузки библиотеки вместе с муз. файлом
end;



Раз 20 пытался по химичить! Ни фи*а не получаеться!
Автор: iTASmania_Inc
Дата сообщения: 11.01.2008 14:40
KurtWagner
Лучше бы 20 раз похимичить с тегом more - ибо надоело скролить листинги постов.
И вообще - зачем приводить полностью пример из руководства Kindly, не лучше ли указать название данного скрипта?
Собственно по вопросу: в секции [Files] в Flags надо дописать noencryption.
Автор: serg_aka_lain
Дата сообщения: 11.01.2008 16:04
RusDiego


1. SHFileOperation.iss включен в скрипт? , т.е.

#include "размещение SHFileOperation.iss".

2. Если просто удалить, то так

procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep = ssPostInstall then
begin
DelTree(ExpandConstant('{app}') + '\Папка\Подпапка', True, True, True);
end
end;
Автор: KurtWagner
Дата сообщения: 11.01.2008 20:43
iTASmania_Inc спасибо огромное!
Автор: KurtWagner
Дата сообщения: 12.01.2008 08:17
а как подключить SHFileOperation.iss к backup??????????? (Резерв) Просто скрипт переписать????
Автор: iTASmania_Inc
Дата сообщения: 12.01.2008 08:26
KurtWagner
Ну, можно скрипт переписать, можно использовать директиву препроцессора в начале главного скрипта:
#include "SHFileOperation.iss"
Конечно, при условии, что установлен препроцессор и файл "SHFileOperation.iss" расположен в той же папке, что и основной скрипт.
Автор: KurtWagner
Дата сообщения: 12.01.2008 11:01
iTASmania_Inc Еще раз спасибочки!

Добавлено:
iTASmania_Inc а файл SHFileOperation.iss не менять т.е. не редактировать???? так и оставить таким????

Добавлено:
Упс! все спасибки не надо тупанул!

Прописал только файл и из за этого он копировал весь Programm Files
[Files]
Source: "C:\user.exe"; DestDir: {app}; BeforeInstall: CreateBackup; Flags: ignoreversion recursesubdirs createallsubdirs

а надо было всего лишь прописать папку
Автор: RusDiego
Дата сообщения: 12.01.2008 14:11
serg_aka_lain

Цитата:
RusDiego


Цитата:
1. SHFileOperation.iss включен в скрипт? , т.е.

Да включен.

Цитата:
#include "размещение SHFileOperation.iss".
2. Если просто удалить, то так
procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep = ssPostInstall then
begin
DelTree(ExpandConstant('{app}') + '\Папка\Подпапка', True, True, True);
end
end;


Спасибо помогло.
Автор: Vitalliano
Дата сообщения: 12.01.2008 19:08
Ребята, а в isxbb.dll больше 10 секунд слайд можно сделать?

const
BACKGROUND = 5;
TIMER = 21;

Как не ставлю, один фиг, 10 секунд показывает картинку!
Автор: Sampron
Дата сообщения: 12.01.2008 19:44
Vitalliano
Таймер выстывляй в этой строке:
isxbb_StartTimer(10,BackGround)
или замени эту строку на эту:
isxbb_StartTimer(TIMER,BackGround)
и выставляй в константе.
Автор: Vitalliano
Дата сообщения: 12.01.2008 20:07
Да да, я чето протупил!!!! Извеняюсь за тупой вопрос
Автор: RedGeek
Дата сообщения: 13.01.2008 04:51
Интересует, как можно перед удалением проверить, запущен ли нужный файл (file.exe), если запущен - закрыть процесс.
Автор: starwork
Дата сообщения: 13.01.2008 09:31
Господа, ответьте пожалуйста:

[Files]
Source: "XLiveRedist.msi"; DestDir: {tmp}

[Run]
Filename: msiexec.exe; Parameters: "-i ""{src}\XLiveRedist.msi"" -qn"; WorkingDir: "{src}"; StatusMsg: "Microsoft XLive"

Почему после этой установки включается брандмауэр? До установки выключен.....
Автор: Sergey_AV
Дата сообщения: 13.01.2008 11:15
Народ, подскажите, где ступил - делаю "собственный" инсталлятор для BSPlayer (настроенный), нужно чтобы в процессе инсталляции запускался .avi-файл для того, чтобы расширения медиа-файлов прописались под плейер. Делаю так:
[Setup]
AppName=BSPlayer
AppVerName=BSPlayer
DefaultDirName={pf}\BSplayer
DefaultGroupName=BSplayer
[Run]
Filename: "{app}\bsplayer.exe"; Parameters: "-lang=Russian -eend {app}\elephant.avi"; Flags: waituntilterminated shellexec
Но в процессе инсталляции почему-то просто запускается плейер, без проигрывания файла . Где я облажался?

И еще. Я понимаю, что несколько оффтопично, не не подскажет ли кто идею "автоматической" регистрации сего плейра при его установке? Я так понимаю, это на уровне скрипта надо делать (там идет привязка к hardware ID), а я тут не силен .
Скачал вот на msfn скрипт для AutoIT [more]
RunWait("bsplayer_pro221950.exe /S")

Sleep(500)
Opt('MouseCoordMode', 0)
;Run BSPlayer for Activation
$pid = Run(@ProgramFilesDir & "\Webteh\BSplayerPro\bsplayer.exe")

If WinWait('BSplayer Pro', '', 10) Then
MouseMove(343, 237)
If MouseGetCursor() <> 0 Then
MouseMove(418, 247)
If MouseGetCursor() <> 0 Then
WinClose('BSplayer')
ProcessClose($pid)
Exit 1
EndIf
EndIf
MouseClick('left')
If WinWait('Informaciуn de Registro', 'Aceptar', 10) Then
$name = 'XXXXXXX'
$serial = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    ControlSetText('Informaciуn de Registro', 'Aceptar', 'TTntEdit.UnicodeClass2', $name)
ControlSetText('Informaciуn de Registro', 'Aceptar', 'TTntEdit.UnicodeClass1', $serial)
ControlClick('Informaciуn de Registro', 'Aceptar', 'TButton1')
If WinWait('Informaciуn', 'Gracias por registrarse', 10) Then
ControlClick('Informaciуn', 'Gracias por registrarse', 'Button1')
EndIf
EndIf
EndIf
[/more], а он на итальянском. Да и не больно мне нравятся AutoIT-реализации (наверно, я их готовить не умею) - рабочий, отлаженный скрипт при установке с CD/DVD-носителя выдает непонятные проблемы . Inno Setup как-то милее: либо работает, либо - нет .

Автор: aka_smile
Дата сообщения: 13.01.2008 15:18
Ребят я полный чайник в этом инносетапе.
Передо мной стоят след. задачи
При установке:
Инсталлятор должен запаковать в уже существующий zip-архив файлы и папки, причём в это же архиве надо внести изменения в ini-файл.
При деинсталляции:
Каким-то образом надо придумать деинсталлятор, который отменить эти внесённые изменения.

Пожалста помогите.
Автор: PolluxVonTXII
Дата сообщения: 13.01.2008 15:28
2All
Подкажите какой ValueType: вот у этого параметра реестра @="1"
Автор: serg_aka_lain
Дата сообщения: 13.01.2008 16:43
PolluxVonTXII

Строковый (String;)
Автор: starwork
Дата сообщения: 13.01.2008 23:16
Снимаю свой вопрос.... На другом компе всё в порядке, видимо проблемка с моей виндой..., всех с наступающим НГ по старому стилю !!!
Автор: geranik
Дата сообщения: 14.01.2008 15:28
RedGeek
выключить процесс через bat файл
taskkill /f /im process.exe
и команды
[UninstallRun]
Filename: {app}\file.bat; WorkingDir: {app}; StatusMsg: выключение игры...; Flags: waituntilterminated runminimized
или просто:
Filename: {sys}\taskkill.exe; Parameters: "/f /im process.exe"; StatusMsg: Выключение Игры...; Flags: waituntilterminated
_____
И есть вопрос - какой флаг для обновления существующиих файлов в каталоге?
конретно такого не нашёл.

Автор: KurtWagner
Дата сообщения: 15.01.2008 01:13
У меня 2-ва вопросика!

1-ый: Как сделать чтобы программа установки автоматический проверила присутствие определенной программы или дров!
Доаустим Net Framwork

2-ой: Хочу сделать инсталлер с 4-мя NoCd-шниками Splinter Cell 1,2,3,4...
Мне надо чтобы на каждый noCd была своя проверка определенного файла!
Допустим я выбрал NoCd для Splinter Cell - Chaos Theory ставлю флажок жму далее он проверяет установленна ли игра и присутствие sc.exe


Заранее спасибо!
Автор: iTASmania_Inc
Дата сообщения: 15.01.2008 02:30
KurtWagner
1) Проверка присутствия программы или драйвера в основном делается через реестр, как - см. руководство Kindly. Например, проветь установленные версии .NET Framework можно [more=так]
[Setup]
AppName=.NETFramework
AppVerName=.NETFramework
CreateAppDir=false

[Code]
var
i, n: Integer; S: String; Names: TArrayOfString;
Function InitializeSetup: Boolean;
Begin
if RegGetSubkeyNames(HKLM, 'Software\Microsoft\.NETFramework\policy', Names) then
begin
for i:= 0 to GetArrayLength(Names)-1 do
if Pos('v',Names[i]) > 0 then begin Names[n]:= Names[i]; n:= n + 1; end
SetArrayLength(Names, n);
for i:= 0 to GetArrayLength(Names)-1 do S:= S + Names[i] + #13#10;
end else
S:= 'Нет установленных версий'
MsgBox('Версии .NET Framework:'#13#10 + S, mbInformation, MB_OK);
End;
[/more]. (Скрипт Виктора Доброва)
2) См. ответ на вопрос 1. Ну, можно ещё использовать функции FileExists (существует указанный файл или нет) и GetMD5OfFile (проверка файла на целостность).
Автор: RedGeek
Дата сообщения: 15.01.2008 02:34

Цитата:
RedGeek
выключить процесс через bat файл
taskkill /f /im process.exe
и команды
[UninstallRun]
Filename: {app}\file.bat; WorkingDir: {app}; StatusMsg: выключение игры...; Flags: waituntilterminated runminimized
можно это ещё и скрипте как-то сделать.

Так некрасиво, лишний батник к тому же... Но все равно спасибо.
А как все таки в inno это реализовать?
Автор: KurtWagner
Дата сообщения: 15.01.2008 05:07
Как сделать! Кнопки проигрыша мелодии?

Добавлено:
Как сделать! Кнопки проигрыша мелодии? http://ipicture.ru/uploads/080115/qog65VpUj0.jpg
Автор: iTASmania_Inc
Дата сообщения: 15.01.2008 05:42
KurtWagner
Примерно так.
Отсюда можно скачать примеры, когда на кнопки наложены текстуры.

Добавлено:
RedGeek
Остановка запущенного процесса может быть реализована через dll, пример подобного кода - в данном руководстве.
Автор: Sergey_AV
Дата сообщения: 15.01.2008 07:51
Народ, ответьте тогда уж на простой вопрос: какой язык использутся для написания скриптов в Inno Setup? Я имею ввиду не формат файла .iss, а чисто програмные модули, вызываемые, например, через подраздел [code]. Сорри за невнятное описание - ну, не программер я . Надо просто реализовать некий скрит, типа [more]
WinWait("Registration info","Register Programm")
WinWaitActive ("Registration info","Register Programm")
Send("XXX")
Sleep ( 500 )
Send("{TAB}")
Sleep ( 1000 )
Send("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
Send("{TAB}")
Send("{ENTER}")
Sleep ( 1000 )
Send("{ENTER}")
[/more]
для автоматической регистрации программы в процессе установки, но никак не соображу как это сделать. Дело в том, что пример, который я привел, крайне примитивен: я знаю, например, как сие реализовать посредством WSH (кажется, это так называется) или AutoIT, НО... работоспособность оного не всегда на высоте . Правильнее бы было бы отслеживать ПИД процесса (если я опять же не ошибаюсь в терминологии), но это мне не по зубам.
Может быть, кто-нибудь из высокоуважаемых Гуру поможет мне?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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