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

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

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


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

Последний раз редактировалось vadjliss, 14-02-2016 в 08:09.


Отправлено: 07:47, 14-02-2016 | #1321



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

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


Аватара для ZVSRus

Старожил


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

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


Цитата vadjliss:
парни как сделать что бы название программы в инсталяторе было одно, а папка куда устанавливается программа была другой
Я делаю так

-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode


Последний раз редактировалось ZVSRus, 22-03-2016 в 12:35.

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

Отправлено: 14:47, 14-02-2016 | #1322


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


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

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


- Отключены кнопки Alt+F4
- Отключена кнопка "Отмена" и "Закрыть"
- Нельзя закрыть с панели задач (taskbar)

Вопрос : Как сделать этот код чтобы был он UNICODE ?
То есть перевести из ANSI в UNICODE

Скрытый текст
[code]
const
MF_BYCOMMAND = 0;
MF_ENABLED = 0;
MF_GRAYED = 1;
MF_DISABLED = 2;
SC_CLOSE = 61536;
GCL_STYLE = -26;
CS_NOCLOSE = $200;
MF_BYPOSITION = $00000400;

type
HMENU = THandle;

function GetSystemMenu(hWnd: HWND; bRevert: BOOL): LongWord; external 'GetSystemMenu@user32.dll stdcall';
function EnableMenuItem(hMenu: THandle; uIDEnableItem: Longword; uEnable: Longword): Boolean; external 'EnableMenuItem@user32.dll stdcall';
function GetClassLong(Wnd: HWnd; Index: Integer): Longint; external 'GetClassLongA@user32.dll stdcall';
function SetClassLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetClassLongA@user32.dll stdcall';
function DeleteMenu(hMenu: HMENU; uPosition, uFlags: UINT): BOOL; external 'DeleteMenu@user32.dll stdcall';
function GetMenuItemCount(hMenu: HMENU): Integer; external 'GetMenuItemCount@user32.dll stdcall';

procedure CurPageChanged(CurPageID: Integer);
begin
EnableMenuItem(GetSystemMenu(WizardForm.Handle, false), SC_CLOSE, MF_DISABLED or MF_BYCOMMAND);
if CurPageID = wpinstalling then
WizardForm.CancelButton.Enabled := False;
if (CurPageID = wpSelectDir) or (CurPageID = wpReady) then
WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall)
else if (CurPageID = wpFinished) then
WizardForm.NextButton.Caption := SetupMessage(msgButtonFinish)
else
WizardForm.NextButton.Caption := SetupMessage(msgButtonNext);
end;

procedure InitializeWizard;
var
SystemMenu: HMENU;
begin
SystemMenu := GetSystemMenu(WizardForm.Handle, False);
DeleteMenu(SystemMenu, 9999, MF_BYCOMMAND);
DeleteMenu(SystemMenu, GetMenuItemCount(SystemMenu)-1, MF_BYPOSITION);
SetClassLong(WizardForm.Handle, GCL_STYLE, GetClassLong(WizardForm.Handle, GCL_STYLE) or CS_NOCLOSE);
end;

Отправлено: 18:02, 14-02-2016 | #1323


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


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

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


Есть ли хоть какой способ заблокировать кнопку "Закрыть" на панели задач (taskbar) ?

Отправлено: 19:36, 14-02-2016 | #1324


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

Старожил


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

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


Цитата Venelana:
Как сделать этот код чтобы был он UNICODE ? »
Код: Выделить весь код
function GetClassLong(Wnd: HWnd; Index: Integer): Longint; external 'GetClassLongW@user32.dll stdcall';
function SetClassLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetClassLongW@user32.dll stdcall';

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


Отправлено: 21:27, 14-02-2016 | #1325


Аватара для Raf-9600

Старожил


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

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


Есть код от El Sanchez на рекурсивный поиск всех файлов по маске. Ктонить может его переделать, чтобы найдя первый файл рекурсия тут же прекращалась и функция возвращала true?

Код: Выделить весь код
function FindFiles(Path, Mask: string; Recurse: BOOL): TArrayOfString;
var
  FindRecAll, FindRecMask: TFindRec;
begin
  if not DirExists(Path) then Exit;
    //
  if FindFirst(AddBackslash(RemoveBackslash(Path)) + Mask, FindRecMask) then
  try
    repeat
      if (FindRecMask.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0) then
      begin
        SetArrayLength(Result, GetArrayLength(Result) + 1);
        Result[GetArrayLength(Result) - 1] := AddBackslash(RemoveBackslash(Path)) + FindRecMask.Name;
      end;
    until not FindNext(FindRecMask);
  finally
    FindClose(FindRecMask);
  end;
    //
  if Recurse then
  begin
    if FindFirst(AddBackslash(RemoveBackslash(Path)) + '*', FindRecAll) then
    try
      repeat
        if (FindRecAll.Attributes and FILE_ATTRIBUTE_DIRECTORY <> 0) and (FindRecAll.Name <> '.') and (FindRecAll.Name <> '..') then
          Result := FindFiles(AddBackslash(RemoveBackslash(Path)) + FindRecAll.Name, Mask, Recurse);
      until not FindNext(FindRecAll);
    finally
      FindClose(FindRecAll);
    end;
  end;
end;

Отправлено: 14:58, 15-02-2016 | #1326


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

Старожил


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

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


Raf-9600, пробуйте:
Код: Выделить весь код
Function FindFiles(Path, Mask: String): Boolean;
var
 FindRecMask: TFindRec;
begin
 Result := False;
 if DirExists(Path) then
  if FindFirst(AddBackslash(RemoveBackslash(Path)) + Mask, FindRecMask) then
   try
    repeat
      if (FindRecMask.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0) then
       Result := True;
    until Result;
   finally
    FindClose(FindRecMask);
   end;
end;

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

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

Отправлено: 18:51, 15-02-2016 | #1327


Забанен


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

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


парни вопрос как сделать дополнительный ярлык на рабочий стол
Код: Выделить весь код
#define MainExe "{app}\Bin32\crysis.exe"
#define MainExe64 "{app}\Bin64\crysis.exe"
#define MainExeDir Copy(MainExe, 1, RPos("\", MainExe)-1)
#define MainExe64Dir Copy(MainExe64, 1, RPos("\", MainExe64)-1)


#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={{8CD106B3-D140-412D-8762-B30B13DEFF3C}
AppName={#MyAppName}
AppVersion={#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


[Icons]
Name: "{userdesktop}\{#MyAppName}"; FileName: "{#MainExe64}"; WorkingDir: "{#MainExe64Dir}"; Tasks: desktopicon; Check: IsWin64
Name: "{userdesktop}\{#MyAppName}"; FileName: "{#MainExe}"; WorkingDir: "{#MainExeDir}"; Tasks: desktopicon; Check: not IsWin64

Отправлено: 19:35, 15-02-2016 | #1328


Ветеран


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

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


Цитата vadjliss:
как сделать дополнительный ярлык на рабочий стол »
Ярлык чего? Если исполняемых файлов программы, то они и так объявлены в секции Icons

Последний раз редактировалось saurn, 15-02-2016 в 20:45.


Отправлено: 20:32, 15-02-2016 | #1329


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


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

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


Помогите пожалуйста сделать кнопку "Отмена"
Как сделать свою кнопку вместо стандартной ?

P.S
Родная кнопка у меня отключена и сделана невидимой

Скрытый текст
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

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

[Setup]
; 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={{FC9B3E48-8A0B-49FA-B161-675874D96F13}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
DisableWelcomePage=no
AllowCancelDuringInstall=no

[Languages]
Name: "english"; 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
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

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


[code]
procedure CurPageChanged(CurPageID: Integer);
begin
WizardForm.CancelButton.Enabled := False;
WizardForm.CancelButton.Visible := False;
end;

procedure TestButtonOnClick(Sender: TObject);
begin
MsgBox('Тест!', mbInformation, MB_OK)
end;

procedure InitializeWizard();
var
TestButton: TButton;

begin
WizardForm.OuterNotebook.Height := ScaleY(361);
WizardForm.InnerNotebook.Height := ScaleY(285);
WizardForm.Bevel.Parent := WizardForm.WelcomePage;
WizardForm.NextButton.BringToFront;
WizardForm.BackButton.BringToFront;
WizardForm.CancelButton.BringToFront;

TestButton:=TButton.Create(WizardForm);
with TestButton do
begin
Left := ScaleX(237);
Top := ScaleY(327);
Width := ScaleX(80);
Height := ScaleY(23);
Caption:='Тест';
OnClick:=@TestButtonOnClick;
Parent:=WizardForm.WelcomePage;
end;
end;


Отправлено: 13:23, 16-02-2016 | #1330



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




 
Переход