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

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

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

Widok (10-08-2009 22:13): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Это мощное бесплатное средство для создания установочных пакетов (дистрибутивов) программ. Поддерживается шифрование, установка пароля, различные задачи по завершении установки.
По сравнению с NSIS (основной конкурент на бесплатной основе) проще в настройке, имеет более понятную структуру скрипта, но генерит на 200-300 кб больший инсталятор. На данный момент он конкурирует и даже превосходит многие коммерческие установщики по функциональности и стабильности.
 
Последний бета релиз: 5.3.3 [05.08.2009]
Последний стабильный релиз: 5.2.4 [01.04.2009]
Что нового? | Что нового в версии 5.3-beta? | Все сборки
 
Inno Setup Compiler 5.2.3 090506 - расширенная версия от ResTools (зеркало)
Добавляет списку компонентов возможность сворачивать дочерние элементы. Содержит более удобный редактор, кроме того, компилятор имеет множество других возможностей и новых функций. На сайте автора также есть дополнительные библиотеки.
 
Русификатор версии 5.3.2 от vadimsva
 
Русская справка к версии 5.0.x, автор перевода BagIra (зеркало) | cкачать в .chm формате
 
Inno Setup Scripting 5.1 - Руководство по расширенным возможностям Inno Setup от Kindly
версия 5 скачать (зеркало) | версия 4 скачать (зеркало) | версия 3 скачать (зеркало)
 
Inno Setup Extensions Knowledge Base (содержит ответы на многие вопросы) | старая chm-версия
 
 

Дополнительные библиотеки и примеры для Inno Setup - Corona Skin, InnoTools Downloader, распаковка архивов 7-zip и FreeArc и т.д.
 
Дополнительные утилиты для Inno Setup - сюда входят различные распаковщики, надстройки над Inno Setup, различные генераторы скриптов, утилита объединения скриптов и т.д.
 
Пережатиe/Pекомпрессия/Oптимизация файлов для лучшего сжатия - обсуждение того, какими утилитами/способами лучше сжимать, чтобы получить как можно меньший размер инсталятора.
 

Примечание для всех участников

 
Перед тем, как задать вопрос: загрузите "версию для печати" (ссылка справа вверху, над номерами страниц) и попробуйте поискать средствами браузера (ctrl+F). Большинство типовых задач уже решались, причем неоднократно!
 
ВНИМАНИЕ!

Текст всех программ обязательно заключайте в теги [code][/code].
Большие тексты (более 10 строк) обязательно прячутся в [more]ВАШ ТЕКСТ и/или Ваш КОД[/more]


мусор вынесен в пост

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:45 16-05-2009 | Исправлено: SotM, 12:44 09-08-2009
Bulat_Ziganshin

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

Цитата:
у меня когда нажимаю правой кнопкой мыши нет команды Join scripts

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

Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 02:17 01-07-2009
Shegorat



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Насчет моего вопроса на 76 странице, так вот если ставить парент для PageNameLabel и PageDescriptionLabel  - WizardForm, то надписи совсем не отображаются, а также если ставить  
Left:= WizardForm.PageNameLabel.Left;
Top:= WizardForm.PageNameLabel.Top;
и так далее надпись не возвращается на положенное место.
А насчет второго вопроса так и не ответили.
P.S Извините за такие отрывы между сообщениями, меня долго не бывает дома.

Всего записей: 695 | Зарегистр. 09-06-2009 | Отправлено: 04:26 01-07-2009 | Исправлено: Shegorat, 04:30 01-07-2009
SvBIond



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

Цитата:
Подробнее...
что в этом коде не верно? при компиляции выдает ошибку о дубликате Procedure InitializeWizard, при удалении дубликата выдаются другие ошибки, которые указывают на end; и т.д.


Цитата:
SvBlond
Ну и правильно выдает, нельзя использовать две функции в одинаковым названием
Вот думаю правильней будет.
 


Цитата:
noiseless
Unknown identifier 'BackgroundForm'


Цитата:
SvBlond
Поправил


Цитата:
noiseless
Unknown identifier 'BackgroundOnActivate' )


Цитата:
SvBlond

Цитата:
Unknown identifier 'BackgroundOnActivate' )

Вот тут не знаю. Может, нужно использовать расширенный Inno. Надо старших товарищей поспрашать

в чем же дело?
 
нужно объединить 3 этих скрипта:
Подробнее...
Подробнее...
Подробнее...

Всего записей: 10 | Зарегистр. 01-07-2009 | Отправлено: 06:30 01-07-2009 | Исправлено: SvBIond, 06:36 01-07-2009
DeKaNszn

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

Всего записей: 596 | Зарегистр. 03-03-2009 | Отправлено: 07:57 01-07-2009
Krinkels



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Bulat_Ziganshin
Я думаю стоит цеплять джойнер к Explorer, будет намного удобней чем возиться с командной строкой

Всего записей: 764 | Зарегистр. 06-05-2009 | Отправлено: 08:21 01-07-2009
SvBIond



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DeKaNszn
Благодарствую!

Всего записей: 10 | Зарегистр. 01-07-2009 | Отправлено: 08:24 01-07-2009
SotM



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
нда уж, новое поколение абсолютно не знакомо с командной строкой.  
Я думаю, что даже если Joiner и будет "внедрён" в Explorer, то обязательно найдутся люди, которым и это не удобно будет...

Всего записей: 965 | Зарегистр. 28-11-2006 | Отправлено: 08:43 01-07-2009
Krinkels



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SotM
Думаешь стоит дописать графический интерфейс?

Всего записей: 764 | Зарегистр. 06-05-2009 | Отправлено: 09:17 01-07-2009
Pavel0145



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите совместить два скрипта:
 
первый:
type
 PDisplay_Device = record
  cb: DWord;
  DeviceName: array [0..31] of char;
  DeviceString: array [0..127] of char;
  StateFlags: DWord;
  DeviceID, DeviceKey: array [0..127] of char;
 end;
 
 TMixerCaps = record
  vPid, vDriverVersion: DWord;
  sName: array [0..31] of char;
  Support, cDestinations: DWord;
 end;
 
 #if Pos("4.", GetFileVersion(AddBackslash(GetEnv("windir")) + "Explorer.exe")) == 1
    {Win9x}
   TMemoryStatusEx = record
    dwLength, dwMemoryLoad: DWord;
    LoTotalPhys, LoAvailPhys, LoTotalPageFile, LoAvailPageFile,
    LoTotalVirtual, LoAvailVirtual, LoAvailExtendedVirtual, HiTotalPhys,
    HiAvailPhys, HiTotalPageFile, HiAvailPageFile, HiTotalVirtual, HiAvailVirtual,
    HiAvailExtendedVirtual: Integer;
   end;
  function GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx): Boolean;
   external 'GlobalMemoryStatus@kernel32.dll stdcall';
#else
    {WinNT}
   TMemoryStatusEx = record
    dwLength, dwMemoryLoad: DWord;
    LoTotalPhys, HiTotalPhys, LoAvailPhys, HiAvailPhys,
    LoTotalPageFile, HiTotalPageFile, LoAvailPageFile, HiAvailPageFile,
    LoTotalVirtual, HiTotalVirtual, LoAvailVirtual, HiAvailVirtual, LoAvailExtendedVirtual,
    HiAvailExtendedVirtual: Integer;
   end;
  function GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx): Boolean;
   external 'GlobalMemoryStatusEx@kernel32.dll stdcall';
#endif
 
const
  DISPLAY_DEVICE_PRIMARY_DEVICE = 4;
  oneMB = 1024*1024;
  NeedMHz = 2000;
  NeedVideoRAM = 256;
  NeedSoundCard = '';
  NeedMB = 512;
  NeedPageFile = 1024;
 
var
  InfoPage: TWizardPage;
  TopText, BottomText: TNewStaticText;
  ChangeText: Boolean;
  SystemPanel, ProcessorPanel, VideoPanel,
  AudioPanel, RAMPanel, PageFilePanel: TMemo;
  SystemVersionPanel, ProcessorMHzPanel, VideoRAMPanel,
  AudioNamePanel, RAMTotalPanel, PageFileTotalPanel: TMemo;
  lpCaps: TMixerCaps;
  Version: TWindowsVersion;
  MemoryEx: TMemoryStatusEx;
  n, errCode: Integer;
  Keys: TArrayOfString;
  DeviceValue: Cardinal;
  lpDisplayDevice: PDisplay_Device;
 
function GetSystemMetrics(nIndex: Integer): Integer;
 external 'GetSystemMetrics@user32.dll stdcall';
 
function GetDeviceCaps(hDC, nIndex: Integer): Integer;
 external 'GetDeviceCaps@GDI32 stdcall';
 
function CreateDC(lpDriverName, lpDeviceName, lpOutput: String; lpInitData: Integer): Integer;
 external 'CreateDCA@GDI32 stdcall';
 
function EnumDisplayDevices(lpDevice, iDevNum: DWord; var lpDisplayDevice: PDisplay_Device; dwFlags: DWord): Boolean;
 external 'EnumDisplayDevicesA@user32.dll stdcall';
 
function mixerGetDevCaps(uDeviceID: LongInt; var lpCaps: TMixerCaps; uSize: LongInt): LongInt;
 external 'mixerGetDevCapsA@winmm.dll stdcall';
 
function mixerGetNumDevs: Integer;
 external 'mixerGetNumDevs@winmm.dll stdcall';
 
function ToMultiple(Bytes, Multiple: Integer): Integer;
begin
  if Abs(Bytes/Multiple) > Bytes/Multiple then
     Result := (Bytes/Multiple + 1)*Multiple
  else
     Result := Bytes
end;
 
function ByteOrTB(Bytes: Extended; noMB: Boolean): String;
begin
 if not noMB then
    Result := FloatToStr(Int(Bytes)) + ' Мб'
 else
        if Bytes < 1024 then
       Result := FloatToStr(Int(Bytes)) + ' Бт'
    else
             if Bytes/1024 < 1024 then
          Result := FloatToStr(round((Bytes/1024)*10)/10) + ' Кб'
       else
                    if Bytes/oneMB < 1024 then
             Result := FloatToStr(round(Bytes/oneMB*100)/100) + ' Мб'
          else
             if Bytes/oneMB/1000 < 1024 then
                Result := FloatToStr(round(Bytes/oneMB/1024*1000)/1000) + ' Гб'
             else
                              Result := FloatToStr(round(Bytes/oneMB/oneMB*1000)/1000) + ' Тб'
 StringChange(Result, ',', '.')
end;
 
function DelSp(String: String): String;
begin
 while (Pos('  ', String) > 0) do Delete(String, Pos('  ', String), 1)
 Result := Trim(String)
end;
 
function Size64(Hi, Lo: Integer): Extended;
begin
 Result := Lo
 if Lo < 0 then
    Result := Result + $7FFFFFFF + $7FFFFFFF + 2
 for Hi := Hi-1 downto 0 do Result := Result + $7FFFFFFF + $7FFFFFFF + 2
end;
 
function CheckCPU(NeedMHz: Integer): Boolean;
var
  String: String;
begin
    String := 'Hardware\Description\System\CentralProcessor'; RegGetSubkeyNames(HKLM, String, Keys)     // Количество ядер
    for n := 0 to GetArrayLength(Keys)-1 do
      RegQueryStringValue(HKLM, String + '\' + Keys[n], 'ProcessorNameString', Keys[n])
    if not RegQueryDWordValue(HKLM, String + '\0', '~MHz', DeviceValue) or (DeviceValue < NeedMHz) then
         Exit
  else
     Result := True
end;
 
function CheckMemorySize(NeedRAM: Integer): Boolean;
begin
    MemoryEx.dwLength := SizeOf(MemoryEx)
    if not GlobalMemoryStatusEx(MemoryEx) then
         MsgBox('Ошибка функции:' + #13 + 'GlobalMemoryStatusEx', mbError, mb_Ok)
  else
       if (ToMultiple(trunc(Size64(MemoryEx.HiTotalPhys, MemoryEx.LoTotalPhys)/oneMB), 16) < NeedRAM) then
         Exit
     else
         Result := True
end;
 
procedure CreateCheckForm();
begin
 
  TopText := TNewStaticText.Create(InfoPage)
  with TopText do
  begin
    Parent := InfoPage.Surface
    Left := 0
    AutoSize := True
  end
 
  BottomText := TNewStaticText.Create(InfoPage)
  with BottomText do
  begin
    Parent := InfoPage.Surface
    Caption := 'Когда Вы будете готовы продолжить установку, нажмите «Далее».'
    Font.Color := clBlack
    Left := 0
    Top := 200
    AutoSize := True
  end
 
  SystemPanel := TMemo.Create(InfoPage)
  with SystemPanel do
  begin
    Text := 'Система'
    Alignment := taCenter
    Parent := InfoPage.Surface
    Left := ScaleX(0)
    Top := ScaleY(33)
    Width := ScaleX(100)
    Height := ScaleY(22)
    ReadOnly := True
    Color := $EEEEEE
  end
 
  SystemVersionPanel := TMemo.Create(InfoPage)
  with SystemVersionPanel do
  begin
    Alignment := taLeftJustify
    Parent := InfoPage.Surface
    Left := ScaleX(104)
    Top := SystemPanel.Top
    Width := ScaleX(310)
    Height := ScaleY(22)
    ReadOnly := True
   end
 
  ProcessorPanel := TMemo.Create(InfoPage)
  with ProcessorPanel do
  begin
    Text := 'Процессор'
    Alignment := taCenter
    Parent := InfoPage.Surface
    Left := ScaleX(0)
    Top := SystemPanel.Top + 27
    Width := ScaleX(100)
    Height := ScaleY(22)
    ReadOnly := True
    Color := $EEEEEE
  end
 
  ProcessorMHzPanel := TMemo.Create(InfoPage)
  with ProcessorMHzPanel do
  begin
    Alignment := taLeftJustify
    Parent := InfoPage.Surface
    Left := ScaleX(104)
    Top := ProcessorPanel.Top
    Width := ScaleX(310)
    Height := ScaleY(22)
    ReadOnly := True
  end
 
  VideoPanel := TMemo.Create(InfoPage)
  with VideoPanel do
  begin
    Text := 'Видеоадаптер'
    Alignment := taCenter
    Parent := InfoPage.Surface
    Left := ScaleX(0)
    Top := ProcessorPanel.Top + 27
    Width := ScaleX(100)
    Height := ScaleY(22)
    ReadOnly := True
    Color := $EEEEEE
  end
 
  VideoRAMPanel := TMemo.Create(InfoPage)
  with VideoRAMPanel do
  begin
    Alignment := taLeftJustify
    Parent := InfoPage.Surface
    Left := ScaleX(104)
    Top := VideoPanel.Top
    Width := ScaleX(310)
    Height := ScaleY(22)
    ReadOnly := True
  end
 
  AudioPanel := TMemo.Create(InfoPage)
  with AudioPanel do
  begin
    Text := 'Звуковая карта'
    Alignment := taCenter
    Parent := InfoPage.Surface
    Left := ScaleX(0)
    Top := VideoPanel.Top + 27
    Width := ScaleX(100)
    Height := ScaleY(22)
    ReadOnly := True
    Color := $EEEEEE
  end
 
  AudioNamePanel := TMemo.Create(InfoPage)
  with AudioNamePanel do
  begin
    Alignment := taLeftJustify
    Parent := InfoPage.Surface
    Left := ScaleX(104)
    Top := AudioPanel.Top
    Width := ScaleX(310)
    Height := ScaleY(22)
    ReadOnly := True
  end
 
  RAMPanel := TMemo.Create(InfoPage)
  with RAMPanel do
  begin
    Text := 'Объём памяти'
    Alignment := taCenter
    Parent := InfoPage.Surface
    Left := ScaleX(0)
    Top := AudioPanel.Top + 27
    Width := ScaleX(100)
    Height := ScaleY(22)
    ReadOnly := True
    Color := $EEEEEE
  end
 
  RAMTotalPanel := TMemo.Create(InfoPage)
  with RAMTotalPanel do
  begin
    Alignment := taLeftJustify
    Parent := InfoPage.Surface
    Left := ScaleX(104)
    Top := RAMPanel.Top
    Width := ScaleX(310)
    Height := ScaleY(22)
    ReadOnly := True
  end
 
  PageFilePanel := TMemo.Create(InfoPage)
  with PageFilePanel do
  begin
    Text := 'Файл подкачки'
    Alignment := taCenter
    Parent := InfoPage.Surface
    Left := ScaleX(0)
    Top := RAMPanel.Top + 27
    Width := ScaleX(100)
    Height := ScaleY(22)
    ReadOnly := True
    Color := $EEEEEE
  end;
 
  PageFileTotalPanel := TMemo.Create(InfoPage)
  with PageFileTotalPanel do
  begin
    Alignment := taLeftJustify
    Parent := InfoPage.Surface
    Left := ScaleX(104)
    Top := PageFilePanel.Top
    Width := ScaleX(310)
    Height := ScaleY(22)
    ReadOnly := True
  end
 
end;
 
procedure UpdateInfo();
var
  DeviceName, DeviceKey: String;
begin
  ChangeText := False
 
  GetWindowsVersionEx(Version)
 
  SystemVersionPanel.Color := $CCFFCC
 
  DeviceKey := 'Software\Microsoft\Windows NT\CurrentVersion'
  if not UsingWinNT then StringChange(DeviceKey, 'Windows NT', 'Windows')
    RegQueryStringValue(HKLM, DeviceKey, 'ProductName', DeviceName)
  if RegQueryStringValue(HKLM, DeviceKey, 'CSDVersion', DeviceKey) then
     DeviceName := DeviceName + ' ' + DeviceKey
    StringChange(DeviceName, 'Microsoft ', '')
  SystemVersionPanel.Text := ' ' + DeviceName + ' сборка ' + IntToStr(Version.Major) + '.' + IntToStr(Version.Minor) +
                             '.' + IntToStr(Version.Build)
 
  if (Pos('2000 Service Pack 4', SystemVersionPanel.Text) = 0) and  // Windows 2000 SP4
     (Pos('XP Service Pack 2', SystemVersionPanel.Text) = 0) and  // Windows XP SP2
     (Pos('Vista', SystemVersionPanel.Text) = 0) then  // Windows Vista (c любым SP или без него)
     begin
      SystemVersionPanel.Color := $CCCCFF
      ChangeText := True
     end
 
  // Процессор:
  ProcessorMHzPanel.Color := $CCFFCC
 
  if not CheckCPU(NeedMHz) then
     begin
       ProcessorMHzPanel.Color := $CCCCFF
       ChangeText := True
     end
 
  ProcessorMHzPanel.Text := ' ' + DelSp(Keys[0]) + ' @' + IntToStr(DeviceValue) + ' MHz'
  if GetArrayLength(Keys) > 1 then
     ProcessorPanel.Text := 'Процессоры' // + ' (' + IntToStr(GetArrayLength(Keys)) + ')'
 
  // Видеокарта:
  VideoRAMPanel.Color := $CCFFCC
 
  lpDisplayDevice.cb := SizeOf(lpDisplayDevice)
  DeviceKey := ''
    n := 0
  while not (EnumDisplayDevices(0, n, lpDisplayDevice, 0) and
            (lpDisplayDevice.StateFlags and DISPLAY_DEVICE_PRIMARY_DEVICE > 0)) and (n < 127) do n := n + 1
    for n := 0 to 127 do DeviceKey := DeviceKey + lpDisplayDevice.DeviceKey[n]
  Delete(DeviceKey, Pos(Chr(0), DeviceKey), 127)  // Ключ драйвера получаем из API
    StringChange(DeviceKey, '\Registry\Machine\', '')
  errCode := 1
  DeviceValue := 0
  if RegQueryBinaryValue(HKLM, DeviceKey, 'HardwareInformation.MemorySize', DeviceName) then
         for n := 1 to Length(DeviceName) do
       begin
         DeviceValue := DeviceValue + Ord(DeviceName[n])*errCode
         errCode := errCode*$100
       end
  else
     if RegQueryDWordValue(HKLM, DeviceKey, 'HardwareInformation.MemorySize', DeviceValue) then
     else
        RegQueryDWordValue(HKLM, DeviceKey + '\Info', 'VideoMemory', DeviceValue)
    DeviceName := ''
  for n := 0 to 127 do DeviceName := DeviceName + lpDisplayDevice.DeviceString[n]
  Delete(DeviceName, Pos(Chr(0), DeviceName), 127)
 
  if DeviceName <> '' then
    if DeviceValue > 0 then
      VideoRAMPanel.Text := ' ' + DelSp(DeviceName) + ', '+ ByteOrTB(DeviceValue/oneMB, False)
    else
      VideoRAMPanel.Text := ' ' + DelSp(DeviceName) + ' (Standard), '+ ByteOrTB(DeviceValue/oneMB, False)
  else
     begin
      VideoRAMPanel.Text := ' Драйвер устройства не обнаружен'
      VideoRAMPanel.Color := $CCCCFF
      ChangeText := True
     end
  if (DeviceValue/oneMB < NeedVideoRAM) then
     begin
       VideoRAMPanel.Color := $CCCCFF
       ChangeText := True
     end
  VideoRAMPanel.Text := VideoRAMPanel.Text + ', ' + IntToStr(GetSystemMetrics(0)) + 'x' +
                        IntToStr(GetSystemMetrics(1)) + ' (' + IntToStr(GetDeviceCaps(CreateDC('DISPLAY','','',0),14) *
                        GetDeviceCaps(CreateDC('DISPLAY','','',0),12)) + ' bit)'
 
  // Звуковая карта:
  AudioNamePanel.Color := $CCFFCC
 
  // for errCode := 0 to 1 do  // Вывод основного звукового устройства
  for errCode := 0 to mixerGetNumDevs do
    begin
          mixerGetDevCaps(errCode-1, lpCaps, SizeOf(lpCaps))
      DeviceName := ' '
          for n := 0 to 31 do DeviceName := DeviceName + lpCaps.sName[n]
      Delete(DeviceName, Pos(Chr(0), DeviceName), 31)
      Delete(DeviceName, Pos(' [', DeviceName), 31)
      StringChange(DeviceName, 'SB ', 'Creative ')
      Delete(DeviceName, Pos(' Audio', DeviceName), 31)
          SetArrayLength(Keys, errCode)
      if errCode > 0 then Keys[errCode-1] := DeviceName
    end
 
    if GetArrayLength(Keys) > 1 then
    begin
     AudioPanel.Text := 'Звуковые карты'
     // AudioPanel.Text := 'Звуковые карты (' + IntToStr(GetArrayLength(Keys)) +')'
     AudioNamePanel.Text := ''
     for n := 1 to GetArrayLength(Keys) do
         AudioNamePanel.Text := AudioNamePanel.Text + Keys[n-1]  // + '(' + IntToStr(n) + ')'
    end
   else
    if GetArrayLength(Keys) = 0 then
     begin
      AudioNamePanel.Text := ' Драйвер устройства не обнаружен'
      AudioNamePanel.Color := $CCCCFF
      ChangeText := True
     end
      else
       AudioNamePanel.Text := Keys[0]
  if Pos(NeedSoundCard, AudioNamePanel.Text) = 0 then
     AudioNamePanel.Text := AudioNamePanel.Text + ''
 
  // Объём памяти:
    RAMTotalPanel.Color := $CCFFCC
  if not CheckMemorySize(NeedMB) then
    begin
      RAMTotalPanel.Color := $CCCCFF
      ChangeText := True
    end
  RAMTotalPanel.Text := ' ' + ByteOrTB(ToMultiple(trunc(Size64(MemoryEx.HiTotalPhys, MemoryEx.LoTotalPhys)/oneMB), 16), False) + ' всего, ' +
                              ByteOrTB(ToMultiple(trunc(Size64(MemoryEx.HiTotalPhys, MemoryEx.LoTotalPhys)/oneMB), 16) -
                                                        Size64(MemoryEx.HiAvailPhys, MemoryEx.LoAvailPhys)/oneMB, False) + ' используется, ' +
                              ByteOrTB(Size64(MemoryEx.HiAvailPhys, MemoryEx.LoAvailPhys)/oneMB, False) + ' свободно'
 
  // Виртуальная память:
  PageFileTotalPanel.Color := $CCFFCC
  PageFileTotalPanel.Text := ' ' + ByteOrTB(Size64(MemoryEx.HiTotalPageFile, MemoryEx.LoTotalPageFile)/oneMB, False) + ' всего, ' +
                                   ByteOrTB((Size64(MemoryEx.HiTotalPageFile, MemoryEx.LoTotalPageFile) -
                                             Size64(MemoryEx.HiAvailPageFile, MemoryEx.LoAvailPageFile))/oneMB, False) + ' занято системным кэшем'
  if Size64(MemoryEx.HiTotalPageFile, MemoryEx.LoTotalPageFile)/oneMB < NeedPageFile then
    begin
      PageFileTotalPanel.Color := $CCCCFF
      ChangeText := True
    end
 
  if ChangeText = True then
    begin
      TopText.Top := 0
      TopText.Caption := 'Не все компоненты удовлетворяют минимальным требованиям игры.' #13
                         'Пожалуйста, проверьте позиции, выделенные красным цветом.'
      TopText.Font.Color := clRed
      // WizardForm.NextButton.Enabled := False
    end
  else
    begin
      TopText.Caption := 'Все компоненты соответствуют минимальным требованиям игры.'
      TopText.Font.Color := clGreen
      TopText.Top := 8
      // WizardForm.NextButton.Enabled := True
    end
end;
 
procedure InitializeWizard();
begin
  InfoPage := CreateCustomPage(wpLicense, 'Аппаратное и программное обеспечение',
                                          'Программа установки обнаружила следующие наобходимые компоненты.')
  CreateCheckForm()  // Создание объектов TMemo, в которых будет выводится информация о системе
  UpdateInfo()  // Обновление информации о системе
end;
 
procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = InfoPage.ID then UpdateInfo()  // Обновление информации о системе
end;
 
procedure CurStepChanged(CurStep: TSetupStep);
 
var
 
S: String;
 
begin
 
If CurStep=ssPostInstall then
 
begin
 
S := ExpandConstant('{commondocs}\STALKER-SHOC\')
 
StringChangeEx(S, ':\', ':\|', True);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$mod_dir = false | false | $fs_root$ | mods\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$app_data_root$=true|false|' +  S + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_data$                   = false| true|     $fs_root$|                    gamedata\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_ai$                       = true|              false|    $game_data$|                        ai\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_spawn$               = true|              false|    $game_data$|                        spawns\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_anims$                 = true|              true|     $game_data$|                        anims\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_levels$     = true|              false|    $game_data$|              levels\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_meshes$              = true|              true|     $game_data$|                        meshes\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_dm$                    = true|              true|     $game_data$|                        meshes\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_shaders$              = true|              true|     $game_data$|                        shaders\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_sounds$               = true|              true|     $game_data$|                        sounds\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_textures$             = true|              true|     $game_data$|                        textures\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_scripts$               = true|              false|    $game_data$|                        scripts\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_config$                = true|              false|    $game_data$|                        config\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$level$                            = false| false|    $game_levels$' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_saves$    = true|              false|    $app_data_root$|            savedgames\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$logs$                             = true|              false|            $app_data_root$|        logs\' + #13, true);
 
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$screenshots$      = true|              false|    $app_data_root$|            screenshots\' + #13, true);
 
end;
 
end;
 
второй:
 
#define MyAppVerName "My Program version"
#define MyAppExeName "MyProg.exe"
#define path "{app}\MyProg.exe"
 
[Setup]
AppName=My Program
AppVerName=My Program version
DefaultDirName={pf}\My Program
OutputDir=.
 
[Files]
Source: "MyProg.exe"; DestDir: "{app}";
Source: "FirewallInstallHelper.dll"; DestDir: {app};
 
[UninstallDelete]
Type: files; Name: "{app}\FirewallInstallHelper.dll"
 

Код:
 
function AddApplicationToExceptionListW(path: String; name: String): Boolean;
external 'AddApplicationToExceptionListW@files:FirewallInstallHelper.dll stdcall setuponly';
 
function RemoveApplicationFromExceptionListW(path: String): Boolean;
external 'RemoveApplicationFromExceptionListW@{app}\FirewallInstallHelper.dll stdcall uninstallonly';
 
procedure CurStepChanged(CurStep: TSetupStep);
var
path, name: String;
begin
 
if CurStep = ssPostInstall then
begin
path:=ExpandConstant('{#path}');
name:=ExpandConstant('{#MyAppVerName}');
 
AddApplicationToExceptionListW(path, name);
end;
end;
 
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
path: String;
begin
if CurUninstallStep=usUninstall then
begin
path:=ExpandConstant('{#path}');
RemoveApplicationFromExceptionListW(path)
UnloadDll(ExpandConstant('{app}\FirewallInstallHelper.dll'));
end;
end;
 

Всего записей: 60 | Зарегистр. 23-06-2009 | Отправлено: 09:26 01-07-2009
SotM



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Pavel0145
Твою $%#%@, $%#@%.
Для кого в ШАПКЕ ТЕМЫ написано, чтобы убирали листинг программ под тэги [more][/more] ?!?!?!?
Я уже и не знаю как это выделить, ЧТОБЫ ВСЕ ЭТО ДЕЛАЛИ!!!!!!!!!!!
 
Krinkels
Ага, и постараться, чтобы программа, документация, деморолики и т.д. влезли на 1 CD в 700 Mb.

Всего записей: 965 | Зарегистр. 28-11-2006 | Отправлено: 09:52 01-07-2009 | Исправлено: SotM, 09:54 01-07-2009
Krinkels



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Pavel0145
Сначало правильно отформатируй свой пост, а потом проси помощи
 
SotM

Всего записей: 764 | Зарегистр. 06-05-2009 | Отправлено: 10:22 01-07-2009
Roden37101



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
у мну вопрос
   
 
как поставить свой текст вместо component1 и component2
 
и убрать строку текущий выбор требует не менее 0.7 мбайт на диске

Всего записей: 194 | Зарегистр. 20-06-2009 | Отправлено: 11:36 01-07-2009 | Исправлено: Roden37101, 12:16 01-07-2009
SotM



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Roden37101
Кажется ты уже спрашивал данный вопрос на предыдущих страницах. Собираешься постоянно так делать шоли?!?
Ты бы хоть нормально писал, а то твой албанский проблематично читать.
 
Оооо, кстати, судя по показаниям моего "мыслечитательного устройства", тебе нужно убрать строки под номером 129 и 201. С помощью этого устройства я посмотрел твой исходный скрипт.

Всего записей: 965 | Зарегистр. 28-11-2006 | Отправлено: 11:51 01-07-2009
lol2xD

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите мне я на79стр  писал что мне нудно!

Всего записей: 183 | Зарегистр. 18-05-2009 | Отправлено: 13:06 01-07-2009
Bulat_Ziganshin

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

Цитата:
нда уж, новое поколение абсолютно не знакомо с командной строкой.  
Я думаю, что даже если Joiner и будет "внедрён" в Explorer, то обязательно найдутся люди, которым и это не удобно будет...

ну почему... у меня с самого начала был план - в след. версии надо добавить:
- обработку секций помимо Code, чтобы автоматом сливать более сложные скрипты
- поддержку меню Explorer
- инсталятор, желательно на NSIS, который регистрирует это меню плюс добавляет Help и ссылку на сайт в Start Menu
 
далее, мне не совсем понятно, неужели кроме этих двух процедур (InitializeWizard и CurPageChanged) ничего сливать не приходится?? я думал, тут толпа упрёков в её ограниченности будет..
 
ну и наконец, похоже ссылку на joiner надо вынести в основную часть заголовка темы и написать крупными буквами. или нет, для начала попробуем добавить в описание подзаголовка..

Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 13:23 01-07-2009
Pavel0145



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Извиняюсь за неправильное оформление.
 
Подробнее...
 
Подробнее...

Всего записей: 60 | Зарегистр. 23-06-2009 | Отправлено: 13:29 01-07-2009
Artur1990

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
почему никто не поможет я на 77 стр. просил помощи

Всего записей: 44 | Зарегистр. 17-06-2009 | Отправлено: 13:34 01-07-2009
Krinkels



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

Всего записей: 764 | Зарегистр. 06-05-2009 | Отправлено: 13:50 01-07-2009
SotM



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Pavel0145
Это конечно хорошо, что ты наконец-таки нормально оформлил. Но, блин, кто за тебя будет твой же НЕПРАВИЛЬНО оформленный пост исправлять?! Его ведь тоже надо исправить!!! Дяду Васю какого-нибудь позовем что ли?!

Всего записей: 965 | Зарегистр. 28-11-2006 | Отправлено: 13:51 01-07-2009
Inno Setup

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можете подсказать у меня есть запакованые файлы в архив frearc ,подскажите скрипт чтоб инно их распаковывал

Всего записей: 20 | Зарегистр. 03-06-2009 | Отправлено: 14:03 01-07-2009
   

Страницы: 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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup (создание инсталяционных пакетов)
Widok (10-08-2009 22:13): Лимит страниц. Продолжаем здесь.


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru