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

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

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

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

Ветеран


Contributor


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


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

Профиль | Отправить 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

 

Забанен


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

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


парни подскажите скрипт что бы в 1 инстоляторе было и 32и 64 битная сис.
и чтоб автоматически выбирала систему
очень очень надо

Отправлено: 14:15, 13-09-2015 | #941



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

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


Аватара для AlekseyPopovv

Старожил


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

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


vadjliss,
[Setup]
ArchitecturesInstallIn64BitMode=x64

[...]
; х64
Check: "Is64BitInstallMode";
; х86
Check: "not Is64BitInstallMode";

Отправлено: 14:30, 13-09-2015 | #942


Забанен


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

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


а на примере можешь показать куда и как ставить
я так понял вот так
скрипт

#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"

[Setup]
AppId={{D19EE6F3-07CC-4C29-A911-0F50BC5F659F}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
ArchitecturesInstallIn64BitMode=x64

[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion


[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

; х64
Check: "Is64BitInstallMode";
; х86
Check: "not Is64BitInstallMode";

Последний раз редактировалось vadjliss, 13-09-2015 в 16:31.


Отправлено: 14:55, 13-09-2015 | #943


Аватара для audiofeel

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


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

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


TryRooM,
Цитата TryRooM:
us_ov, Примерно так
Скрытый текст »
помоги разобраться в твоем примере, мне нужно лишь выбрать букву диска, все что смог " лишнее " убрал но появилась проблема, когда выбираешь диск через кнопку "обзор" то инфа в комбо бокс не обновляется, то есть если выбрал диск Д. то в комбо боксе остается С
пример
Скрытый текст

[code]; Скрипт создан через Мастер Inno Setup Script.
; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP!

#define MyAppName "Моя программа"
#define MyAppVersion "1.5"
#define MyAppPublisher "Моя компания, Inc."
#define MyAppURL "http://www.сайт.com/"
#define MyAppExeName "MyProg.exe"

[Setup]
; Примечание: Значение AppId идентифицирует это приложение.
; Не используйте одно и тоже значение в разных установках.
; (Для генерации значения GUID, нажмите Инструменты | Генерация GUID.)
AppId={{B5BB5779-8526-4769-95BB-7F54ACCBC64A}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
; Примечание: Не используйте "Flags: ignoreversion" для системных файлов

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
Код: Выделить весь код
var
cbDrive: TComboBox;
DrvLetters: array of string;

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:='';
    DRIVE_RAMDISK: Result:='';
  end;
end;

procedure cbDriveOnClick(Sender: TObject);
begin
  WizardForm.DirEdit.Text := DrvLetters[cbDrive.ItemIndex] + '{#MyAppName}';
end;

procedure FillCombo();
var
  drivesletters, drive, sd: string;
  n, lenletters, disktype, posnull: integer;

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_REMOVABLE  ) ) then
      if ( not ( disktype = DRIVE_REMOTE  ) ) then
      if ( not ( disktype = DRIVE_CDROM  ) ) then
      if ( not ( disktype = DRIVE_RAMDISK  ) ) 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 InitializeWizard();
begin
  cbDrive := TComboBox.Create(WizardForm.SelectDirPage);
  with cbDrive do begin
    Parent := WizardForm.DirEdit.Parent;
    Left := 0;
    Top := WizardForm.DirEdit.Top+WizardForm.DirEdit.Height*2-15;
    Width := 40;
    Style := csDropDownList;
  end
  WizardForm.DirEdit.Text := WizardForm.DirEdit.Text+#0;
  FillCombo;
  cbDrive.OnClick := @cbDriveOnClick;
end;

Отправлено: 17:48, 13-09-2015 | #944


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

Ветеран


Contributor


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

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


Цитата audiofeel:
мне нужно лишь выбрать букву диска, все что смог " лишнее " убрал но появилась проблема, когда выбираешь диск через кнопку "обзор" то инфа в комбо бокс не обновляется, то есть если выбрал диск Д. то в комбо боксе остается С »
audiofeel, пример:
Скрытый текст

Код: Выделить весь код
[Code]
#define A = (Defined UNICODE) ? "W" : "A"
const
    DRIVE_NO_ROOT_DIR = 1;
    DRIVE_FIXED = 3;

var
    cbDrive: TComboBox;

function GetLogicalDrives: DWORD; external 'GetLogicalDrives@kernel32.dll stdcall';
function GetDriveType(lpRootPathName: string): UINT; external 'GetDriveType{#A}@kernel32.dll stdcall';

procedure cbDriveOnClick(Sender: TObject);
var
    DirValue: string;
begin
    DirValue := WizardDirValue;
    StringChangeEx(DirValue, AddBackslash(ExtractFileDrive(DirValue)), cbDrive.Items[cbDrive.ItemIndex], True);
    WizardForm.DirEdit.Text := DirValue;
end;

procedure DirEditOnChange(Sender: TObject);
var
    i: Integer;
begin
    for i := 0 to cbDrive.Items.Count - 1 do
    begin
        if CompareText(cbDrive.Items[i], AddBackslash(ExtractFileDrive(WizardDirValue))) = 0 then
        begin
            cbDrive.ItemIndex := i;
            Break;
        end;
    end;
end;

procedure FillCombo;
var
    dwDrives: DWORD;
    uDriveType: UINT;
    szDriveLetter: string;
    i: Integer;
begin
    dwDrives := GetLogicalDrives;
    for i := 2 to 25 do if dwDrives and (1 shl i) <> 0 then
    begin
        szDriveLetter := Chr(Ord('A') + i) + ':\';
        uDriveType := GetDriveType(szDriveLetter);
        case uDriveType of
            DRIVE_FIXED:
                begin
                    cbDrive.Items.Add(szDriveLetter);
                    if CompareText(cbDrive.Items[cbDrive.Items.Count - 1], AddBackslash(ExtractFileDrive(WizardDirValue))) = 0 then
                        cbDrive.ItemIndex := cbDrive.Items.Count - 1;
                end;
            DRIVE_NO_ROOT_DIR: Continue;
        end;
    end;
end;

procedure InitializeWizard;
begin
    WizardForm.DirEdit.OnChange := @DirEditOnChange;
    cbDrive := TComboBox.Create(WizardForm.SelectDirPage);
    with cbDrive do
    begin
        Parent := WizardForm.DirEdit.Parent;
        Top := WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + ScaleY(5);
        Width := 40;
        Style := csDropDownList;
        OnClick := @cbDriveOnClick;
        FillCombo;
    end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:57, 14-09-2015 | #945


Аватара для audiofeel

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


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

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


El Sanchez,
просто отлично, все работает, только как теперь быть с лейблом "требуется место...." , он у меня менял цвет при нехватке
Скрытый текст

Код: Выделить весь код
procedure DirEditOnChange(Sender: TObject);
var
  FreeMB, TotalMB: cardinal;
begin
  GetSpaceOnDisk(ExtractFileDrive(WizardForm.DirEdit.Text), True, FreeMB, TotalMB);
  NeedSizeLbl.Caption:= ExpandConstant('{cm:NeedSize1} ' + MbOrTb({#NeedSize}) + ' {cm:NeedSize2}')
  if (FreeMB<{#NeedSize}) then NeedSizeLbl.Font.Color:= clRed else
    NeedSizeLbl.Font.Color:= clWhite;
end;

Отправлено: 14:25, 14-09-2015 | #946


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


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

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


El Sanchez,
Тебе видимо тут спокойно не живётся.

Аудиозоофил,
До оригинала тебе как от Москвы до Пекина пешком. На данный момент ты добился лишь того что мод VCL Styles Inno выпилен и новых версий не будет для паблика.

Отправлено: 14:35, 14-09-2015 | #947


Забанен


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

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


подскажите как сделать или хоть примерный скрипт 32-64 бит
имеется 2 папки одна 32 другая 64 бит программы
как их реализовать в один инстал. и автоматически что бы выбирала ось

Отправлено: 19:11, 14-09-2015 | #948


SHVtYW4=


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

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


Цитата vadjliss:
имеется 2 папки одна 32 другая 64 бит программы »
Код: Выделить весь код
[Files]
Source: 32\*; DestDir: {app}; Check: not IsWin64; Flags: ignoreversion recursesubdirs createallsubdirs
Source: 64\*; DestDir: {app}; Check: IsWin64; Flags: ignoreversion recursesubdirs createallsubdirs

Отправлено: 21:29, 14-09-2015 | #949


Аватара для habib2302

Ветеран


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

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


Доброе время суток. Подскажите как правильно сделать распаковку vcomp140.dll в sys и syswow64. Все перепробЫвал либо 1 файл не распаковывается либо оба файла в syswow64
Код: Выделить весь код
Source: vcomp140.dll; DestDir: {sys}; Flags: ignoreversion; Check: IsWin64; Components: BDC\I;
Source: vcomp140_1.dll; DestDir: {syswow64}; Flags: ignoreversion; DestName: vcomp140.dll; Components: BDC\I;
Хочу чтобы vcomp140.dll распаковывался в System32, а vcomp140_1.dll в syswow64

-------
Помог? От "Полезное сообщение" не откажусь!!!


Отправлено: 10:38, 20-09-2015 | #950



Компьютерный форум 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




 
Переход