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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: Vadikan
Дата: 22-05-2012
Описание: Закрыто
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2
Скрипты Inno Setup. Помощь и советы [часть 3]


Продолжение обсуждения
Скрипты Inno Setup. Помощь и советы [часть 5]

Отправлено: 18:01, 29-08-2011

 

Аватара для Johny777

Ветеран


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

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


Ivan_009,
ну вот так
with WizardForm do
begin
BorderStyle := bsNone;
end;
только окно таскать не за что будет
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,
но благодаря Лександру у нас есть чудо-процедура (сам у себя в инсталле использую. Очень удобно!)
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[  code]
type
  TANewStatic = record
    Static  : TNewStaticText;
  end;

var
  ANewStatic : array of TANewStatic;

function ReleaseCapture(): Longint; external 'ReleaseCapture@user32.dll stdcall';

procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  SendMessage(WizardForm.Handle,$0112,$F012,0)
end;

procedure AddStaticToArray(st:TNewStaticText);
var
  i:integer;
begin
  i:=GetArrayLength(ANewStatic);
  SetArrayLength(ANewStatic,i+1);
  ANewStatic[i].Static:=st;
  ANewStatic[i].Static.OnMouseDown:=@MouseDown;
end;

procedure StaticChange(c:TWinControl);
var
  i:integer;
begin
  for i:=0 to c.ControlCount-1 do
    if c.Controls[i] is TWinControl then begin
      if c.Controls[i] is TNewStaticText then AddStaticToArray(TNewStaticText(c.Controls[i]));
      if TWinControl(c.Controls[i]).ControlCount>0 then StaticChange(TWinControl(c.Controls[i]));
    end;
end;

procedure InitializeWizard;
var i:integer;
begin
with WizardForm do begin
   /// BorderStyle:=bsNone;

  end;
for i:=0 to 18 do
  begin
    with TLabel.Create(WizardForm) do
    begin
    BringToFront;
      Case i of
      0:Parent := WizardForm;
      1:Parent := WizardForm.OuterNotebook;
      2:Parent := WizardForm.InnerNotebook;
      3:Parent := WizardForm.InnerPage;
      4:Parent := WizardForm.WelcomePage;
      5:Parent := WizardForm.LicensePage;
      6:Parent := WizardForm.PasswordPage;
      7:Parent := WizardForm.InfoBeforePage;
      8:Parent := WizardForm.UserInfoPage;
      9:Parent := WizardForm.SelectDirPage;
      10:Parent := WizardForm.SelectComponentsPage;
      11:Parent := WizardForm.SelectProgramGroupPage;
      12:Parent := WizardForm.SelectTasksPage;
      13:Parent := WizardForm.ReadyPage;
      14:Parent := WizardForm.PreparingPage;
      15:Parent := WizardForm.InstallingPage;
      16:Parent := WizardForm.InfoAfterPage;
      17:Parent := WizardForm.FinishedPage;
      18:Parent := WizardForm.MainPanel;
      end;
      Transparent := True;
      Align := alClient;
      OnMouseDown:=@MouseDown;
    end;
  end;
  StaticChange(WizardForm);
end;

при желании можно не использовать кусок из InitializeWizard
и всем нужным элементам во вкладке "события" дизайнера расширенной версии
в событии OnMouseDown присвоить процедуру MouseDown (картинкам, панелям и пр)
в окнах (ведь Notebook-ам эту процедуру не присвоить) создать на всю страницу или в определённых участках лейблы с параметрами (параметры выделил жирным)
читать дальше »
Код: Выделить весь код
  Label1 := TLabel.Create(WizardForm);
  with Label1 do
  begin
    Name := 'Label1';
    Parent := WizardForm.SelectDirPage;
    AutoSize := False;
    Transparent := True;
    OnMouseDown := @MouseDown;
    Caption := '';
    Left := ScaleX(104);
    Top := ScaleY(112);
    Width := ScaleX(171);
    Height := ScaleY(53);
  end;

а если этот лейбл будет не давать пользоваться некоторыми элементами (SpeedButton-у например), то их нужно в той же вкладке
"дизайн" при щелчке правой кнопкой мыши по ним поднять "на передний план"

Последний раз редактировалось Johny777, 16-05-2012 в 01:59.

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

Отправлено: 01:37, 16-05-2012 | #2021



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

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


Аватара для MeХanik

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


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

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


Как сделать , чтобы после установки в ярлыке на раб.столе был прописан путь : X:\XXX\Shrek 2\system
Инстал все тот же:
Код: Выделить весь код
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
DiskSpanning=true
DiskSliceSize=1457664000
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{4C9C2778-0018-4EA8-BD69-82E1027FEB7D}
AppName=Shrek 2
AppVersion=1.0
;AppVerName=Shrek 2 1.0
AppPublisher=MeXanik
AppPublisherURL=rutracker.org
AppSupportURL=rutracker.org
AppUpdatesURL=rutracker.org
DefaultDirName={pf}\Shrek 2
DefaultGroupName=Shrek 2
AllowNoIcons=yes
OutputDir=C:\Documents and Settings\Администратор\Рабочий стол\Новая папка
OutputBaseFilename=setup
SetupIconFile=D:\Разное\1336903674_adept_installer.ico
Compression=lzma/ultra64
SolidCompression=true
InternalCompressLevel=ultra64

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

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked; OnlyBelowVersion: 0,6.1

[Files]
Source: D:\Разное\Shrek2-1\System\Game.exe; DestDir: {app}; Flags: ignoreversion
;Source: D:\Разное\Shrek2-1\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: {group}\Shrek 2; Filename: {app}\Game.exe
Name: {group}\{cm:ProgramOnTheWeb,Shrek 2}; Filename: rutracker.org
Name: {group}\{cm:UninstallProgram,Shrek 2}; Filename: {uninstallexe}
Name: {commondesktop}\Shrek 2; Filename: {app}\Game.exe; Tasks: desktopicon
Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\Shrek 2; Filename: {app}\Game.exe; Tasks: quicklaunchicon

[Run]
Filename: {src}\Shrek2.exe; WorkingDir: {app}; Parameters: -x -y -s2 -d.; StatusMsg: Идет распаковка данных, ждите...; Flags: runasoriginaluser
Filename: {app}\system\Game.exe; Description: {cm:LaunchProgram,Shrek 2}; Flags: nowait postinstall skipifsilent

[Registry]
Root: HKLM; SubKey: SOFTWARE\Activision\Shrek 2; ValueType: string; ValueName: InstallPath; ValueData: {app}; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\Activision\Shrek 2; ValueType: string; ValueName: StartMenuFolder; ValueData: MeXanik
Root: HKLM; SubKey: SOFTWARE\Activision\Shrek 2; ValueType: string; ValueName: Version; ValueData: 1.00
Root: HKLM; SubKey: SOFTWARE\Activision\Shrek 2; ValueType: string; ValueName: Language; ValueData: 1049
Root: HKLM; SubKey: SOFTWARE\Activision\Shrek 2; ValueType: string; ValueName: UninstallString; ValueData: C:\Program Files\Common Files\InstallShield\Driver\7\Intel 32\Idriver.exe
Root: HKLM; SubKey: SOFTWARE\Activision\Shrek 2; ValueType: string; ValueName: UninstallArgs; ValueData: /M{{7774A6A9-CE0D-4544-9A29-84351BAE184A}

[UninstallDelete]
 Name: {app}\*.*; Type: filesandordirs

Отправлено: 07:45, 16-05-2012 | #2022


Аватара для R.i.m.s.k.y.

Ветеран


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

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


MeХanik, почитать про абсолютные и относительные пути
Код: Выделить весь код
[Icons]
Name: {group}\Shrek 2; Filename: {app}\System\Game.exe; WorkingDir: {app}\System

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 07:57, 16-05-2012 | #2023


Аватара для bugmenotagain

Старожил


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

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



в реестре ошибка появляется после распаковки.


Значит страницы никак нельзя отредактировать?
NSIS действительно самый лучший. все страницы там руками пишешь, без всякой черной магии и pascal.

Отправлено: 09:50, 16-05-2012 | #2024


Аватара для R.i.m.s.k.y.

Ветеран


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

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


bugmenotagain, и что из этой куцой картинки мы должны понять?

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 09:55, 16-05-2012 | #2025


Аватара для bugmenotagain

Старожил


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

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


R.i.m.s.k.y., ошибка в реестре. программа CCleaner

Отправлено: 10:18, 16-05-2012 | #2026


Аватара для R.i.m.s.k.y.

Ветеран


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

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


bugmenotagain,
Телепаты сидят в вопросах и ответах мэйл.ру
Из тебя все клещами тянуть надо? покажи скрипт и при каких условиях возникает ошибка

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Последний раз редактировалось R.i.m.s.k.y., 16-05-2012 в 10:38.


Отправлено: 10:23, 16-05-2012 | #2027


Аватара для bugmenotagain

Старожил


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

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


Код: Выделить весь код
#define MyAppName "WinDjView 1.0.3" 
#define MyAppVersion "1.0.3" 
#define MyAppExeName "WinDjView.exe"  
[Setup] 
AppId={{60F3D1CB-B2A7-46E7-92B0-93526131061D} 
AppName={#MyAppName} 
AppVersion={#MyAppVersion} 
AppVerName=WinDjView 1.0.3 
DefaultDirName={pf}\WinDjView 
DefaultGroupName={#MyAppName} 
DisableProgramGroupPage=yes 
InfoBeforeFile=C:\Users\Admin\Desktop\ss.rtf 
OutputDir=D:\Инстляторы 
OutputBaseFilename=WinDjView.v1.0.3 
SetupIconFile=C:\Users\Admin\Desktop\win.ico 
Compression=lzma 
SolidCompression=yes 
WizardImageFile=картинка.bmp 
WizardSmallImageFile=55x55.bmp 
UninstallFilesDir={app}\uninstall 
DirExistsWarning=no 
WizardImageStretch=no  
WizardImageBackColor=clWhite 
ShowComponentSizes=no   
[Languages] 
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"  
[Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkedonce; Components: norm;  
[Components] 
Name: norm; Description: Установка; Flags: exclusive 
Name: port; Description: Распаковка; Flags: exclusive  
[Files] 
Source: "C:\users\Admin\Desktop\WinDjViewPortable\*"; DestDir: {app}\; Flags: ignoreversion createallsubdirs recursesubdirs sortfilesbyextension sortfilesbyname uninsneveruninstall; Components: port Source: "C:\Program Files\WinDjView\*"; DestDir: {app}\; Flags: ignoreversion createallsubdirs recursesubdirs sortfilesbyextension sortfilesbyname; Components: norm   
[UninstallDelete] 
Type: files; Name: {app}\ ; Components: port  
[Icons]  
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" 
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon 
 [   Code] 
procedure CurStepChanged(CurStep: TSetupStep); 
var   
ResultCode: Integer; 
begin  
 if (CurStep = ssDone) and (IsComponentSelected('port')) then Exec(ExpandConstant('{app}\uninstall\unins000.exe'), '/VERYSILENT', '', SW_SHOW, ewNoWait, ResultCode);
 end;  
[Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
после распаковки портативной версии программы.

Последний раз редактировалось bugmenotagain, 16-05-2012 в 10:41.


Отправлено: 10:31, 16-05-2012 | #2028


Аватара для R.i.m.s.k.y.

Ветеран


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

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


bugmenotagain, ну мало ли
а точно имя удалятора unins000.exe???

так попробуй
Код: Выделить весь код
#define MyAppName "WinDjView 1.0.3" 
#define MyAppVersion "1.0.3" 
#define MyAppExeName "WinDjView.exe"  

[Setup] 
AppId={{60F3D1CB-B2A7-46E7-92B0-93526131061D} 
AppName={#MyAppName} 
AppVersion={#MyAppVersion} 
AppVerName=WinDjView 1.0.3 
DefaultDirName={pf}\WinDjView 
DefaultGroupName={#MyAppName} 
DisableProgramGroupPage=yes 
InfoBeforeFile=C:\Users\Admin\Desktop\ss.rtf 
OutputDir=D:\Инстляторы 
OutputBaseFilename=WinDjView.v1.0.3 
SetupIconFile=C:\Users\Admin\Desktop\win.ico 
Compression=lzma 
SolidCompression=yes 
WizardImageFile=картинка.bmp 
WizardSmallImageFile=55x55.bmp 
UninstallFilesDir={app}\uninstall 
DirExistsWarning=no 
WizardImageStretch=no  
WizardImageBackColor=clWhite 
ShowComponentSizes=no   

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

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

[Components] 
Name: norm; Description: Установка; Flags: exclusive 
Name: port; Description: Распаковка; Flags: exclusive  

[Files] 
Source: "C:\users\Admin\Desktop\WinDjViewPortable\*"; DestDir: {app}\; Flags: ignoreversion createallsubdirs recursesubdirs sortfilesbyextension sortfilesbyname uninsneveruninstall; Components: port 
Source: "C:\Program Files\WinDjView\*"; DestDir: {app}\; Flags: ignoreversion createallsubdirs recursesubdirs sortfilesbyextension sortfilesbyname; Components: norm   

;[UninstallDelete] 
;Type: files; Name: {app}\ ; Components: port  

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

[*Code] 
procedure CurStepChanged(CurStep: TSetupStep); 
var   
ResultCode: Integer; 
begin  
if (CurStep = ssDone) then begin
  if (IsComponentSelected('port')) then begin
  Exec(ExpandConstant('{app}\uninstall\unins000.exe'), ' /VERYSILENT', ExpandConstant('{app}\uninstall'), SW_SHOW, ewNoWait, ResultCode);
  MsgBox('папка с удалятором = '  + ExpandConstant('{app}\uninstall'), mbInformation, MB_OK);
  if RegKeyExists(HKLM, SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1) then MsgBox('ключ в реестре не удален', mbInformation, MB_OK);
  end; //if (IsComponentSelected('port'))
end; //if (CurStep = ssDone)
end;  //CurStepChanged

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

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Последний раз редактировалось R.i.m.s.k.y., 16-05-2012 в 11:01.


Отправлено: 10:52, 16-05-2012 | #2029


Аватара для bugmenotagain

Старожил


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

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


Код: Выделить весь код
  if RegKeyExists(HKLM, SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1) then MsgBox('ключ в реестре не удален', mbInformation, MB_OK);

Отправлено: 11:03, 16-05-2012 | #2030



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Test ferget Тест-форум 0 24-08-2011 01:25
test ! ! Aaa ! ! Тест-форум 0 23-04-2011 11:29
test Santa aka Snt Тест-форум 0 16-04-2011 22:35
test xolod. Программное обеспечение Linux и FreeBSD 0 19-04-2009 21:03
Test memory KEugeNik Хочу все знать 11 23-11-2003 23:11




 
Переход