Имя пользователя:
Пароль:
 | Правила  

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 16-02-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]

Отправлено: 11:48, 10-03-2014

 

Аватара для diman_21Ru

Старожил


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

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


kotyarko@fb, у меня почему то не работает функция то ли не так вставил запускаю компиляцию и не запускается у меня уникод.

Отправлено: 01:05, 02-11-2014 | #1911



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

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


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


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

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


diman_21Ru,

RawDataResource работает на расширенной версии компилятора от Restools

Отправлено: 02:48, 02-11-2014 | #1912


Аватара для diman_21Ru

Старожил


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

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


TryRooM, У меня расширенная, уникод же обычно ругаться будет если не так вставишь но тут собирает и установщик не запускает

Отправлено: 10:05, 02-11-2014 | #1913


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


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

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


diman_21Ru,

Попробуй упростить через Modules, меньше путаницы в скрипте будет.

Последний раз редактировалось TryRooM, 18-03-2015 в 14:29.

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

Отправлено: 10:32, 02-11-2014 | #1914


Ветеран


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

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


Реализация WinAPI функции GlobalMemoryStatusEx http://msdn.microsoft.com/ru-ru/libr...=vs.85%29.aspx
Предоставляет информацию об использовании физической и виртуальной памяти. Просьба к знатокам: указать на возможные ошибки.
Скрипт
Код: Выделить весь код
[Code]
type
    Int64 = record
        Intlow: Integer;
        IntHigh: Integer;
    end;

    _MEMORYSTATUSEX = record
        dwLength: DWORD;
        dwMemoryLoad: DWORD;
        ullTotalPhys: Int64;
        ullAvailPhys: Int64;
        ullTotalPageFile: Int64;
        ullAvailPageFile: Int64;
        ullTotalVirtual: Int64;
        ullAvailVirtual: Int64;
        ullAvailExtendedVirtual: Int64;
    end;


function GlobalMemoryStatusEx( var lpBuffer: _MEMORYSTATUSEX ): BOOL; external 'GlobalMemoryStatusEx@kernel32.dll stdcall';
function StrFormatByteSize64( qdw: Currency; var pszBuf: Char; cchBuf: UINT ): PAnsiChar; external 'StrFormatByteSize64A@shlwapi.dll stdcall';


function BytesToSize( const Bytes: Extended ): String;
var
    pszBuf: array [0..15] of Char;
begin
    try
        Result := StrFormatByteSize64( Abs ( Bytes div 1E4 ), pszBuf[0], sizeof( pszBuf ) );
    except
    end;
end;


function Size64( const IntLow: Integer; const IntHigh: Integer ): Extended;
begin
    Result := ( ( IntHigh + Integer( IntLow < 0 ) ) * 4.294967296E9 + IntLow );
end;


procedure InitializeWizard();
var
  msEx: _MEMORYSTATUSEX;
  szMemoryLoad: String;
  szTotalPhys: String;
  szAvailPhys: String;
  szTotalPageFile: String;
  szAvailPageFile: String;
  szTotalVirtual: String;
  szAvailVirtual: String;
begin
  msEx.dwLength := SizeOf( msEx ) ;
  if not GlobalMemoryStatusEx( msEx ) then Exit;

  szMemoryLoad := Format( '%s: %d%s', ['MemoryLoad', msEx.dwMemoryLoad, '%'] );
  szTotalPhys := Format( '%s: %s', ['TotalPhys', BytesToSize( Size64( msEx.ullTotalPhys.Intlow, msEx.ullTotalPhys.IntHigh ) )] );
  szAvailPhys := Format( '%s: %s', ['AvailPhys', BytesToSize( Size64( msEx.ullAvailPhys.Intlow, msEx.ullAvailPhys.IntHigh ) )] );
  szTotalPageFile := Format( '%s: %s', ['TotalPageFile', BytesToSize( Size64( msEx.ullTotalPageFile.Intlow, msEx.ullTotalPageFile.IntHigh ) )] );
  szAvailPageFile := Format( '%s: %s', ['AvailPageFile', BytesToSize( Size64( msEx.ullAvailPageFile.Intlow, msEx.ullAvailPageFile.IntHigh ) )] );
  szTotalVirtual := Format( '%s: %s', ['TotalVirtual', BytesToSize( Size64( msEx.ullTotalVirtual.Intlow, msEx.ullTotalVirtual.IntHigh ) )] );
  szAvailVirtual := Format( '%s: %s', ['AvailVirtual', BytesToSize( Size64( msEx.ullAvailVirtual.Intlow, msEx.ullAvailVirtual.IntHigh ) )] );

  MsgBox(
          szMemoryLoad + #13#10 +
          szTotalPhys  + #13#10 +
          szAvailPhys + #13#10 +
          szTotalPageFile + #13#10 +
          szAvailPageFile + #13#10 +
          szTotalVirtual + #13#10 +
          szAvailVirtual,
          mbInformation,
          MB_OK
            );
end;

Последний раз редактировалось saurn, 09-11-2014 в 11:29.


Отправлено: 09:40, 09-11-2014 | #1915


Аватара для kotyarko@fb

Старожил


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

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


Возник вопрос по поводу WinAPI: а можно ли узнать, включено ли в системе масштабирование (установленный % не имеет значения)?

-------
http://forum.worldoftanks.ru/topic/1429925-/
Исходник моего установщика: https://bitbucket.org/Kotyarko_O/kmp


Отправлено: 20:32, 09-11-2014 | #1916


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


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

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


kotyarko@fb, сравни разрешение экрана и монитора
Код: Выделить весь код
type
TagMonitorInfo = record
 cbSize: DWord;
 Monitor, Work: TRect;
 dwFlags: DWord;
end;
var MonitorInfo: TagMonitorInfo;
function GetMonitorInfo(hMonitor: Integer; var lpMonitorInfo: TagMonitorInfo): Boolean; external 'GetMonitorInfoA@user32';

procedure InitializeWizard();
begin
  MonitorInfo.cbSize:= SizeOf(MonitorInfo);
  if GetMonitorInfo(1, MonitorInfo)
   then MsgBox(IntToStr(MonitorInfo.Monitor.Right)+ 'x' +IntToStr(MonitorInfo.Monitor.Bottom), mbInformation, MB_OK);
end;
Определение монитора.
Код: Выделить весь код
function GetDC(HWND: DWord): DWord; external 'GetDC@user32.dll stdcall';
function GetDeviceCaps(DC: DWord; Index: Integer): Integer; external 'GetDeviceCaps@gdi32.dll stdcall';
function ReleaseDC(HWND: DWord;DC: DWord): Integer; external 'ReleaseDC@user32.dll stdcall';

function GetMonitorInfo(MetricType:Byte;Descriptor:THandle)  : Word;
var
  dc: DWord;
begin
  Result:= 0;
  case MetricType of
    1:  /// разрешение по ширине
    begin
      dc:= GetDC(Descriptor);
      Result:= GetDeviceCaps(dc,8);
    end;
    2: /// разрешение по высоте
    begin
      dc:= GetDC(Descriptor);
      Result:= GetDeviceCaps(dc,10);
    end;
   end;
  ReleaseDC(Descriptor,dc);
end;

// GetSystemMetrics - для второго способа онли.
function GetSystemMetrics(nIndex: Integer): Integer; external 'GetSystemMetrics@user32.dll stdcall';

procedure InitializeWizard();
begin
  MsgBox('Разрешение монитора: ' + IntToStr(GetMonitorInfo(1,MainForm.Handle)) + ' x ' + IntToStr(GetMonitorInfo(2,MainForm.Handle)), mbConfirmation, MB_OK);
  MsgBox('Разрешение монитора 2: ' + IntToStr(GetSystemMetrics(0)) + ' x ' + IntToStr(GetSystemMetrics(1)), mbConfirmation, MB_OK);
  MsgBox('Разрешение монитора 3: ' + IntToStr(Screen.Width) + ' x ' + IntToStr(Screen.Height), mbConfirmation, MB_OK);
end;
Самый простой 3 вариант.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:59, 09-11-2014 | #1917


Аватара для diman_21Ru

Старожил


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

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


TryRooM, вот там в скрипте поиск названия файла идет через

Name: "main\a"; Description: "A Files";
pSoundMemory_A := GetResourceSoundAddr('_IS_SNDA');


а у меня вот как и кажется я не правильно указал раз ошибка, как исправить чтобы заработала?

Name: OZE1/OZE1/OZE1; Description:Атмосферная от Strategic Music;Flags: disablenouninstallwarning exclusive
pSoundMemory_Атмосферная от Strategic Music := GetResourceSoundAddr('_IS_SNDA');

Последний раз редактировалось diman_21Ru, 10-11-2014 в 00:07.


Отправлено: 23:53, 09-11-2014 | #1918


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


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

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


diman_21Ru,

Не забывай прописывать имя компонента и в Modules

Последний раз редактировалось TryRooM, 18-03-2015 в 14:29.

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

Отправлено: 06:30, 10-11-2014 | #1919


Аватара для ROMKA-1977

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


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

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


Подскажите возможно ли средствами Inno Setup выполнить переименование папки Мои документы в Documents в локализованной винде?

Отправлено: 09:38, 10-11-2014 | #1920



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34




 
Переход