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

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

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

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

Ветеран


Contributor


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


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

Профиль | Отправить 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

 

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

Ветеран


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

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


Цитата al70:
на Win 7 x64 не помогло. На XP отработало без проблем »
Это работает на всех виндах, проверено не только мной. Сам видишь вызывается стандартная для всех виндов команда консоли RD, которой передается путь {app}
Как вариант вставь MSGBox
Код: Выделить весь код
...
if CurUninstallStep=usDone then begin
  MsgBox(ExpandConstant('{app}'), mbError, mb_Ok);
  if DirExists(ExpandConstant('{app}')) then begin
    RD(ExpandConstant('{app}'))
  end;

...
увидишь может путь не такой

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

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

Отправлено: 18:55, 08-03-2012 | #961



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

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


Аватара для Rikill

Старожил


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

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


Johny777, у меня на совсем новой машине не запускался инсталлятор. Закрытый вариант - значит не для публики.

P.S. Скучал по форуму. Буду иногда появляться, если нужен вам.

-------
"Око за око приведёт к слепоте мира"- Ганди


Отправлено: 22:57, 08-03-2012 | #962


Аватара для Johny777

Ветеран


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

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


Rikill,
забил,
тк на день раз 20 запускаю для теста основы и очень часто оба примера перестают работать через несколько повторных запусков
у меня шрифт только в 6-8 местах использовался (как в главном меню халфы 2 с лямбдой)
вот наглядный пример

заменю на картинки
разницы не будет никакой, а качество поднимется
Цитата Rikill:
если нужен вам »
нужен.

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

http://rghost.ru/36630976

Последний раз редактировалось Johny777, 09-03-2012 в 02:13.

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

Отправлено: 01:52, 09-03-2012 | #963


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

Ветеран


Contributor


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

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


Цитата Johny777:
тк на день раз 20 запускаю для теста основы и очень часто оба примера перестают работать через несколько повторных запусков »
Johny777, Несколько замечаний по обоим примерам кастомного шрифта:
1. Совсем не обязательно рассылать сообщение WM_FONTCHANGE всем top-level окнам, достаточно послать форме. А можно и вообще Send/PostMessage убрать.
2. FontExists лучше делать до вызова AddFontResource, т.к. шрифт может быть уже установленым в системе и повторное его добавление это не есть хорошо.
3. Булев флаг IsCustomFontInstalled лишний.
4. Все это лучше не делать в функции InitializeSetup, когда формы еще нет.
5. Применить для уверенности функцию AddFontResourceEx, зная что шрифт будет использован только вызываемым приложением.
читать дальше »

Код: Выделить весь код
#define Font "Edisson.ttf"
#define FontName "Edisson"

[Files]
Source: {#Font}; Flags: dontcopy

[code]
#ifdef UNICODE
    #define A "W"
#else
    #define A "A"
#endif

const
    FR_PRIVATE = $10;

function AddFontResource(lpszFilename: String; fl, pdv: DWORD): Integer; external 'AddFontResourceEx{#A}@gdi32.dll stdcall';
function RemoveFontResource(lpFileName: String; fl, pdv: DWORD): BOOL; external 'RemoveFontResourceEx{#A}@gdi32.dll stdcall';

procedure InitializeWizard();
begin
    if not FontExists('{#FontName}') then
    begin
        ExtractTemporaryFile('{#Font}');
        AddFontResource(ExpandConstant('{tmp}\{#Font}'), FR_PRIVATE, 0);
    end;
    WizardForm.Font.Name := '{#FontName}';
end;

procedure DeinitializeSetup();
begin
    RemoveFontResource(ExpandConstant('{tmp}\{#Font}'), FR_PRIVATE, 0);
    WizardForm.Free;
end;

Последний раз редактировалось El Sanchez, 10-03-2012 в 13:07. Причина: не удалялся шрифт

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

Отправлено: 11:48, 09-03-2012 | #964


Аватара для Gnom_aka_Lexander

Ветеран


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

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


El Sanchez, одна беда - шрифт остается во временной папке. А рабочесть примера подтверждаю - у меня как раз такая система, на которой классический пример использования кастомного шрифта не работает, не зависимо от степени убитости системы. Повисает оповещательное сообщение. Немного исправляло положение замена SendMessage на PostMessage но результат нестабилен. Причина, как объяснили, какая-то программа ловит это сообщение и не пересылает его дальше. От степени убитости системы, повторюсь, это никак не зависит. Виноват криворукий программер, который написал какую-то обслуживающую утилитку, по всей видимости.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.

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

Отправлено: 12:00, 09-03-2012 | #965


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


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

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


Здравствуйте, помогите поправить скрипт (с распаковкой arc), надо что бы он нормально распаковывался, а то он только сам архив расспаковывает, а надо что бы ещё он всё что в архиве расспаковывал. Пожалуйста помогите!!!!

[Setup]
AppName=Sigerous Mod для COP
AppVerName=Sigerous Mod v2.2
DefaultDirName=stalker
InfoBeforeFile=embedded\InfoBefore.rtf
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=embedded\WizardSmallImage.bmp
Compression=zip

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

[Files]
Source: *.arc; DestDir: {app}; Flags: ignoreversion
Source: unarc.dll; DestDir: {tmp}; Flags: dontcopy
Source: InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy

[Icons]
Name: {group}\Uninstall; IconFilename: {app}\unins000.exe; Filename: {app}\unins000.exe

[code]


const
PM_REMOVE = 1;

function PeekMessage(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall';
function TranslateMessage(const lpMsg: TMsg): BOOL; external 'TranslateMessage@user32.dll stdcall';
function DispatchMessage(const lpMsg: TMsg): Longint; external 'DispatchMessageA@user32.dll stdcall';

procedure AppProcessMessage;
var
Msg: TMsg;
begin
while PeekMessage(Msg, WizardForm.Handle, 0, 0, PM_REMOVE) do begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;



type

TFreeArcCallback = function (what: PAnsiChar; int1, int2: Integer; str: PAnsiChar): Integer;

function WrapFreeArcCallback (callback: TFreeArcCallback; paramcount: integer):longword;
external 'wrapcallback@files:innocallback.dll stdcall';

function FreeArcExtract (callback: longword; cmd1,cmd2,cmd3,cmd4,cmd5,cmd6,cmd7,cmd8,cmd9,cmd10: PAnsiChar): integer; external 'FreeArcExtract@files:unarc.dll cdecl';



var
ProgressBar: TNewProgressBar;
ExtractFile: TNewStaticText;
Button1: TButton;
Cancel: Integer;

procedure InitializeWizard();
begin
ProgressBar := TNewProgressBar.Create(WizardForm);
ExtractFile:=TNewStaticText.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
ProgressBar.Left := Left;
ProgressBar.Top := Top + ScaleX(55);
ProgressBar.Width := Width;
ProgressBar.Height := Height;
ProgressBar.Parent := WizardForm.InstallingPage;
ProgressBar.max := 1000;
ProgressBar.Position := 0;
ExtractFile.parent:=WizardForm.InstallingPage;
ExtractFile.autosize:=false;
ExtractFile.Width := Width;
ExtractFile.top:=Top + ScaleX(35);
ExtractFile.caption:='Распаковка архива FreeArc';
end;
end;

procedure Button1OnClick(Sender: TObject);
begin
Cancel := -1;
end;

function FreeArcCallback (what: PAnsiChar; int1, int2: Integer; str: PAnsiChar): Integer;
var percents: Integer;
begin
if string(what)='filename' then
//ExtractFile.Caption:=str
else if (string(what)='progress') and (int2>0) then begin
percents := (int1*1000) div int2;
ProgressBar.Position := percents;
ExtractFile.Caption:='Распаковано '+IntToStr(int1)+' из '+IntToStr(int2)+' мб ('+FloatToStr(percents/10)+'%)';
end;
AppProcessMessage;
Result := Cancel;
end;

procedure ExtractFreeArcArchive(arcname: String; destpath: String);
var callback: longword;
res: Integer;
begin
AppProcessMessage;
callback:=WrapFreeArcCallback(@FreeArcCallback,4); //FreeArcCallback has 4 arguments
Cancel := 0;
try
res := FreeArcExtract (callback, 'x', '-o+', '-dp'+destpath, '--', arcname, '', '', '', '', '');
if cancel<0 then
MsgBox('Installation cancelled', mbInformation, MB_OK);
if res<0 then
MsgBox('Decompression failed with error code '+IntToStr(res)+'!', mbError, MB_OK);
Button1.visible:=false;
except
MsgBox('Decompression failed!', mbError, MB_OK);
Button1.visible:=false;
end;
DeleteFile(arcname);
end;

procedure CurStepChanged(CurStep: TSetupStep);
var app: String;
begin
If CurStep=ssPostInstall then
begin
Button1:=TButton.create(WizardForm);
Button1.parent:=WizardForm;
Button1.width:=135;
Button1.caption:='Cancel installation';
Button1.left:=260;
Button1.top:=WizardForm.cancelbutton.top;
Button1.OnClick:=@Button1OnClick;

app := ExpandConstant('{app}');
ExtractFreeArcArchive(app+'\data.arc', app);
ExtractFreeArcArchive(app+'\data.arc', app);
end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:18, 09-03-2012 | #966


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


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

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


Добрый ден, перерыл все 3 Предыдущие ветки и эту, так и несмог найти ответна, вроде, элементарный вопрос:

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

Код: Выделить весь код
[Run]
Filename: "http://mi_site.ru/"
так не работает , Спасибо

Отправлено: 13:58, 09-03-2012 | #967


Старожил


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

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


Всем добрый день!Помогите пожалуйста! Я никак не могу сделать разбиение на диски в скрипте ISDone. Я пробовал сделать так, как написано в справке, но у меня нечего не получается.Просто пишет что FreeArc-архив не найден.Помогите пожалуйста решить проблему.И не получается с распаковкой архивов в зависимости от выбранных компонентов.Наверно что-то со скриптом не так(делал как сказано в справке).
Вот скрипт - http://rghost.ru/36901450

-------
Стремись не к тому, чтобы добиться успеха, а к тому, чтобы твоя жизнь имела смысл.(Альберт Эйнштейн)


Отправлено: 14:02, 09-03-2012 | #968


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

Ветеран


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

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


fackir,
Код: Выделить весь код
[CustomMessages]
english.runSVPTeam=Visit SVP-Team web-site
russian.runSVPTeam=Зайти на сайт SVP-Team

[Run]
Filename: http://www.SVP-Team.com; Description: {cm:runSVPTeam}; Flags: shellexec skipifsilent postinstall nowait Unchecked

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

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

Отправлено: 14:19, 09-03-2012 | #969


Аватара для nik1967

Старожил


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

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


fackir, или так
Код: Выделить весь код
procedure CurStepChanged(CurStep: TSetupStep);
var  
  ErrorCode: Integer;  
begin  
  if CurStep = ssDone then 
  ShellExec('open', 'http://mi_site.ru', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);  
end;

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

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

Отправлено: 14:27, 09-03-2012 | #970



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




 
Переход