Inno Setup (создание инсталяционных пакетов). Часть 3

Статус
В этой теме нельзя размещать новые ответы.

Carlos

Участник
Модератор
Можно ли сделать так, чтобы после установки файл или папка были скрытыми?
 

sergey3695

Ветеран
Модератор
Carlos,
можно так (пример изменения атрибута файла. в данном случае 'только чтение')
Код:
[Files]
Source: File.txt; DestDir: {app}; Flags: overwritereadonly; [B]Attribs: readonly[/B]
или так (сообщение Genri)
P.S. Если в системе стоит,показывать скрытые файлы и папки,то файлы будут видны.
 
Последнее редактирование:

Carlos

Участник
Модератор
sergey3695, Это я понял, что тут только для чтения.
Я не совсем понял как сделать папку скрытой.

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

RameR

Новичок
Всем привет!
При обрисовке скрипта, наткнулся на некоторые задумки!)
Воспользовался BorderIcons := [];
Исчезли иконка и кнопки сворачивания, расширения и закрытия окна!
Можно ли создать эти же кнопки, но не рисуя их, через ботву, а создать системные которые предусмотренны скином?
PS: Нашел в FAQ, если выложите на свободный файлообменник, буду признателен, спасибо!))
Или примером...
 
Последнее редактирование:

sergey3695

Ветеран
Модератор
RameR, тебе нужно убрать иконку только?
Carlos, пример второй бы посмотрел.
Код:
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DisableFinishedPage=yes
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[_Code]
function GetFileAttributes(lpFileName: string): integer;
external 'GetFileAttributesA@kernel32.dll stdcall';

function SetFileAttributes(lpFileName: string; dwFileAttributes: integer): integer;
external 'SetFileAttributesA@kernel32.dll stdcall';

procedure InitializeWizard();
var
  FileName: string;
begin
  FileName:= 'E:\новая папка';
  SetFileAttributes(FileName, FILE_ATTRIBUTE_HIDDEN);
end;
почитай что ли,а то погуглить никак.
 
Последнее редактирование:

RameR

Новичок
RameR, тебе нужно убрать иконку только?
Я убирал иконку, заменой ее на прозрачную, вот недавно опять сел за SkinBuilder и решил у tiger.cjstyles с моими "модификациями" поменять CaptionButtons: Minimize,Maximize и Close, кнопка расширения окна не активна, пытался в скине ее убрать и сворачивания сдвинуть к кнопке закрытия, не получилось! И тут навеяла вот такая идейка: скрыть все к чертям и лишнюю иконку убрать из скрипта, а эти две кнопки создать и поместить куда тебе заблагорассудится))
 

sergey3695

Ветеран
Модератор
RameR,так в факе есть пример. Просто отредактируй скин. Замени картинку сворачивания на разворачивание. А саму картинку сворачивания удали,ну и не забудь сохранить изменения.
 

RameR

Новичок
RameR,так в факе есть пример. Просто отредактируй скин. Замени картинку сворачивания на разворачивание. А саму картинку сворачивания удали,ну и не забудь сохранить изменения.
Я заменил картинки, изменил значения в скине и сохранил, просто когда кнопку разворачивания в скине удаляешь, все норм! А вот когда смешаешь кнопку сворачивания на место удаленной, место клика на нее остается на прежнем месте, то есть ты наводишь на то место где она она была и подсвечивается перемещенная!!!
 

sergey3695

Ветеран
Модератор
RameR, ты что не можешь скачать архив из фака, поменять скин и скомпилировать. Или что? :-|
 

urban

Старожил
когда-то видел что вроде винт делал пример на компактную установку,у кого-то он есть,нигде найти не могу
 

Adil

Старожил
urban, взято со справки
[SOURCE="inno"][Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=.

[Files]
Source: {sys}\*.dll; DestDir: {app}; Flags: external deleteafterinstall;

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

Код:
function GetSystemMetrics(nIndex: Integer): Integer; 
 external 'GetSystemMetrics@user32.dll stdcall'; 
 
var 
  MyCheck: TCheckBox; 
 
procedure StandartForm(); 
begin 
  with WizardForm do 
  begin 
    ClientWidth := ScaleX(497); 
    ClientHeight := ScaleY(360); 
    Center; 
    Bevel.Show; 
    Bevel1.Show; 
    MainPanel.Show; 
    with InnerNotebook do 
    begin 
      Left := ScaleX(40); 
      Top := ScaleY(72); 
      Width := ScaleX(417); 
    end; 
    with StatusLabel do 
      Width := ScaleX(417); 
 
    with FileNameLabel do 
    begin 
      ScaleY(16); 
      Width := ScaleX(417); 
    end; 
    with ProgressGauge do 
    begin 
      Top := ScaleY(42); 
      Width := ScaleX(417); 
    end; 
    with CancelButton do 
    begin 
      Left := ScaleX(412); 
      Top := ScaleY(327); 
    end;      
  end; 
  with MyCheck do 
    Top := ScaleY(330);   
end; 
 
procedure MyNewForm(); 
begin 
  with WizardForm do 
  begin 
    ClientWidth := ScaleX(295); 
    ClientHeight := ScaleY(70); 
    Left := GetSystemMetrics(16) - ClientWidth - ScaleX(8); 
    Top := GetSystemMetrics(17) - ClientHeight - ScaleY(8);    
    Bevel.Hide; 
    Bevel1.Hide; 
    MainPanel.Hide; 
    with InnerNotebook do 
    begin 
      Left := ScaleX(1); 
      Top := ScaleY(2); 

      Width := WizardForm.ClientWidth - ScaleX(0); 
    end; 
    with StatusLabel do 
      Width := InnerNotebook.Width; 
 
 
    with FileNameLabel do 
    begin 
      Top := ScaleY(0); 
      Width := InnerNotebook.Width; 
    end; 
    with ProgressGauge do 
    begin 
      Top := ScaleY(20); 
      Left := ScaleX(1);
      Width:=4
      Height:=19 

      Width := InnerNotebook.Width; 
    end; 
    with CancelButton do 
    begin 
      Left := WizardForm.ClientWidth div 2 - CancelButton.Width div 2; 
      Top := WizardForm.ClientHeight - CancelButton.Height - ScaleY(10); 
      BringToFront; 
      Left := ScaleX(200); 
      Top := ScaleY(45); 
      Width := WizardForm.ClientWidth - ScaleX(211); 

    end; 
  end; 
  with MyCheck do 
    Top := WizardForm.CancelButton.Top; 
end; 
 
procedure GetWizardForm(Sender: TObject); 
begin 
  if MyCheck.Checked then 
    MyNewForm() 
  else 
  StandartForm(); 
end; 
 
procedure InitializeWizard(); 
begin 
  MyCheck := TCheckBox.Create(WizardForm); 
  with MyCheck do 
  begin 
    Left := ScaleX(5); 
    Top := ScaleY(330); 
    Width := ScaleX(150); 
    Caption := 'Компактний режим'; 
    OnClick := @GetWizardForm; 
    Parent := WizardForm; 
  end; 
end; 
 
procedure CurPageChanged(CurPageID: Integer); 
begin 
  MyCheck.Hide; 
  if CurPageID = wpInstalling then 
    MyCheck.Show; 
end; 
 
procedure CurStepChanged(CurStep: TSetupStep); 
begin 
  if CurStep = ssPostInstall then 
   MyCheck.Checked := False; 
end; [/SOURCE][/SPOILER][SPOILER="Вариант 2:"][SOURCE="inno"][Setup] 
AppName=My Program 
AppVerName=My Program 
DefaultDirName={pf}\My Program 
OutputDir=. 
 
[Files] 
Source: {sys}\*.dll; DestDir: {app}; Flags: external deleteafterinstall; 
 
[code] 
function GetSystemMetrics(nIndex: Integer): Integer; 
 external 'GetSystemMetrics@user32.dll stdcall'; 
 
var 
  MyCheck: TCheckBox; 
 
procedure StandartForm(); 
begin 
  with WizardForm do 
  begin 
    ClientWidth := ScaleX(497); 
    ClientHeight := ScaleY(360); 
    Center; 
    Bevel.Show; 
    Bevel1.Show; 
    MainPanel.Show; 
    with InnerNotebook do 
    begin 
      Left := ScaleX(40); 
      Top := ScaleY(72); 
      Width := ScaleX(417); 
    end; 
    with StatusLabel do 
      Width := ScaleX(417); 
 
    with FileNameLabel do 
    begin 
      ScaleY(16); 
      Width := ScaleX(417); 
    end; 
    with ProgressGauge do 
    begin 
      Top := ScaleY(42); 
      Width := ScaleX(417); 
    end; 
    with CancelButton do 
    begin 
      Left := ScaleX(412); 
      Top := ScaleY(327); 
    end;      
  end; 
  with MyCheck do 
    Top := ScaleY(330);   
end; 
 
procedure MyNewForm(); 
begin 
  with WizardForm do 
  begin 
    ClientWidth := ScaleX(395); 
    ClientHeight := ScaleY(120); 
    Left := GetSystemMetrics(16) - ClientWidth - ScaleX(8); 
    Top := GetSystemMetrics(17) - ClientHeight - ScaleY(8);    
    Bevel.Hide; 
    Bevel1.Hide; 
    MainPanel.Hide; 
    with InnerNotebook do 
    begin 
      Left := ScaleX(10); 
      Top := ScaleY(10); 
      Width := WizardForm.ClientWidth - ScaleX(20); 
    end; 
    with StatusLabel do 
      Width := InnerNotebook.Width; 
 
    with FileNameLabel do 
    begin 
      Top := ScaleY(20); 
      Width := InnerNotebook.Width; 
    end; 
    with ProgressGauge do 
    begin 
      Top := ScaleY(40); 
      Width := InnerNotebook.Width; 
    end; 
    with CancelButton do 
    begin 
      Left := WizardForm.ClientWidth div 2 - CancelButton.Width div 2; 
      Top := WizardForm.ClientHeight - CancelButton.Height - ScaleY(10); 
      BringToFront; 
    end; 
  end; 
  with MyCheck do 
    Top := WizardForm.CancelButton.Top; 
end; 
 
procedure GetWizardForm(Sender: TObject); 
begin 
  if MyCheck.Checked then 
    MyNewForm() 
  else 
  StandartForm(); 
end; 
 
procedure InitializeWizard(); 
begin 
  MyCheck := TCheckBox.Create(WizardForm); 
  with MyCheck do 
  begin 
    Left := ScaleX(10); 
    Top := ScaleY(330); 
    Width := ScaleX(150); 
    Caption := 'Компактный размер'; 
    OnClick := @GetWizardForm; 
    Parent := WizardForm; 
  end; 
end; 
 
procedure CurPageChanged(CurPageID: Integer); 
begin 
  MyCheck.Hide; 
  if CurPageID = wpInstalling then 
    MyCheck.Show; 
end; 
 
procedure CurStepChanged(CurStep: TSetupStep); 
begin 
  if CurStep = ssPostInstall then 
   MyCheck.Checked := False; 
end; [/SOURCE][/SPOILER]
 

Mickey1s

Ветеран
Модератор
Можно узнать, почему у меня на ISDone 0.6final - for FreeArc Alpha 26 не работает кнопка "Отмена" во время установки?
 

sergey3695

Ветеран
Модератор
Mickey1s, я уже прям из интереса проверил. Все там работает,если только ты ничего не менял в скрипте.
p.s. я ещё слабый экстрасенс :)
 
  • Like
Реакции: Adil

sergey3695

Ветеран
Модератор
Mickey1s, все работает.
Положил рядом с установщиком .arc архив,переименовал в data1.bin. Сетапник компилил и на Ansi, и на Unicode.
 

Mickey1s

Ветеран
Модератор
sergey3695, хм странно..нажимаю "отменить распаковку", 0 эмоций, дальше распаковка идет..
а есть код который отвечает за отмену на странице установки (из другого скрипта к примеру)?
 

urban

Старожил
Mickey1s
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=True;
Cancel:=True;
end;
из isexec
p.s. у кого-то есть самая последняя версия этой библиотеки?
 

Winst@n

Участник
Проверенный
urban,
Если вы имеете модуль от VoLt'a то у меня ISExec v 1.0.1
 

urban

Старожил
Winst@n да-да именно оно,можете кинуть?а то у меня версия 0.7 и она не распаковывает архивы сделанные инсайдами,типа srep+precomp
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху