Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Закладки » Inno Setup (создание инсталяционных пакетов)

Модерирует : gyra, Maz

Widok (23-04-2007 18:02): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108

   

haav



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

 
 
Это мощное средство для создания установочных пакетов [дистрибутивов] программ. Поддерживается шифрование, установка пароля, различные задачи по завершении установки. Можно легко самим создавать диалоги, используя спец. дизайнер. И всё это абсолютно бесплатно! По сравнению с NullSoft [основной конкурент на бесплатной ниве] мне albel понравилась более интуитивно-понятная структура скрипта, простота в настройке.  
 
Последний релиз: 5.1.11 [1 Марта 2007 года]
История версий | скачать  
 
Русификатор от NightW0lf для версии 5.1.11  
Скачать | зеркало
 
Русская справка к версиям 5.0.xx
Скачать | зеркало || cкачать в .chm формате
И снова BagIra на высоте
 
Руководство по расширенным возможностям Inno Setup 5 [не для чайников] от Kindly
[3 версия]  
Скачать | зеркало
[4 версия]  
Скачать | зеркало
[5 версия]  
Скачать | зеркало
 
Inno Setup Extensions Knowledge Base  
Скачать | зеркало
 
Примечание: начиная с версии 5.1.10 в Inno Setup при использовании в инсталляторе фонового изображения формата BMP стало глючить возможность растягивания картинки на весь экран - чтобы это исправить добавьте этот код.
Если вы захотите использовать метод проверки внешнего файла через сумму MD5 [который описан в 5 версии руководства по программированию в Inno Setup] для запуска инсталлятора то вам понадобится калькулятор суммы MD5, калькулятор сумм MD5, SHA-256, CRC32. Если вы хотите узнать какие ключи в реестр вносит та или иная программа [или игра] то Вам понадобится RegShot.



Дополнительные утилиты для Inno Setup



ISTool
 
www.istool.org
 
Последний релиз: 5.1.8 [18 Октября 2006 года] New
Скачать | зеркало  
[как сказано в описании изменений, добавлена поддержка новых директив 5.1.8]
 
Русификатор
Скачать | зеркало


 
Распаковщик установок, сделанных с помощью Inno Setup. При распаковке извлекаются  ресурсы и скрипт установки [немного усечённый]. Возможно подключение к TotalCommander или FAR с помощью MultiArc плагинов.
 
Поддерживает распаковку инсталляторов, сделанных с помощью Inno Setup начиная с версии 3.0.0-beta по 5.1.10
 
Последний релиз: 0.19
Скачать | зеркало


 
Удобная оболочка для облегчения написания скриптов установки для INNO SETUP. Обладает некоторыми полезными функциями, которых нет ни у самого INNO, ни у ISTool.
 
Последний релиз: 5.1.6.9 [09 Июль 2006 года]
Скачать 4.2 мб | обновление 3.1 мб
 
Русификатор от GloThin
Скачать с сайта GloThin | Зеркало | Зеркало | зеркало
Пароль: ruboard
Примечание: офф. сайт косо отображается в Oper`е.
 
Новое название проекта на сайте, похоже произошла замена ScriptMaker на:
 
Inno Script Generator

Последний релиз: 1.02.5 [02 Апреля 2007 года]
Скачать | обновление
Примечание: обновление ставится только на Inno Setup Quickstartpack 5.1.11.

Всего записей: 67 | Зарегистр. 11-12-2001 | Отправлено: 15:23 09-10-2002 | Исправлено: NightW0lf, 15:16 15-04-2007
Sampron

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
мда такое в инно наверно нереально сделать

Всего записей: 563 | Зарегистр. 06-01-2007 | Отправлено: 00:05 19-04-2007
Sero



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sampron
О чем ты?

Всего записей: 309 | Зарегистр. 29-10-2006 | Отправлено: 00:14 19-04-2007 | Исправлено: Sero, 00:38 19-04-2007
Sampron

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот пример того что нужно:
(2,3мб) http://data.cod.ru/844594634

Всего записей: 563 | Зарегистр. 06-01-2007 | Отправлено: 00:38 19-04-2007
Ded_PiXto



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну вот вроде сайлент инсталл :
 

Цитата:
 
[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DisableDirPage=yes
DisableProgramGroupPage=yes
DisableReadyPage=yes
DisableFinishedPage=yes
OutputBaseFilename=setup
 
[Files]
Source: "C:\My Program\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
 
[Code]
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpWelcome then
begin
SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
end;
end;

Всего записей: 45 | Зарегистр. 23-01-2007 | Отправлено: 01:39 19-04-2007
GRom V

Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sampron

Цитата:
забираем здесь:  
http://data.cod.ru/841711050

как обьединить твой скрипт и например этот, т е чтоб проверка производилась при нажатии кнопки тест?
 
const
  NeedSize = 20;
  DRIVE_UNKNOWN = 0;
  DRIVE_NO_ROOT_DIR = 1;
  DRIVE_REMOVEABLE = 2;
  DRIVE_FIXED = 3;
  DRIVE_REMOTE = 4;
  DRIVE_CDROM = 5;
  DRIVE_RAMDISK = 6;
 
var
  ListBox: TListBox;
  Text: TNewStaticText;
 
function GetVideoCardName(): PChar;
  external 'hwc_GetVideoCardName@files:get_hw_caps.dll stdcall';
 
function GetSoundCardName(): PChar;
  external 'hwc_GetSoundCardName@files:get_hw_caps.dll stdcall';
 
function DetectHardware(): Integer;
  external 'hwc_DetectHardware@files:get_hw_caps.dll stdcall';
 
function GetHardDriveFreeSpace(hdd: integer): Integer;
  external 'hwc_GetHardDriveFreeSpace@files:get_hw_caps.dll stdcall';
 
function GetHardDriveName(hdd: integer): PChar;
  external 'hwc_GetHardDriveName@files:get_hw_caps.dll stdcall';
 
function GetHardDriveTotalSpace(hdd: integer): Integer;
  external 'hwc_GetHardDriveTotalSpace@files:get_hw_caps.dll stdcall';
 
function GetHardDrivesCount(): Integer;
  external 'hwc_GetHardDrivesCount@files:get_hw_caps.dll stdcall';
 
function GetSoundCards(): Integer;
  external 'hwc_GetSoundCards@files:get_hw_caps.dll stdcall';
 
function GetSystemPage(): Integer;
  external 'hwc_GetSystemPage@files:get_hw_caps.dll stdcall';
 
function GetSystemPhys(): Integer;
  external 'hwc_GetSystemPhys@files:get_hw_caps.dll stdcall';
 
function GetVidMemLocal(): Integer;
  external 'hwc_GetVidMemLocal@files:get_hw_caps.dll stdcall';
 
function GetVidMemNonLocal(): Integer;
  external 'hwc_GetVidMemNonLocal@files:get_hw_caps.dll stdcall';
 
function GetVideoCardDev(): Integer;
  external 'hwc_GetVideoCardDev@files:get_hw_caps.dll stdcall';
 
function GetVideoCardVen(): Integer;
  external 'hwc_GetVideoCardVen@files:get_hw_caps.dll stdcall';
 
function GetLogicalDrives: DWORD;
  external 'GetLogicalDrives@kernel32.dll stdcall';
 
function GetDriveType(nDrive: string): Longint;
  external 'GetDriveTypeA@kernel32.dll stdcall';
 
function DelSp(const s: string): string; //функция удаления табуляции и пробелов в начале строки
var
  c, i: integer;
  stt, st, st1: string;
begin
  c := 0;
  st := s;
 
  for i := 1 to Length(st) do
  begin
 
    stt := copy(st, i, 1);
    if (stt = ' ') and (c >= 1) then
    begin
      st1 := st1;
      c := c + 1;
    end
    else if (stt = ' ') and (c = 0) then
    begin
      c := c + 1;
      st1 := st1 + stt;
    end
    else if (stt <> ' ') then
    begin
      c := 0;
      st1 := st1 + stt;
    end
  end;
 
  Result := st1;
end;
 
function CheckSystemPage(PreviousPageId: Integer): Integer;
var
  Page: TWizardPage;
  ProcessorName: string;
 
  Processor, VideoCardPanel, AudioCardPanel, RAMPanel, PageFilePanel: TMemo;
  ProcessorNamePanel, VideoCardNamePanel, AudioCardNamePanel, RAMTotalPanel, PageFileTotalPanel: TMemo;
 
  ProcessorMHZ: Cardinal;
  StaticText, StaticText2: TNewStaticText;
  VidRam: integer;
begin
  RegQueryStringValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', 'ProcessorNameString', ProcessorName);
  RegQueryDWordValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', '~MHz', ProcessorMHZ);
  GetVidMemLocal;
  GetSoundCards;
 
  Page := CreateCustomPage(PreviousPageId, 'Аппаратное Обеспечение', 'Программа установки обнаружила следующие необходимые компоненты');
 
  StaticText := TNewStaticText.Create(Page);
  with StaticText do
  begin
    Parent := Page.Surface;
    Caption := 'Все компоненты соответствуют требованиям игры.';
    Left := 0;
    Top := 0;
    AutoSize := True;
  end;
 
  StaticText2 := TNewStaticText.Create(Page);
  with StaticText2 do
  begin
    Parent := Page.Surface;
    Caption := 'Когда Вы будите, готовы продолжить установку, нажмите «Далее».';
    Left := 0;
    Top := 220;
    AutoSize := True;
  end;
 
//******************************************* [Начало - Процессор] ***************************************************//
 
  Processor := TMemo.Create(Page);
  with Processor do
  begin
    Text := ' Процессор';
    Alignment := taLeftJustify;
    Parent := Page.Surface;
 
    Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(30);
    Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
 
    ReadOnly := True;
    Color := clBtnFace;
  end;
 
 
  ProcessorNamePanel := TMemo.Create(Page);
  with ProcessorNamePanel do
  begin
    Text := DelSP(ProcessorName) + '  ' + IntToStr(ProcessorMHZ) + 'MHz'; //новое обработанное значение строки
//Caption :=ProcessorName+'  '+IntToStr(ProcessorMHZ)+'MHz' ;
    Alignment := taLeftJustify;
    Parent := Page.Surface;
 
    Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
    Top := ScaleY(30);
    Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
 
    ReadOnly := True;
    Color := $CCFFCC;
  end;
 
  if ProcessorMHZ < 1800 then //Минимальное количество частоты в MHz
  begin
    StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
    ProcessorNamePanel.Color := $CCCCFF;
  end;
 
 
//******************************************* [Конец - Процессор] ****************************************************//
 
 
//******************************************* [Начало - Видеоадаптер] ************************************************//
 
  VideoCardPanel := TMemo.Create(Page);
  with VideoCardPanel do
  begin
    Text := ' Видеоадаптер';
    Alignment := taLeftJustify;
    Parent := Page.Surface;
 
    Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
    Top := Processor.Top + 27;
    Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
 
    ReadOnly := True;
    Color := clBtnFace;
  end;
 
  VideoCardNamePanel := TMemo.Create(Page);
  with VideoCardNamePanel do
  begin
    Text := ' ' + GetVideoCardName; //+'    ОЗУ-'+inttostr(round(GetVidMemLocal/1000000))+' МБ';
//Caption:='    ОЗУ-'+inttostr(GetVidMemLocal)+' МБ';
    Alignment := taLeftJustify;
    Parent := Page.Surface;
 
    VidrAM := GetVidMemLocal / 1000000;
 
    if VidRam > 127 then
    begin
      if VidRam < 200 then Text := Text + ' ОЗУ - 128 МB'
      else if VidRam < 300 then Text := Text + ' ОЗУ - 256 МB'
      else if VidRam < 400 then Text := Text + ' ОЗУ - 384 МB'
      else if VidRam > 500 then Text := Text + ' ОЗУ - 512 МB';
    end;
 
    Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
    Top := VideoCardPanel.Top;
    Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
 
    ReadOnly := True;
    Color := $CCFFCC;
  end;
 
  if GetVidMemLocal < 127000000 then //Минимальное объем ОЗУ [в байтах] у видеоадаптера 128 MB
  begin
    StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
    VideoCardNamePanel.Color := $CCCCFF;
  end;
 
//******************************************* [Конец - Видеоадаптер] *************************************************//
 
 
//******************************************* [Начало - Звуковая карта] **********************************************//
 
  AudioCardPanel := TMemo.Create(Page);
  with AudioCardPanel do
  begin
    Text := ' Звуковая карта';
    Alignment := taLeftJustify;
    Parent := Page.Surface;
 
    Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
    Top := VideoCardPanel.Top + 27;
    Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
 
    ReadOnly := True;
    Color := clBtnFace;
  end;
 
  AudioCardNamePanel := TMemo.Create(Page);
  with AudioCardNamePanel do
  begin
    Text := ' ' + GetSoundCardName;
    Alignment := taLeftJustify;
    Parent := Page.Surface;
 
    Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
    Top := AudioCardPanel.Top;
    Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
 
    ReadOnly := True;
    Color := $CCFFCC;
  end;
 
  if
    GetSoundCards = 0 then
  begin
    StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
    AudioCardNamePanel.Color := $CCCCFF;
  end;
 
//******************************************* [Конец - Звуковая карта] ***********************************************//
 
 
//******************************************* [Начало - ОЗУ] *********************************************************//
 
  RAMPanel := TMemo.Create(Page);
  with RAMPanel do
  begin
    Text := ' ОЗУ';
    Alignment := taLeftJustify;
    Parent := Page.Surface;
 
    Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
    Top := AudioCardPanel.Top + 27;
    Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
 
    ReadOnly := True;
    Color := clBtnFace;
  end;
 
  RAMTotalPanel := TMemo.Create(Page);
  with RAMTotalPanel do
  begin
    Text := ' ' + IntToStr(GetSystemPhys + 1) + ' MB';
    Alignment := taLeftJustify;
    Parent := Page.Surface;
 
    Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
    Top := RAMPanel.Top;
    Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
 
    ReadOnly := True;
    Color := $CCFFCC;
  end;
 
  if GetSystemPhys + 1 < 1024 then //Минимальное объем ОЗУ 1 Гб или 1024 Мб
  begin
    StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
    RAMTotalPanel.Color := $CCCCFF;
  end;
 
//******************************************* [Конец - ОЗУ] **********************************************************//
 
 
//******************************************* [Начало - Файл подкачки] ***********************************************//
 
  PageFilePanel := TMemo.Create(Page);
  with PageFilePanel do
  begin
    Text := ' Файл подкачки';
    Alignment := taLeftJustify;
    Parent := Page.Surface;
 
    Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
    Top := RAMPanel.Top + 27;
    Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
 
    ReadOnly := True;
    Color := clBtnFace;
  end;
 
  PageFileTotalPanel := TMemo.Create(Page);
  with PageFileTotalPanel do
  begin
    Text := ' ' + IntToStr(GetSystemPage) + ' MB';
    Alignment := taLeftJustify;
    Parent := Page.Surface;
 
    Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
    Top := PageFilePanel.Top;
    Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
    Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
 
    ReadOnly := True;
    Color := $CCFFCC;
  end;
 
  if GetSystemPage < 1024 then //Минимальное объем файла [в мегабайтах] подкачки 1 Гб или 1024 Мб
  begin
    StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
    PageFileTotalPanel.Color := $CCCCFF;
  end;
 
  Result := Page.ID;
end;
 
//******************************************* [Конец - Файл подкачки] ************************************************//
 
procedure ListBoxOnClick(Sender: TObject);
var
  NewLetter, OldString: string;
  i: Integer;
begin
  for i := 0 to ListBox.Items.Count - 1 do
  begin
    if ListBox.Selected[i] then
    begin
      NewLetter := Copy(ListBox.Items[i], 0, 1);
      OldString := Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text));
      WizardForm.DirEdit.Text := NewLetter + OldString;
    end;
  end;
end;
 
procedure InitializeWizard();
var
  Page: TWizardPage;
  Text: TNewStaticText;
  Memo: TMemo;
  Path: string;
  FreeMB, TotalMB: Cardinal;
  drives: DWORD;
  i: integer;
begin
  CheckSystemPage(wpLicense);
 
  Text := TNewStaticText.Create(WizardForm);
  Text.Top := 102;
  Text.Width := 332;
  Text.Height := 14;
  Text.Caption := 'Список жестких дисков и свободного места';
  Text.Parent := WizardForm.SelectDirPage;
 
  ListBox := TListBox.Create(WizardForm);
  ListBox.Top := 120;
  ListBox.Width := 332;
  ListBox.Height := ScaleY(90);
  ListBox.Parent := WizardForm.SelectDirPage;
  ListBox.OnClick := @ListBoxOnClick;
  ListBox.Font.Style := [fsBold];
  ListBox.Font.Name := 'Courier New';
  ListBox.Font.Size := 10;
  ListBox.Color := clBtnFace;
 
  drives := GetLogicalDrives();
  for i := 0 to 31 do
  begin
    if (drives and (1 shl i)) > 0 then
    begin
      Path := chr(ord('A') + i) + ':\';
      if GetDriveType(Path) = DRIVE_FIXED then
      begin
        GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
        ListBox.Items.Add(Path + '  '+ IntToStr(round(FreeMB/TotalMB*100)) + '%  ' + IntToStr(FreeMB) + ' MB');
 
      end;
    end;
  end;
end;
 
function NextButtonClick(CurPageID: Integer): Boolean;
var
  Path: string;
  FreeMB, TotalMB: Cardinal;
begin
  Result := True;
  if CurPageID = wpSelectDir then
  begin
    Path := ExtractFileDrive(WizardForm.DirEdit.Text);
    GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
    if FreeMB < NeedSize then
    begin
      MsgBox('Недостаточно места на диске!', mbInformation, MB_OK)
        Result := False;
    end;
  end;
end;
 

Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 03:35 19-04-2007
Chanka

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sero,
Большое спасибо за код с удалением сейв файлов.

Всего записей: 208 | Зарегистр. 24-08-2006 | Отправлено: 13:26 19-04-2007
PavelSES



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
сразу пардон за оффтоп...
но проблема вот вчем - при запускании setup.exe появляется на пару секунд окно консоли и исчезает на совсем - после чего процесс исчезает, пробовал запустить с ключем /log, вот что он выдал:
 
2007-04-20 00:03:28   Log opened.
2007-04-20 00:03:28   Setup version: Inno Setup version 5.1.8
2007-04-20 00:03:28   Original Setup EXE: P:\SCDA_DVD1\setup.exe
2007-04-20 00:03:28   Setup command line: /SL4 $100618 "P:\SCDA_DVD1\setup.exe" 52224 0 /LOG
2007-04-20 00:03:28   Windows version: 5.01.2600 SP2  (NT platform: Yes)
2007-04-20 00:03:28   64-bit Windows: No
2007-04-20 00:03:28   Processor architecture: x86
2007-04-20 00:03:28   User privileges: Administrative
2007-04-20 00:03:29   64-bit install mode: No
2007-04-20 00:03:29   Created temporary directory: C:\WINDOWS\Temp\is-RIQG4.tmp
2007-04-20 00:03:29   InitializeSetup returned False; aborting.
2007-04-20 00:03:29   Got EAbort exception.
2007-04-20 00:03:29   Deinitializing Setup.
2007-04-20 00:03:29   Log closed.
 
подскажите плиз чтоза ошибка и почему неустанавливается данное приложение (если это конечно возможно)
заранее спс

Всего записей: 223 | Зарегистр. 18-07-2006 | Отправлено: 15:11 19-04-2007
Sero



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PavelSES
В процедуре InitializeSetup():Boolean; нужно чтобы было Result:=True;

Всего записей: 309 | Зарегистр. 29-10-2006 | Отправлено: 15:55 19-04-2007
Sampron

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GRom V
Смог только так:
 
[Files]
Source: Button.bmp; Flags: dontcopy
Source: get_hw_caps.dll; Flags: dontcopy
 
[Code]
var
  res, ProcessorName: string;
  ProcessorMHZ: Cardinal;
  VidRam: integer;
  BtnPanel: TPanel;
  BtnImage: TBitmapImage;
   
function GetVideoCardName(): PChar;
 external 'hwc_GetVideoCardName@files:get_hw_caps.dll stdcall';
function GetVidMemLocal(): Integer;
 external 'hwc_GetVidMemLocal@files:get_hw_caps.dll stdcall';
function GetSoundCardName(): PChar;
 external 'hwc_GetSoundCardName@files:get_hw_caps.dll stdcall';
function GetSystemPhys(): Integer;
 external 'hwc_GetSystemPhys@files:get_hw_caps.dll stdcall';
function GetSystemPage(): Integer;
 external 'hwc_GetSystemPage@files:get_hw_caps.dll stdcall';
 
procedure BtnOnClick(Sender :TObject);
begin
  RegQueryStringValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', 'ProcessorNameString', ProcessorName);
  RegQueryDWordValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', '~MHz', ProcessorMHZ);
  res:= 'Системные требования' + #10#13 + #10#13;
  res:= res + 'Процессор              ' + (ProcessorName) + '  ' + IntToStr(ProcessorMHZ) + 'MHz' + #10#13;
  res:= res + 'Видеоадаптер       ' + GetVideoCardName + IntToStr(round(GetVidMemLocal/1000000)-1) + ' МБ' + #10#13;
  res:= res + 'Звуковая карта     ' + GetSoundCardName + #10#13;
  res:= res + 'ОЗУ                         ' + IntToStr(GetSystemPhys()+ 1)+ ' MB' + #10#13;
  res:= res + 'Файл подкачки      ' + IntToStr(GetSystemPage)+ ' MB' + #10#13;
  MsgBox(res, mbInformation, MB_OK);
end;
 
procedure InitializeWizard();
begin
 BtnPanel:=TPanel.Create(WizardForm)
  with BtnPanel do begin
    Left:=20
    Top:=325
    Width:=132
    Height:=27
    Cursor:=crHand
    OnClick:=@BtnOnClick
    Parent:=WizardForm
  end
  BtnImage:=TBitmapImage.Create(WizardForm)
  with BtnImage do begin
    AutoSize:=True
    Enabled:=False
    ExtractTemporaryFile('Button.bmp')
    Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Button.bmp')
    Parent:=BtnPanel
  end
end;

Всего записей: 563 | Зарегистр. 06-01-2007 | Отправлено: 16:57 19-04-2007
NightW0lf



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2 All
Не подскажите как сделать что бы в скрипте отображения локальных дисков винды происходил вывод размера в GB - только если размер превышает 1024 MB, а то получается так, что например свободно 545 MB, а скрипт выдает все в GB - получается что 0 GB - а должно быть 545 MB.
 
Вот скрипт
 
Добавлено:
И еще такой вопрос:
Как можно сделать что в сообщении "Недостаточно места на диске!" этого кода

Код:
 
    if FreeMB < NeedSize then
    begin
      MsgBox('Недостаточно места на диске!', mbCriticalError, MB_OK)
        Result := False;
    end;
 

 
выводилось то кол-во места сколько надо для установки. Т.е. сообщение должно содержать значение константа NeedSize и выглядить примерно так - "Для установки приложения необходимо NeedSize [тобишь например 10 гб], а на выбранном Вами диске доступно только 545 MB [тобишь значение реального свободного места на диске]."

Всего записей: 479 | Зарегистр. 08-11-2006 | Отправлено: 23:19 19-04-2007 | Исправлено: NightW0lf, 23:24 19-04-2007
Sero



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NightW0lf

Цитата:
И еще такой вопрос:  
Как можно сделать что в сообщении "Недостаточно места на диске!" этого кода  
 
Код:  
    if FreeMB < NeedSize then  
    begin  
      MsgBox('Недостаточно места на диске!', mbCriticalError, MB_OK)  
        Result := False;  
    end;  
 
 
 
выводилось то кол-во места сколько надо для установки. Т.е. сообщение должно содержать значение константа NeedSize и выглядить примерно так - "Для установки приложения необходимо NeedSize [тобишь например 10 гб], а на выбранном Вами диске доступно только 545 MB [тобишь значение реального свободного места на диске]."

 

Код:
 
function NextButtonClick(CurPageID: Integer): Boolean;
var
  Path: String;
  FreeMB, TotalMB: Cardinal;
begin
  Result:= True;
  if CurPageID = wpSelectDir then
    begin
      Path:= ExtractFileDrive(WizardForm.DirEdit.Text);
      GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
       if FreeMB < NeedSize then
    begin
      MsgBox('Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' MB,'#13+
      'а на выбранном Вами диске доступно только '+ IntToStr(FreeMB)+' MB', mbCriticalError, MB_OK)
        Result := False;
    end;
    end;
end;


Всего записей: 309 | Зарегистр. 29-10-2006 | Отправлено: 01:15 20-04-2007
rollin2007

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может поможете…
 
Есть задача:
1. Имеется 4 версии exe файла программы и к каждому свои значения в реестре (установить на компьютер только один).
2. Нужно при установке выбрать один из них и соответственно автоматически, что бы прописывалось в реестре именно к этому файлу значения и плюс один файл в системную папку.
 
Как это реализовать…?

Всего записей: 2 | Зарегистр. 08-01-2007 | Отправлено: 11:40 20-04-2007
NightW0lf



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sero
Спасибо!
 
Осталось это решить:
Не подскажите как сделать что бы в скрипте отображения локальных дисков винды происходил вывод размера в GB - только если размер превышает 1024 MB, а то получается так, что например свободно 545 MB, а скрипт выдает все в GB - получается что 0 GB - а должно быть 545 MB.
 
Вот скрипт

Всего записей: 479 | Зарегистр. 08-11-2006 | Отправлено: 12:18 20-04-2007
Sampron

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
rollin2007
 
[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
 
[Types]
Name: custom; Description: Custom; Flags: iscustom
 
[Components]
Name: Component1; Description: Component1; Flags: exclusive
Name: Component2; Description: Component2; Flags: exclusive
Name: Component3; Description: Component3; Flags: exclusive
Name: Component4; Description: Component4; Flags: exclusive
 
[Files]
Source: 1.exe; DestDir: {app}; Components: Component1
Source: 2.exe; DestDir: {app}; Components: Component2
Source: 3.exe; DestDir: {app}; Components: Component3
Source: 4.exe; DestDir: {app}; Components: Component4
Source: system.exe; DestDir: {sys}
 
[Registry]
Root: HKLM; Subkey: SOFTWARE\My Program; ValueType: String; ValueName: 1; ValueData: {app}\1.exe; Flags: uninsdeletekey; Components: Component1
Root: HKLM; Subkey: SOFTWARE\My Program; ValueType: String; ValueName: 2; ValueData: {app}\2.exe; Flags: uninsdeletekey; Components: Component2
Root: HKLM; Subkey: SOFTWARE\My Program; ValueType: String; ValueName: 3; ValueData: {app}\3.exe; Flags: uninsdeletekey; Components: Component3
Root: HKLM; Subkey: SOFTWARE\My Program; ValueType: String; ValueName: 4; ValueData: {app}\4.exe; Flags: uninsdeletekey; Components: Component4
 
Добавлено:
Люди подскажите в WizardForm-е есть такая страница wpPreparing что она из себя представляет или дайте скриншот.

Всего записей: 563 | Зарегистр. 06-01-2007 | Отправлено: 12:25 20-04-2007
rollin2007

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
>Sampron
 
все понял.
маленький вопрос...
а если system.exe тоже 4 варианта, и какой устанавливать выфбирается в зависимости от устанавливаемого 1...4.ехе?

Всего записей: 2 | Зарегистр. 08-01-2007 | Отправлено: 15:56 20-04-2007
Sampron

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
rollin2007
Нет это можно по-разному в секции [Files] ставь флаг Components: Component* на нужный файл.

Всего записей: 563 | Зарегистр. 06-01-2007 | Отправлено: 16:18 20-04-2007
Chanka

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sero,
Загляни пожалуйста в личные сообщения

Всего записей: 208 | Зарегистр. 24-08-2006 | Отправлено: 17:59 20-04-2007
GloThin



Тобольский шашлычник
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
NightW0lf
Доработал(вернее почти полностью переписал) тут давеча скрипт Sampron по определению версии ОС пользователя(для работы в Windows 9х и запрет на установку,если ОС не удовлетворяет требованиям).
Скрипт можно посмотреть тута

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

Всего записей: 706 | Зарегистр. 28-04-2004 | Отправлено: 08:05 21-04-2007 | Исправлено: GloThin, 08:07 21-04-2007
Sampron

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ нужна помощь мне нужно заместь
WizardForm.DirEdit (TEdit)
сделать
WizardForm.DirEdit (TNewStaticText)
и так чтобы при нажатии Обзор и выбора нужного каталога путь прописывался в этот текст.
 
P.S. Если это изменить в файле Setup.E32 то всё прекрасно работает но возможно ли это сделать через код?

Всего записей: 563 | Зарегистр. 06-01-2007 | Отправлено: 15:40 21-04-2007
GloThin



Тобольский шашлычник
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
NightW0lf

Цитата:
Осталось это решить:  
Не подскажите как сделать что бы в скрипте отображения локальных дисков винды происходил вывод размера в GB - только если размер превышает 1024 MB, а то получается так, что например свободно 545 MB, а скрипт выдает все в GB - получается что 0 GB - а должно быть 545 MB.  

Делается таким образом:

Код:
 
procedure InitializeWizard();
var
  Page: TWizardPage;
  Text: TNewStaticText;
  Memo: TMemo;
  Path: string;
  FreeMB, TotalMB: Cardinal;
  drives: DWORD;
  i: integer;
begin
  Text := TNewStaticText.Create(WizardForm);
  Text.Top := 102;
  Text.Width := 332;
  Text.Height := 14;
  Text.Caption := '&#209;&#239;&#232;&#241;&#238;&#234; &#230;&#229;&#241;&#242;&#234;&#232;&#245; &#228;&#232;&#241;&#234;&#238;&#226; &#232; &#241;&#226;&#238;&#225;&#238;&#228;&#237;&#238;&#227;&#238; &#236;&#229;&#241;&#242;&#224;';
  Text.Parent := WizardForm.SelectDirPage;
 
  ListBox := TListBox.Create(WizardForm);
  ListBox.Top := 120;
  ListBox.Width := 332;
  ListBox.Height := ScaleY(90);
  ListBox.Parent := WizardForm.SelectDirPage;
  ListBox.OnClick := @ListBoxOnClick;
  ListBox.Font.Name := 'Courier New';
  ListBox.Font.Size := 10;
  ListBox.Font.Style := [fsBold];
  ListBox.Color := clBtnFace;
 
  drives := GetLogicalDrives();
  for i := 0 to 31 do
  begin
    if (drives and (1 shl i)) > 0 then
    begin
      Path := chr(ord('A') + i) + ':\';
      if GetDriveType(Path) = DRIVE_FIXED then
      begin
        GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
        if FreeMB>1024 then ListBox.Items.Add(Path + '  ' + IntToStr(round(FreeMB / TotalMB * 100)) + '%  ' + floatToStr(round(FreeMB/1024*100)/100) + ' GB')
        else ListBox.Items.Add(Path + '  ' + IntToStr(round(FreeMB / TotalMB * 100)) + '%  ' + IntToStr(FreeMB) + ' MB');
      end;
    end;
  end;
end;
 

 
 
 
Добавлено:
А для вывода такой же информации в MessageBoxe меняем функцию NextButtonClick на следующую:

Код:
 
function NextButtonClick(CurPageID: Integer): Boolean;
var
  Path,s: String;
  FreeMB, TotalMB: Cardinal;
begin
  Result:= True;
  if CurPageID = wpSelectDir then
    begin
      Path:= ExtractFileDrive(WizardForm.DirEdit.Text);
      GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
       if FreeMB < (NeedSize*1024) then
    begin
      if FreeMB>1024 then
      begin
       s:='Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' GB,'#13+'а на выбранном Вами диске доступно только '+ floatToStr(round(FreeMB/1024*100)/100) + ' GB!'
      end
        else s:='Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' GB,'#13+'а на выбранном Вами диске доступно только '+ + IntToStr(FreeMB)+' MB';
      MsgBox(s, mbCriticalError, MB_OK)
        Result := False;
    end;
    end;
end;
 


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

Всего записей: 706 | Зарегистр. 28-04-2004 | Отправлено: 16:32 21-04-2007
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108

Компьютерный форум Ru.Board » Компьютеры » Программы » Закладки » Inno Setup (создание инсталяционных пакетов)
Widok (23-04-2007 18:02): лимит страниц. продолжаем здесь


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru