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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 16-02-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] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Отправлено: 19:06, 28-03-2013

 

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


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

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


а можете подсказать как сделать проверку на процесс WorldOfTanks.exe
если процесс включен, то установить дальше не возможно, пока не выключишь игру

Отправлено: 21:54, 26-01-2014 | #1981



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

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


Аватара для nik1967

Старожил


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

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


innot20, шапка => Показать/скрыть: Ссылки на примеры скриптов: => Запущен ли процесс (WMI), Запущен ли процесс
Когда же вы будете сами что-то искать?

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".


Отправлено: 22:19, 26-01-2014 | #1982


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


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

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


saurn , спасибо все работает!)

Отправлено: 22:26, 26-01-2014 | #1983


SHVtYW4=


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

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


Вложения
Тип файла: 7z ISTask.7z
(30.2 Kb, 6 просмотров)

innot20,
Код: Выделить весь код
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Files]
Source: ISTask.dll; DestDir: {app}; Flags: dontcopy

[Code]
function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';

function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';

//**************************************************//
function InitializeSetup(): Boolean;
begin
  If RunTask('WorldOfTanks.exe', false) then
    begin
      if MsgBox('Игра WorldOfTanks запущена. Закрыть и продолжить установку?', mbInformation, mb_YesNo) = idYes then
        begin
          KillTask('WorldOfTanks.exe');
          Result:= True;
        end else
          Exit;
    end;
Result:=True;
end;

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.

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

Отправлено: 05:32, 27-01-2014 | #1984


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

Старожил


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

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


Ктонить может подсказать, как правильно через секцию [Cоde] попросить cmd.exe, чтобы он запустил определённый батник? При том чтобы консольное окно не появлялось.

Пробовал вот так:
Код: Выделить весь код
Exec(ExpandConstant('{cmd}'), '/c start "Delete empty folders" "' + ExpandConstant('{app}\Delete empty folders.bat') + '"', ExpandConstant('{app}'), SW_HIDE, ewWaitUntilTerminated, ResultCode)
Но в таком случае окно консоли появляется и само не закрывается...

Отправлено: 14:12, 27-01-2014 | #1985


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


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

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


Raf-9600, батники можно запускать и без cmd, например так
Код: Выделить весь код
Exec(ExpandConstant('{app}') + '\Delete empty folders.bat', '', '', SW_HIDE,
     ewWaitUntilTerminated, ResultCode);
А можно из командной строки так
Код: Выделить весь код
Exec(ExpandConstant('{cmd}'), '/C ' + ExpandConstant('{app}') + '\Delete empty folders.bat' , '', SW_HIDE, ewWaitUntilTerminated, i)
Второй способ я пользовала не для .bat, а для .cmd файлов, но по идее должно быть аналогично
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:43, 27-01-2014 | #1986


Аватара для diman_21Ru

Старожил


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

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


делаю так чтобы удалить старые компоненты но выходит ошибка кто знает в чем проблема ?

[InstallDelete]
Type: filesandordirs; Name: "{app}\res_mods"; Check: IsChecked();

[Dirs]
Name: "{app}\res_mods"; Check: IsChecked();
Name: "{app}\res_mods\0.8.11 Common Test"; Check: IsChecked();

[code]

var
InfoPic: TBitmapImage;
LastIndex: Integer;
TempPath: String;
PicForm: TForm;
deleteChk: TCheckBox;

procedure InitializeWizard();
var
i, iCount: Integer;
begin

for i := iCount downto 0 do
WizardForm.ComponentsList.Checked[i]:= False;

deleteChk := TCheckBox.Create(nil);
with deleteChk do
begin
Parent := WizardForm.SelectDirPage;
SetBounds(ScaleX(0), ScaleY(115), ScaleX(400), ScaleY(15));
Caption := 'Удалить старые компоненты';
Checked := True;

function IsChecked(): Boolean;
begin
Result := deleteChk.Checked;
end;

Последний раз редактировалось diman_21Ru, 30-01-2014 в 20:30.


Отправлено: 14:52, 27-01-2014 | #1987


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


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

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


Цитата diman_21Ru:
TAY50N,какие строчки ты именно добавил чтобы наводя на мод выходила картинка с боку ? »
читать дальше »
[code]
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif

const
UNDEF_INDEX = -777;
ALPHA_BLEND_LEVEL = 255; // max=Byte=255

WS_EX_LAYERED = $80000;
WS_EX_TRANSPARENT = $20;
LWA_COLORKEY = 1;
LWA_ALPHA = 2;
GWL_EXSTYLE = (-20);


var
InfoPic: TBitmapImage;
LastIndex: Integer;
TempPath: String;
PicForm: TForm;


type
COLORREF = DWORD;


function GetCursorPos(var lpPoint: TPoint): BOOL; external 'GetCursorPos@user32.dll stdcall';
function SetLayeredWindowAttributes(Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; external 'SetLayeredWindowAttributes@user32.dll stdcall';
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLong{#A}@user32.dll stdcall';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
function SetFocus(hWnd: HWND): HWND; external 'SetFocus@user32.dll stdcall';

//////Картинка описания//////////
procedure ShowPicHint(const PicFilePath: String);
var
pt: TPoint;
begin
if not GetCursorPos(pt) then Exit;
InfoPic.Bitmap.LoadFromFile(PicFilePath);
InfoPic.SetBounds(ScaleX(247), ScaleY(65), ScaleX(232), ScaleY(237));
InfoPic.Show;
end;

///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
var
UndefPic: String;
begin
if Index = -1 then Exit;
if Index = LastIndex then Exit;
try
case TNewCheckListBox(Sender).ItemCaption[Index] of
'Удаляем видео заставку': UndefPic := '1.bmp';
'Часы в Ангаре': UndefPic := '2.bmp';
'от zayaz': UndefPic := '3.bmp';
'от ZCH_0933': UndefPic := '4.bmp';
else
begin
LastIndex := UNDEF_INDEX;
InfoPic.Hide;
Exit;
end;
end;
if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);
ShowPicHint(TempPath + UndefPic);
finally
LastIndex := Index;
end;
end;


procedure CompOnMouseLeave(Sender: TObject);
begin
InfoPic.Hide;
LastIndex := -1;
end;


procedure InitInfo();
begin
WizardForm.TypesCombo.Hide;
WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(63), ScaleX(240), ScaleY(240));
WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;
TempPath := AddBackslash(ExpandConstant('{tmp}'));
LastIndex := UNDEF_INDEX;

with TBevel.Create(WizardForm) do
begin
Parent := WizardForm.SelectComponentsPage;
SetBounds(ScaleX(245), ScaleY(63), ScaleX(235), ScaleY(240));
Shape := bsFrame;
end;

InfoPic := TBitmapImage.Create(WizardForm)
with InfoPic do
begin
Parent := WizardForm.SelectComponentsPage;
AutoSize := True;
end;
end;

Отправлено: 14:59, 27-01-2014 | #1988


Аватара для diman_21Ru

Старожил


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

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


TAY50N ,т.е второй надо делать а не как на первом ?

Отправлено: 15:01, 27-01-2014 | #1989


Ветеран


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

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


Цитата diman_21Ru:
делаю так чтобы удалить старые компоненты но выходит ошибка кто знает в чем проблема ? »
А ничего странного в глаза не бросается? Вот тут:
Код: Выделить весь код
procedure InitializeWizard();
var
i, iCount: Integer;
begin

for i := iCount downto 0 do
WizardForm.ComponentsList.Checked[i]:= False;

deleteChk := TCheckBox.Create(nil);
with deleteChk do
begin
Parent := WizardForm.SelectDirPage;
SetBounds(ScaleX(0), ScaleY(115), ScaleX(400), ScaleY(15));
Caption := 'Удалить старые компоненты';
Checked := True;
Здесь должны быть две логические скобки end;
function IsChecked(): Boolean;
begin
Result := deleteChk.Checked;
end;

Отправлено: 15:08, 27-01-2014 | #1990



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59




 
Переход