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

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

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

Сообщение Habetdin »

Цитата vahe-91:



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




Всегда пожалуйста, если я знаю ответ, то отвечаю на конкретные вопросы. Вопросы общего плана "Как сделать заипок" проходят мимо. Желающие получить код на халяву так же идут следом. Если есть вопросы - сначала почитай что в шапке, поверь, это уменьшит вопросы наполовину. Я сам начинал с шапки.




Цитата vahe-91:



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




InitializeSetup - это сис.функция, если она вернет Фалсе* инсталлер закроется и не пикнет. Что-то возвращает Фалсе. Потыкай Result := True в разные места, примерно так.



Код:

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

 
[_Code] 
var paramZ:boolean; 
function InitializeSetup(): Boolean;
var i:integer; x,s, st:string;
begin    
Result := True;
for i:=2 to ParamCount do 
begin st:=Lowercase(ParamStr(i)); 
StringChangeEx(st, '/', '', True); 
StringChangeEx(st, '\', '', True); StringChangeEx(st, '-', '', True); 
case st of  Lowercase('z') : paramZ := true; 
Result := True;
end;  
end;  
end;

Такая фенька с расстановкой Result := True; у меня была на старой версии инно. тут Лександер страниц 5 назад выкладывал ультра инно с препроцессором и тп., на нем у меня без этих подстановок робит



И постарайся структурировать код, отступами, пустыми строчками, а то сплошной поток символов, самому будет легче разбираться.



* ничего что я по-английски Изображение
Аватара пользователя
Habetdin

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

Сообщение Habetdin »

Цитата Vamp1re:



а можете мне дать целую готовую командную строку rar?
Скрипты Inno Setup. Помощь и советы [часть 3]




к сожалению с ним не знаком, т.к. rar'ом не пользуюсь, на мой взгляд 7z лучше.




Цитата Rostlv:



но в более новых темах для XP под Висту и Севен, где прогрессбар цельный, он не отображается
Скрипты Inno Setup. Помощь и советы [часть 3]




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


Цитата Rostlv:



расположить не над основным прогрессбаром, а над фейковым? Было бы резоннее.
Скрипты Inno Setup. Помощь и советы [часть 3]




Как говорят, на вкус и цвет...

Можете сами нарисовать дополнительный статик и выводить в нём сообщения.


Цитата Rostlv:



Добавление перевода в секцию [CustomMessages] проблему не решает. Сделать два языка в секции [Types] не получается
Скрипты Inno Setup. Помощь и советы [часть 3]




Решается это двумя способами:

1. В каждом своём скрипте прописываете через [CustomMessages] перевод для каждого языка и уже указываете в [Types] свою переменную, т.е.:



Код:

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

[CustomMessages]
russian.CustomInstallation=Выборочная установка
english.CustomInstallation=Custom installation
[Types]
Name: custom; Description: {cm:CustomInstallation}; Flags: iscustom

2. Открываете языковой файл, допустим Russian.isl, распаложен в папке Languages, находите в конце файла секцию [CustomMessages] и добавляете в неё новой строкой



Код:

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

CustomInstallation=Выборочная установка

и так далее для каждого языка, т.е. для English.isl:



Код:

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

CustomInstallation=Custom installation

а в скрипте уже просто пишите



Код:

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

[Types]
Name: custom; Description: {cm:CustomInstallation}; Flags: iscustom


Цитата nik1967:



С помощью операторов while и do пробовал зациклить, но не могу условия сообразить.
Скрипты Inno Setup. Помощь и советы [часть 3]






Код:

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

  while True do
    begin
      GameAlreadyInstall := RegQueryStringValue({#ValueExists}, GamePath) and FileExists({#FileExists});
      case GameAlreadyInstall of
        True:
          begin
            // здесь что-то делаем
          end;
        False:
          begin
            // здесь что-то делаем
          end;
      end;
//      if условие then
        Break; // выходим из цикла
    end;
Аватара пользователя
Diman19

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

Сообщение Diman19 »

Цитата vahe-91:



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






Код:

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

[Code]
var
  paramZ: Boolean;
function InitializeSetup(): Boolean;
var
  i: Integer;
  st: string;
begin
  Result := True;
  for i := 2 to ParamCount do
    begin
      st := Lowercase(ParamStr(i));
      StringChangeEx(st, '/', '', True);
      StringChangeEx(st, '\', '', True);
      StringChangeEx(st, '-', '', True);
      paramZ := st = 'z';
    end;
end;
Аватара пользователя
Habetdin

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

Сообщение Habetdin »

Serega,

а сейчас компилируется, установщик запускается, а если запустить с ключом /z, то будет тоже самое что и без него
Аватара пользователя
Diman19

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

Сообщение Diman19 »

Цитата vahe-91:



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




Если вы просто скопировали из предыдущего поста, то естественно.

Я лишь подкорректировал код R.i.m.s.k.y., чтоб было понятней:



Код:

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

var
  paramZ: Boolean;
function InitializeSetup(): Boolean;
var
  i: Integer;
  st: string;
begin
  Result := True;
  for i := 2 to ParamCount do
    begin
      st := Lowercase(ParamStr(i));
      StringChangeEx(st, '/', '', True);
      StringChangeEx(st, '\', '', True);
      StringChangeEx(st, '-', '', True);
      paramZ := st = 'z';
    end;
  if paramZ then
    MsgBox('Ключ "z", присутствует в командной строке.', mbInformation, MB_OK);
end;
Аватара пользователя
Habetdin

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

Сообщение Habetdin »

Цитата Vista-w:



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




Ну вот тебе прозрачный текст Изображение


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


Изображение



"Новая" версия инсталла для Fallout NV Изображение

Изменения: добавил чебоксы и музыку во время инсталляции, немного подправил скрипт.

СКАЧАТЬ АРХИВ


P.S.: Спасибо за помощь с чебоксами vint56'у с Ru-board.
Аватара пользователя
Diman19

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

Сообщение Diman19 »

Цитата Serega:



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




а как именно должно быть ? я всего 2 дня изучаю Инно
Аватара пользователя
Habetdin

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

Сообщение Habetdin »

Цитата vahe-91:



я всего 2 дня изучаю Инно
Скрипты Inno Setup. Помощь и советы [часть 3]




Нашёл на предыдущей странице ваш пост, с запуском файла x.exe, должно быть так:


Пример






Код:

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

[Files]
Source: C:\Documents and Settings\Administrator\Desktop\x.exe; Flags: dontcopy
[Code]
var
  paramZ: Boolean;
function GetKeyParamStr(const key: string): Boolean;
{ функция вернёт True, если ключ key присутствует в командной строке }
var
  i: Integer;
  s, t: string;
begin
  try
    Result := False;
    t := Lowercase(key);
    for i := 2 to ParamCount do
      begin
        s := Lowercase(ParamStr(i));
        if Pos(t, s) > 0 then
          begin
            StringChangeEx(s, '/', '', True);
            StringChangeEx(s, '\', '', True);
            StringChangeEx(s, '-', '', True);
            Result := t = s;
          end;
        if Result then Break;
      end;
  finally
    SetLength(s, 0);
    SetLength(t, 0);
  end;
end;
function InitializeSetup(): Boolean;
begin
  Result := True;
  paramZ := GetKeyParamStr('z');
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
  res: Integer;
begin
  if (CurStep = ssDone) and paramZ then
    begin
      ExtractTemporaryFile('x.exe');
      Exec(ExpandConstant('{tmp}\x.exe'), '/z', ExpandConstant('{tmp}'), SW_HIDE, ewWaitUntilTerminated, res);
    end;
end;
Аватара пользователя
Vamp1re

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

Сообщение Vamp1re »

Я зделал так чтоб у меня распаковывало архивы 7zip в inno setup но там надо выбирать директорию рапаковки а мне етого ненадо так как в инсталяторе от инно ето есть! как мне сделать чтоб 7zip архиватор не запрашивал директорию распаковки?
Ответить

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