Скрипты Inno Setup. Помощь и советы [часть 3]

Ответить
 • Просмотры: 26
Аватара пользователя
Gnom_aka_Lexander

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение Gnom_aka_Lexander »

Цитата bagrat:



bagrat
Скрипты Inno Setup. Помощь и советы [часть 3]




это для нахождения ключа регистра игры
Аватара пользователя
dracosha

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение dracosha »

регистр это форматировние текста - капс лок - простой текст, реестр это настройки винды и программ
Аватара пользователя
nik1967

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение nik1967 »

значит открываешь пуск --выполнить---regedit---software-- ищешь папку с игрой выделяешь ---(ПКМ)экспорт и выбираешь к примеру раб стол(реестр игры твой)
Аватара пользователя
45king

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение 45king »

а как сделать чтобы при удалении игры появлялась сообщение вы хотите удалить сохранение игры да или нет?
Аватара пользователя
Gugle

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение Gugle »

Доброго времени суток!

Нашел на форуме как добавить дополнительное окно в скрипт, которое просит ввести какую то доп информацию до установки приложения:

Код:

Код: Выделить всё

var
  UserPage: TInputQueryWizardPage;
procedure InitializeWizard;
begin
  UserPage := CreateInputQueryPage(wpWelcome,
    'Доп. информация', 'ВНИМАНИЕ! доп инфо ');
  UserPage.Add('Количество :', False);
  UserPage.Add('ни о чем:', True);
end;

Все хорошо. Я даже нашел как проверить, что данные введены:

Код:

Код: Выделить всё

function NextButtonClick(CurPageID: Integer): Boolean;
var
  I: Integer;
begin
  Result := True;
  if CurPageID = UserPage.ID then begin
    if UserPage.Values[0] = '' then begin
      MsgBox('Вы должны че нить ввести в первое поле', mbError, MB_OK);
      Result := False;
    end;
  end;
end;

Вопрос! Как проверить, что в UserPage.Values[0] введено число, а не просто текст?

И, если это возможно, как проверить что число попало в промежуток, например от -10 до 10.

Заранее благодарен.
Аватара пользователя
Gnom_aka_Lexander

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение Gnom_aka_Lexander »

у меня х64, и я реально устал искать




Цитата bagrat:



bagrat
Скрипты Inno Setup. Помощь и советы [часть 3]




спасибо за прогу, теперь нашел
Аватара пользователя
Gnom_aka_Lexander

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение Gnom_aka_Lexander »

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node

тут на х64 системе хранится большенство данных реестра.
Аватара пользователя
ssv14

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение ssv14 »

есть код декодирования OGG. Нужно сделать что бы еще и WV декодировалось. Объединяю оба один за другим, но беда в том, что oни получаются идентичны (кроме переменных) и используют одну и туже функцию StringToArray и при компиляции ругается, что во втором куске она продублирована.

Как прописать ее для обоих участков кода, для 3х участков?




читать дальше »






[code1]

var

Files1: Array of String;

S1: String;

n1: Integer;



Function StringToArray(Text, Cut: String): array of String;



var i1, k1: Integer;



Begin

SetArrayLength(Result, 0); if Cut = '' then Cut:= #1310; //если шаблон пуст, считаем переводы строк

Repeat k1:= Pos(Cut,Text);

if k1 = 1 then begin Delete(Text, 1, Length(Cut)); CONTINUE

end;

SetArrayLength(Result, GetArrayLength(Result) +1); i1:= GetArrayLength(Result) -1;

if k1 = 0 then

Result[i1]:=Text

else begin

Result[i1]:= Copy(Text, 1, k1 -1); Delete(Text, 1, Length(Result[i1]) + Length(Cut));

end;

Until Length(Text) * k1 = 0;

End;



procedure FindFiles(FromDir: String; Mask: String);

var FSR, DSR: TFindRec; FindResult: Boolean;

begin

FindResult:= FindFirst(AddBackslash(FromDir)+Mask, FSR)

while FindResult do begin

if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then begin

S1:= S1 + AddBackslash(fromDir) + FSR.Name +'|';

end;

FindResult:= FindNext(FSR);

end;

FindResult:= FindFirst(AddBackslash(FromDir)+ '*.*', DSR)

while FindResult do begin

if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and not ((DSR.Name = '.') or (DSR.Name = '..')) then begin

FindFiles(AddBackSlash(FromDir)+ DSR.Name, Mask)

end;

FindResult:= FindNext(DSR);

end;

FindClose(FSR); FindClose(DSR)

end;



procedure RecodeOgg;

var ResultCode: integer;

CurFile: String;



begin

FindFiles(ExpandConstant('{app}\ogg\sound\'), '*.ogg') //Находим все файлы по маске, в выбранной папке

Files1:= StringToArray(S1, '|') //Переводим в массив

WizardForm.ProgressGauge.Max:= GetArrayLength(Files1)-1; //Получаем кол-во файлов

for n1:=(GetArrayLength(Files1)-1) downto 0 do begin

CurFile:= Files1[n1]

StringChange(CurFile, AddBackslash(ExpandConstant('{app}\ogg\sound\')), '')

Exec(ExpandConstant('{app}\ogg\sound\oggdec.exe'), '-Q '+ AddQuotes(CurFile), '', SW_Hide, EwWaitUntilTerminated, ResultCode) //Для каждого файла запускаем декодер

DeleteFile(Files1[n1]) //Удаляем ненужный файл

WizardForm.FilenameLabel.Caption:= Files1[n1]; //Двигаем прогрессбар

WizardForm.ProgressGauge.Position:= WizardForm.ProgressGauge.Position +1;

end;

DeleteFile(ExpandConstant('{app}\ogg\sound\oggdec.exe'))

end;



procedure CurStepChanged(CurStep: TSetupStep);

begin

if CurStep = ssPostInstall then

begin

WizardForm.ProgressGauge.Position := 0;

WizardForm.StatusLabel.Caption := 'Decompressing audio files, please wait...';

RecodeOgg;

end;

end;







//-------распаковка WV ------------------------------------------------





[code2]

var

Files2: Array of String;

S2: String;

n2: Integer;



Function StringToArray(Text, Cut: String): array of String; //стопор, т.к уже дублируется в предыдущем коде



var i2, k2: Integer;



Begin

SetArrayLength(Result, 0); if Cut = '' then Cut:= #1310; //если шаблон пуст, считаем переводы строк

Repeat k2:= Pos(Cut,Text);

if k2 = 1 then begin Delete(Text, 1, Length(Cut)); CONTINUE

end;

SetArrayLength(Result, GetArrayLength(Result) +1); i2:= GetArrayLength(Result) -1;

if k2 = 0 then

Result[i2]:=Text

else begin

Result[i2]:= Copy(Text, 1, k2 -1); Delete(Text, 1, Length(Result[i2]) + Length(Cut));

end;

Until Length(Text) * k2 = 0;

End;



procedure FindFiles(FromDir: String; Mask: String);

var FSR, DSR: TFindRec; FindResult: Boolean;

begin

FindResult:= FindFirst(AddBackslash(FromDir)+Mask, FSR)

while FindResult do begin

if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then begin

S2:= S2 + AddBackslash(fromDir) + FSR.Name +'|';

end;

FindResult:= FindNext(FSR);

end;

FindResult:= FindFirst(AddBackslash(FromDir)+ '*.*', DSR)

while FindResult do begin

if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and not ((DSR.Name = '.') or (DSR.Name = '..')) then begin

FindFiles(AddBackSlash(FromDir)+ DSR.Name, Mask)

end;

FindResult:= FindNext(DSR);

end;

FindClose(FSR); FindClose(DSR)

end;



procedure RecodeWV;

var ResultCode: integer;

CurFile: String;



begin

FindFiles(ExpandConstant('{app}\WV\sound\'), '*.wv') //Находим все файлы по маске, в выбранной папке

Files2:= StringToArray(S2, '|') //Переводим в массив

WizardForm.ProgressGauge.Max:= GetArrayLength(Files2)-1; //Получаем кол-во файлов

for n2:=(GetArrayLength(Files2)-1) downto 0 do begin

CurFile:= Files2[n2]

StringChange(CurFile, AddBackslash(ExpandConstant('{app}\WV\sound\')), '')

Exec(ExpandConstant('{app}\WV\sound\wvunpack.exe'), '-t -q -y '+ AddQuotes(CurFile), '', SW_Hide, EwWaitUntilTerminated, ResultCode) //Для каждого файла запускаем декодер

DeleteFile(Files2[n2]) //Удаляем ненужный файл

WizardForm.FilenameLabel.Caption:= Files2[n2]; //Двигаем прогрессбар

WizardForm.ProgressGauge.Position:= WizardForm.ProgressGauge.Position +1;

end;

DeleteFile(ExpandConstant('{app}\WV\sound\wvunpack.exe'))

end;



procedure CurStepChanged(CurStep: TSetupStep);

begin

if CurStep = ssPostInstall then

begin

WizardForm.ProgressGauge.Position := 0;

WizardForm.StatusLabel.Caption := 'Decompressing audio files, please wait...';

RecodeWV;

end;

end;
Аватара пользователя
Gugle

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение Gugle »

Цитата ilyhakz001:



Есть еще одна прога, через неё запускаешь установку игры и она выдает ключи реестра! кто нибудь знает такую?
Скрипты Inno Setup. Помощь и советы [часть 3]




RegShot
Аватара пользователя
Gugle

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение Gugle »

Второй вопрос отпал. Нашел описание, разобрался.

первый вопрос, об изменении записи названия секции остался.
Ответить

Вернуться в «Автоматическая установка приложений»