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

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

мне бы желательно, чтобы распакованная папка через исдан была скрытой. возможно такое?
 
Всем привет!
При обрисовке скрипта, наткнулся на некоторые задумки!)
Воспользовался BorderIcons := [];
Исчезли иконка и кнопки сворачивания, расширения и закрытия окна!
Можно ли создать эти же кнопки, но не рисуя их, через ботву, а создать системные которые предусмотренны скином?
PS: Нашел в FAQ, если выложите на свободный файлообменник, буду признателен, спасибо!))
Или примером...
 
Последнее редактирование:
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, тебе нужно убрать иконку только?
Я убирал иконку, заменой ее на прозрачную, вот недавно опять сел за SkinBuilder и решил у tiger.cjstyles с моими "модификациями" поменять CaptionButtons: Minimize,Maximize и Close, кнопка расширения окна не активна, пытался в скине ее убрать и сворачивания сдвинуть к кнопке закрытия, не получилось! И тут навеяла вот такая идейка: скрыть все к чертям и лишнюю иконку убрать из скрипта, а эти две кнопки создать и поместить куда тебе заблагорассудится))
 
RameR,так в факе есть пример. Просто отредактируй скин. Замени картинку сворачивания на разворачивание. А саму картинку сворачивания удали,ну и не забудь сохранить изменения.
 
RameR,так в факе есть пример. Просто отредактируй скин. Замени картинку сворачивания на разворачивание. А саму картинку сворачивания удали,ну и не забудь сохранить изменения.
Я заменил картинки, изменил значения в скине и сохранил, просто когда кнопку разворачивания в скине удаляешь, все норм! А вот когда смешаешь кнопку сворачивания на место удаленной, место клика на нее остается на прежнем месте, то есть ты наводишь на то место где она она была и подсвечивается перемещенная!!!
 
RameR, ты что не можешь скачать архив из фака, поменять скин и скомпилировать. Или что? :-|
 
когда-то видел что вроде винт делал пример на компактную установку,у кого-то он есть,нигде найти не могу
 
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]
 
Можно узнать, почему у меня на ISDone 0.6final - for FreeArc Alpha 26 не работает кнопка "Отмена" во время установки?
 
Mickey1s, я уже прям из интереса проверил. Все там работает,если только ты ничего не менял в скрипте.
p.s. я ещё слабый экстрасенс :)
 
  • Like
Реакции: Adil
Mickey1s, все работает.
Положил рядом с установщиком .arc архив,переименовал в data1.bin. Сетапник компилил и на Ansi, и на Unicode.
 
sergey3695, хм странно..нажимаю "отменить распаковку", 0 эмоций, дальше распаковка идет..
а есть код который отвечает за отмену на странице установки (из другого скрипта к примеру)?
 
Mickey1s
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=True;
Cancel:=True;
end;
из isexec
p.s. у кого-то есть самая последняя версия этой библиотеки?
 
urban,
Если вы имеете модуль от VoLt'a то у меня ISExec v 1.0.1
 
Winst@n да-да именно оно,можете кинуть?а то у меня версия 0.7 и она не распаковывает архивы сделанные инсайдами,типа srep+precomp
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху