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

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

Закрытая тема
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 8]

Аватара для El Sanchez

Ветеран


Contributor


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


Конфигурация

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


Изменения
Автор: El Sanchez
Дата: 22-10-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:

Показать/скрыть: Ссылки на примеры скриптов:

Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;

  • RegExporter - Фриварная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.2.0 [23.09.2014] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

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

Отправлено: 08:52, 02-02-2015

 

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


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

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


us_ov, Примерно так
Скрытый текст
Код: Выделить весь код
var
cbDrive: TComboBox;
DrvLetters: array of string;
FreeSpaceLabel: TLabel;

function GetDriveType(lpDisk: string): integer;
external 'GetDriveTypeA@kernel32.dll stdcall';

function GetLogicalDriveStrings(nLenDrives: LongInt; lpDrives: string): integer;
external 'GetLogicalDriveStringsA@kernel32.dll stdcall';

const
DRIVE_UNKNOWN=0;
DRIVE_NO_ROOT_DIR=1;
DRIVE_REMOVABLE=2;
DRIVE_FIXED=3;
DRIVE_REMOTE=4;
DRIVE_CDROM=5;
DRIVE_RAMDISK=6;

function DriveTypeString(dtype: integer): string;
    begin
      case dtype of
      DRIVE_NO_ROOT_DIR: Result:='Неверный путь';
      DRIVE_REMOVABLE: Result:='Съемный';
      DRIVE_FIXED: Result:='Фиксированный';
      DRIVE_REMOTE: Result:='Сетевой';
      DRIVE_CDROM: Result:='CD-ROM';
      DRIVE_RAMDISK: Result:='Ram диск';
      else
      Result:='Неизвестный';
    end;
end;

procedure cbDriveOnClick(Sender: TObject);
  begin
    WizardForm.DirEdit.Text:=DrvLetters[cbDrive.ItemIndex]+'!Po';
  end;

procedure FillCombo();
var
  n: integer;
  drivesletters: string; lenletters: integer;
  drive: string;
  disktype, posnull: integer;
  sd: string;
begin
  sd:=UpperCase(ExpandConstant('{sd}'));
  drivesletters:=StringOfChar(' ', 64);
  lenletters:=GetLogicalDriveStrings(63, drivesletters);
  SetLength(drivesletters, lenletters);
  drive:='';
  n:=0;
  while ((Length(drivesletters) > 0)) do
    begin
      posnull:=Pos(#0, drivesletters);
      if posnull > 0 then
        begin
          drive:=UpperCase(Copy(drivesletters, 1, posnull-1));
          disktype:=GetDriveType(drive);
          if ( not ( disktype = DRIVE_CDROM ) ) then
            begin
              cbDrive.Items.Add(drive+DriveTypeString(disktype))
              SetArrayLength(DrvLetters, N+1);
              DrvLetters[n]:=drive;
              if (Copy(drive, 1, 2)=sd) then cbDrive.ItemIndex:=n;
              n:=n+1;
            end
          drivesletters:=Copy(drivesletters, posnull+1, Length(drivesletters));
        end
    end;
  cbDriveOnClick(cbDrive);
end;

procedure GetFreeSpaceCaption(Sender: TObject);
var
  Path: string;
  FreeMB, TotalMB: cardinal;
    begin
      Path:=ExtractFileDrive(WizardForm.DirEdit.Text);
      GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
      if FreeMB > 1024 then
      FreeSpaceLabel.Caption:='Свободно на диске: ' + FloatToStr(round(FreeMB/1024*100)/100) + ' GB'
      else
      FreeSpaceLabel.Caption:='Свободно на диске: ' + IntToStr(FreeMB) + ' MB'
    end;

procedure InitializeWizard();

begin
      cbDrive:=TComboBox.Create(WizardForm.SelectDirPage);
      FreeSpaceLabel:=TLabel.Create(WizardForm);
      with cbDrive do
        begin
          Parent:=WizardForm.DirEdit.Parent;
          Left := ScaleX(0);
        //  Left:=WizardForm.DirEdit.Left+41; //  41
          Top:=WizardForm.DirEdit.Top+WizardForm.DirEdit.Height*2-15; //2-15
        //  Width:=WizardForm.DirEdit.Width;
          Width := ScaleX(400); //размер
          Style:=csDropDownList;
        end
      with FreeSpaceLabel do
        begin
          Parent:=WizardForm.SelectDirPage;
          Left:=ScaleX(0);
          Top:=Scaley(195);
          Width:=ScaleX(209); //209
          Height:=ScaleY(13);
        end;
    WizardForm.DirBrowseButton.Visible:=false; // False
    WizardForm.DirEdit.Enabled:=true;
    WizardForm.DirEdit.OnChange:=@GetFreeSpaceCaption;
    WizardForm.DirEdit.Text:=WizardForm.DirEdit.Text+#0;
    FillCombo;
    cbDrive.OnClick:=@cbDriveOnClick;

  with WizardForm.DirEdit do
  begin
    Left := ScaleX(0);
    Top := ScaleY(80); //выше ниже
    Height := ScaleY(23);
    Width:=ScaleX(400); //209 размер
  end;
    
  with WizardForm.DirBrowseButton do// пришлось сдвинуть  обзор
  begin
    Left := ScaleX(0);
    Top := ScaleY(150);
    Height := ScaleY(30);
  end;
  end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:40, 08-08-2015 | #871



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

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


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


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

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


TryRooM, СПАСИБО!

Отправлено: 17:11, 08-08-2015 | #872


Забанен


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

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


парни нужна помощь срочно на скрине думаю всё понятно

Отправлено: 19:12, 08-08-2015 | #873


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


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

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


vadjliss,
[Setup]
;AllowNoIcons=yes не создавать папку в меню пуск

Вы закомментировали?

Посмотрите, у вас в коде нет этого.
var
No_Icons_CheckBox: TNewCheckBox;

Последний раз редактировалось TryRooM, 08-08-2015 в 21:45.


Отправлено: 20:58, 08-08-2015 | #874


Забанен


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

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


TryRooM
[Setup]
;AllowNoIcons=yes не создавать папку в меню пуск
не отключает

Отправлено: 21:32, 08-08-2015 | #875


SHVtYW4=


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

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


vadjliss, Удалите:
Код: Выделить весь код
AllowNoIcons=yes
или замените yes на no:
Код: Выделить весь код
AllowNoIcons=no

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.

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

Отправлено: 21:52, 08-08-2015 | #876


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


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

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


Здравствуйте.
Решил сделать слайдшоу, нашел пример с использованием isgsg.dll:
Фрагмент кода
Код: Выделить весь код
[_Code]
.......
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep=ssInstall then begin
    ExtractTemporaryFile('Screen (1).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (1).jpg');
    ExtractTemporaryFile('Screen (2).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (2).jpg');
    ExtractTemporaryFile('Screen (3).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (3).jpg');
    ExtractTemporaryFile('Screen (4).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (4).jpg');
    ExtractTemporaryFile('Screen (5).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (5).jpg');
    ExtractTemporaryFile('Screen (6).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (6).jpg');
    ExtractTemporaryFile('Screen (7).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (7).jpg');
    ExtractTemporaryFile('Screen (8).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (8).jpg');
    ExtractTemporaryFile('Screen (9).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (9).jpg');
    ExtractTemporaryFile('Screen (10).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (10).jpg');
    ExtractTemporaryFile('Screen (11).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (11).jpg');
    ExtractTemporaryFile('Screen (12).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (12).jpg');
    ExtractTemporaryFile('Screen (13).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (13).jpg');
    ExtractTemporaryFile('Screen (14).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (14).jpg');
    ExtractTemporaryFile('Screen (15).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (15).jpg');
    ExtractTemporaryFile('Screen (16).jpg');
    ssAddImage(ExpandConstant('{tmp}')+'\Screen (16).jpg');
    ssStartShow;
  end;
  if CurStep=ssPostInstall then ssStopShow;
end;
..........

А можно ли как нибудь прописать показ изображений с помощью цикла - чтобы Inno сам формировал себе список для слайдшоу из изображений, которые найдёт в папке {tmp} ?

Отправлено: 07:29, 09-08-2015 | #877


Забанен


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

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


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

с меня плюсик

Отправлено: 14:57, 11-08-2015 | #878


Аватара для Sotonisto

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


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

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


Цитата vadjliss:
перед установкой удалило старую версию программы»
Как-то так:
Скрипт
Код: Выделить весь код
#define gameid "{11110000-2222-3333-4444-555500000000}"
#define appname "My Program"
#define appversion "1.0"

[Setup]
AppId={{#gameid}
AppName={#appname}
AppVerName={#appname}
AppVersion={#appversion}
DefaultDirName={pf}\{#appname}
OutputDir=.
OutputBaseFilename=setup
Compression=lzma2/ultra64
SolidCompression=true
PrivilegesRequired=poweruser

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

[CustomMessages]
rus.DeleteInfo1=Перед установкой необходимо удалить предыдущую версию приложения. Удалить?
rus.DeleteInfo2=Удаление предыдущей версии  приложения завершилось неудачей.

[Code_]
function UninstallMyApp(): Boolean;
var
  Buff: String;
  i: Integer;
begin
  Result:= not RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#gameid}_is1', 'UninstallString', Buff);
  if not Result then Result:= not FileExists(RemoveQuotes(Buff));
  if not Result then
  if MsgBox(ExpandConstant('{cm:DeleteInfo1}'), mbError, MB_YESNO) = IDYES then
  try
  Exec(RemoveQuotes(Buff), '', ExtractFilePath(RemoveQuotes(Buff)), SW_SHOW, ewWaitUntilTerminated, i);
  finally Result:= not RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#gameid}_is1', 'UninstallString', Buff );
  if not Result then MsgBox(ExpandConstant('{cm:DeleteInfo2}'), mbError, MB_OK);
  end;
end;

function InitializeSetup(): Boolean;
begin
  Result:= UninstallMyApp();
end;

-------
Большой шаг вперед, как правило, следствие хорошего пинка под зад.


Отправлено: 16:54, 12-08-2015 | #879


Забанен


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

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


Цитата Sotonisto:
#define gameid "{11110000-2222-3333-4444-555500000000}"
#define appname "My Program"
#define appversion "1.0"
[Setup]
AppId={{#gameid}
AppName={#appname}
AppVerName={#appname}
AppVersion={#appversion}
DefaultDirName={pf}\{#appname}
OutputDir=.
OutputBaseFilename=setup
Compression=lzma2/ultra64
SolidCompression=true
PrivilegesRequired=poweruser
[Languages]
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl";
[CustomMessages]
rus.DeleteInfo1=Перед установкой необходимо удалить предыдущую версию приложения. Удалить?
rus.DeleteInfo2=Удаление предыдущей версии приложения завершилось неудачей.
[Code_]
function UninstallMyApp(): Boolean;
var
Buff: String;
i: Integer;
begin
Result:= not RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#gameid}_is1', 'UninstallString', Buff);
if not Result then Result:= not FileExists(RemoveQuotes(Buff));
if not Result then
if MsgBox(ExpandConstant('{cm:DeleteInfo1}'), mbError, MB_YESNO) = IDYES then
try
Exec(RemoveQuotes(Buff), '', ExtractFilePath(RemoveQuotes(Buff)), SW_SHOW, ewWaitUntilTerminated, i);
finally Result:= not RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#gameid}_is1', 'UninstallString', Buff );
if not Result then MsgBox(ExpandConstant('{cm:DeleteInfo2}'), mbError, MB_OK);
end;
end;
function InitializeSetup(): Boolean;
begin
Result:= UninstallMyApp();
end; »
что то не выходит
не отображаются надписи
ред установкой необходимо удалить предыдущую версию приложения. Удалить?
Удаление предыдущей версии приложения завершилось неудачей.

Отправлено: 19:58, 12-08-2015 | #880



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 7] El Sanchez Автоматическая установка приложений 2499 02-02-2015 08:59
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58




 
Переход