Ru-Board.club
← Вернуться в раздел «Программы»

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

Автор: Genri
Дата сообщения: 07.02.2012 13:32
xanloz

Цитата:
а можно в инсталятор вставить цифровые часы с показом НН:ММ?
-- можно. Пример из разряда юмора - [more]
Код: [no]
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

[Files]
Source: InnoCallback.dll; Flags: dontcopy


Код:
type
TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);

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

function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';

function AddFontResource(FileName: PAnsiChar): Integer;
external 'AddFontResourceA@gdi32.dll stdcall';
function RemoveFontResource(FileName: PAnsiChar): BOOL;
external 'RemoveFontResourceA@gdi32.dll stdcall';

var
fstr: string;
lbl: TLabel;
buf: array of byte;
fnt: TFont;
TimerID: LongWord;
pfunc: LongWord;

procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
lbl.Caption:= GetDateTimeString('hh:nn:ss', '-', ':');
end;

procedure InitializeWizard();
var
i: longint;
begin
#include "dfont.iss"
for i:= 0 to GetArrayLength(buf)-1 do begin
fstr:= fstr + Chr(buf[i]);
end;
SaveStringToFile(ExpandConstant('{tmp}\digital.ttf'), fstr, False);
AddFontResource(ExpandConstant('{tmp}\digital.ttf'));
SendMessage(HWND_BROADCAST,$1D,0,0);
fnt:= TFont.Create;
fnt.Name:= 'Digital';
fnt.Size:= 36;

lbl := TLabel.Create(WizardForm);
lbl.Parent:= WizardForm;
lbl.Top:= ScaleY(320);
lbl.Caption:= GetDateTimeString('hh:nn:ss', '-', ':');
lbl.Font:= fnt;

pfunc:= WrapTimerProc(@OnTimer, 4);
TimerID:= SetTimer(0, 0, 1000, pfunc);
end;

procedure DeinitializeSetup();
begin
KillTimer(0, TimerID);
RemoveFontResource(ExpandConstant('{tmp}\digital.ttf'));
SendMessage(HWND_BROADCAST,$1D,0,0);
end;
[/no]
Автор: majmaster
Дата сообщения: 07.02.2012 14:21
Подскажите как убрать MsgBox "Are you sure you want completely remove *** and all of its components?"
Автор: xanloz
Дата сообщения: 07.02.2012 17:17
Genri
Спасибо!
Автор: Vselennaya
Дата сообщения: 07.02.2012 21:40
Подскажите, если пользователь переименует папку с программой после установки, как сделать, чтобы и в этом случае всё удалилось? А то удаляется только деинсталлятор
Автор: Genri
Дата сообщения: 07.02.2012 23:37
Vselennaya

Цитата:
если пользователь переименует папку с программой после установки, как сделать, чтобы и в этом случае всё удалилось?
-- т.е. пользователь переименовал папку с установленной программой и в результате не смог корректно удалить программу?? Ну так сам дурак. Следующий раз будет думать. Чтобы было время подумать, можно предусмотреть принудительное форматирование системного диска.
Теоретически, можно извратиться например через:
res:= ExtractFilePath(ExpandConstant('{uninstallexe}'));
DelTree(res, True, True, True);
... но я бы так !категорически! не рекомендовал. Уж очень опасно (можно удалить много лишнего) и очень хлипко (пользователь может перенести папку на флешку, флешку в сейф, сейф в дупл... ну вобщем понятно).
Автор: Nasgul1987
Дата сообщения: 08.02.2012 18:47
скажите плиз как настроить этот код, чтобы панель выпадала на всю станицу
сейчас панель маленькая в центе
[more]
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application


[ Code]
var
SettingPanel: TPanel;
SettingPanel_m_Timer,SettingPanel_p_Timer: TTimer;
PanelTop:Integer;


procedure NewButton1Click(Sender: TObject);
begin
case PanelTop of
-275: SettingPanel_p_Timer.Enabled:=True;
40: SettingPanel_m_Timer.Enabled:=True;
end;
end;

procedure PanelTop_p_Timer(Sender: TObject);
begin
PanelTop:=PanelTop+5;
SettingPanel.Top:=ScaleY(PanelTop);
if PanelTop=40 then
SettingPanel_p_Timer.Enabled:=False;
end;

procedure PanelTop_m_Timer(Sender: TObject);
begin
PanelTop:=PanelTop-5;
SettingPanel.Top:=ScaleY(PanelTop);
if PanelTop=- 275 then
SettingPanel_m_Timer.Enabled:=False;
end;

procedure InitializeWizard();
begin
PanelTop:= - 275;
SettingPanel_p_Timer := TTimer.Create(WizardForm);
with SettingPanel_p_Timer do
begin
Interval := 10;
Enabled:=False;
OnTimer := @PanelTop_p_Timer;
end;

SettingPanel_m_Timer := TTimer.Create(WizardForm);
with SettingPanel_m_Timer do
begin
Interval := 10;
Enabled:=False;
OnTimer := @PanelTop_m_Timer;
end;

SettingPanel := TPanel.Create(WizardForm);
with SettingPanel do
begin
Parent := WizardForm;
SetBounds(ScaleX(56),ScaleY(PanelTop),ScaleX(385),ScaleY(273))
ParentBackground := False;
end;

with TNewButton.Create(WizardForm) do
begin
Parent := WizardForm;
SetBounds(ScaleX(40),ScaleY(327),ScaleX(75),ScaleY(25))
Caption := 'open';
OnClick := @NewButton1Click;
end;
end;
[/more]
Автор: Begun999
Дата сообщения: 08.02.2012 19:38
Помогите пожалуйста!
Нужно в игру Assassin's Creed: Brotherhood установить DLC.
Как прописать путь для каждой системы Windows?

Установка:

Windows XP:
C:Documents and Settings\User Name\Application Data\UbisoftAssassin's Creed Brotherhood\SAVES

Windows Vista/Se7en:
C:Users\User Name\Saved Games\Assassin's Creed Brotherhood\SAVES
Автор: Karbid87
Дата сообщения: 08.02.2012 20:52
Извините, подскажите пожалуйста как скрыть лого на странице установки? Лого сделано с помощью iswin7logo.dll
Заранее спасибо за помощь откликнувшимся.
Автор: xanloz
Дата сообщения: 09.02.2012 00:01
Здравствуйте, можете пожалуйста помочь подключить к этому скрипту (http://rghost.ru/36447534) расширенный FreeArc. Заранее спасибо.
Автор: mdid
Дата сообщения: 09.02.2012 13:34
или хреново искал или хз..в общем пардом если что
как проверить до установки на наличие активного процесса который входит в инсталлятор?
в программе есть мьютекс
то есть я нашел CheckForMutexes
но в какой раздел его пихнуть и как заюзать?
Автор: Tapas77789
Дата сообщения: 09.02.2012 15:30
Karbid87
iswin7logo.dll какой версии?
Автор: Genri
Дата сообщения: 09.02.2012 15:39
mdid

Цитата:
как проверить до установки на наличие активного процесса который входит в инсталлятор?
-- не совсем понятно - проверять процесс самого инсталлятора (т.е. защита от повторного запуска инсталлятора, если он уже запущен) или защита от запуска инсталлятора, пока работает процесс, который проинсталлирован ранее?
Если первое, то примерно так: [more]
Код: [no]
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

[Code]
const
MyProgMutex = 'SetupMyProgMutex';

function InitializeSetup(): Boolean;
begin
if CheckForMutexes(MyProgMutex) then begin
MsgBox('My Program Setup is already running.', mbError, MB_OK);
Result := False;
end
else begin
CreateMutex(MyProgMutex);
Result := True;
end;
end;
[/no]
Автор: Karbid87
Дата сообщения: 09.02.2012 16:27
Tapas77789
версия файла iswin7logo.dll 0.5.1.0
Автор: Tapas77789
Дата сообщения: 09.02.2012 17:49
Karbid87
Вот держи
[more]procedure LogoHideShow(CurPageID: Integer);
begin
If curpageid=wpselectdir then begin
iswin7_showlogo(false);
end else begin
Iswin7_showlogo(true);
end;
end;

procedure CurPageChanged(CurPageID: Integer);
Begin
LogoHideShow(CurPageID);
end;[/more]
Автор: Begun999
Дата сообщения: 09.02.2012 22:27

Цитата:
Как прописать путь для каждой системы Windows?
Установка:
Windows XP:
C:Documents and Settings\User Name\Application Data\UbisoftAssassin's Creed Brotherhood\SAVES

Windows Vista/Se7en:
C:Users\User Name\Saved Games\Assassin's Creed Brotherhood\SAVES

Так кто-то поможет?
Автор: Nasgul1987
Дата сообщения: 09.02.2012 23:12

Begun999
из справки
тебе поможет
[more]
{group}
Путь к группе меню Пуск, который пользователь может изменить на странице Выбор папки меню Пуск. В Windows NT/2000/XP эта папка всегда создается для профилей всех пользователей, если только пользователь, устанавливающий приложение, не имеет прав администратора - в этом случае путь задается только для профиля текущего пользователя.

{localappdata}
Путь к локальной папке приложения.

{sendto}
Путь к папке Send To (общей папки Send To нет).

{userappdata} & {commonappdata}
Путь к папке с данными приложения (Application Data).

{userdesktop} & {commondesktop} *
Путь к папке рабочего стола. Лучше пользоваться {userdesktop}

{userdocs} & {commondocs}
Путь к папке Мои документы (на Windows NT 4.0 это папка Personal folder).

{userfavorites} & {commonfavorites} *
Путь к папке Избранное. Для использования включите MinVersion не меньше "4.1, 4". Только Windows 2000, Me, и позднее поддерживают {commonfavorites}; на других Windows {commonfavorites} = {userfavorites}.

{userprograms} & {commonprograms} *
Путь к папке Программы меню Пуск.

{userstartmenu} & {commonstartmenu} *
Путь к "корню" меню Пуск.

{userstartup} & {commonstartup} *
Путь к папке Автозагрузка меню Пуск.

{usertemplates} & {commontemplates} *
Путь к папке шаблонов. Только Windows 2000, Me, и позже поддерживают {commontemplates}; на других Windows, {commontemplates} = {usertemplates}.
[/more]

я писал выше свою проблему
подскажите пожалуйста, если кто может
Автор: troyan90
Дата сообщения: 09.02.2012 23:45
Nasgul1987

Цитата:
скажите плиз как настроить этот код, чтобы панель выпадала на всю станицу

[more]
Код: [_Code]
var
SettingPanel: TPanel;
SettingPanel_m_Timer,SettingPanel_p_Timer: TTimer;

procedure NewButton1Click(Sender: TObject);
begin
SettingPanel_m_Timer.Enabled:=False; SettingPanel_p_Timer.Enabled:=False;

if SettingPanel.Top<0 then SettingPanel_p_Timer.Enabled:=True;
if SettingPanel.Top>-1 then SettingPanel_m_Timer.Enabled:=True;
end;

procedure PanelTop_p_Timer(Sender: TObject);
begin
SettingPanel.Top:=ScaleY(SettingPanel.Top + 5);
if SettingPanel.Top>-1 then
SettingPanel_p_Timer.Enabled:=False;
end;

procedure PanelTop_m_Timer(Sender: TObject);
begin
SettingPanel.Top:=ScaleY(SettingPanel.Top - 5);
if SettingPanel.Top<-314 then
SettingPanel_m_Timer.Enabled:=False;
end;

procedure InitializeWizard();
begin
SettingPanel_p_Timer := TTimer.Create(WizardForm);
with SettingPanel_p_Timer do
begin
Interval := 1;
Enabled:=False;
OnTimer := @PanelTop_p_Timer;
end;

SettingPanel_m_Timer := TTimer.Create(WizardForm);
with SettingPanel_m_Timer do
begin
Interval := 1;
Enabled:=False;
OnTimer := @PanelTop_m_Timer;
end;

SettingPanel := TPanel.Create(WizardForm);
with SettingPanel do
begin
Parent := WizardForm;
SetBounds(ScaleX(0),ScaleY(-315),ScaleX(497),ScaleY(313));
ParentBackground := False;
end;

with TNewButton.Create(WizardForm) do
begin
Parent := WizardForm;
SetBounds(ScaleX(40),ScaleY(327),ScaleX(75),ScaleY(25))
Caption := 'open';
OnClick := @NewButton1Click;
end;
end;
Автор: Tapas77789
Дата сообщения: 09.02.2012 23:58
Begun999
Вот пробуй
Автор: Nasgul1987
Дата сообщения: 10.02.2012 00:47
troyan90
вот спасибо тебе!
то что нужно
Автор: Percey123
Дата сообщения: 10.02.2012 09:23
Помогите, пожалуйста. Как сделать вот такой пунктир между чекбоксами (отмечен на картинке стрелкой)?

Автор: Tapas77789
Дата сообщения: 10.02.2012 10:11
Percey123
Setup
TaskTreeView=true
Автор: Percey123
Дата сообщения: 10.02.2012 11:01
Tapas77789
Спасибо.
Автор: mdid
Дата сообщения: 10.02.2012 11:08
Genri
спасибо...разобрался..сделал отдельную страницу(page) для проверки процессов которых не должно быть..вопрос в другом..выложите кто то HWREQ от Shegorat..а то в шапке ссыль мертвая...написал автору но хз когда он зайдет на форум

ааа...отбой..пардон...видимо автор все таки зашел...появилось зеркало... Shegorat спасибо
Автор: Genri
Дата сообщения: 10.02.2012 11:33
mdid

Цитата:
сделал отдельную страницу(page) для проверки процессов которых не должно быть
-- на всякий случай, один из вариантов проверки: http://raz-soft.com/display-english-posts-only/files-in-use-extension-for-inno-setup

Автор: Karbid87
Дата сообщения: 10.02.2012 11:39
Tapas77789
всё работает. благодарен
Автор: AleksanderGaMeR
Дата сообщения: 10.02.2012 11:43
Есть проблема, хочу в скрипт вшить выбор NoDVD, не могу понять как это сделать? Можете ли вы мне помочь, господа?

Вот скрипт!
http://rghost.ru/36442285

Нужно чтобы в том месте, где выбор Доп. Комплектующих был выбор NoDVD . Помогите пожалуйста
Автор: mdid
Дата сообщения: 10.02.2012 13:38
Genri
спасибо..круто смотрится..но пока это не надо..рано еще такое))

Подскажите плиз как выбрать текущий вид установки
есть такой код

Код: [Types]
Name: "Install"; Description: "Установка"
Name: "Update"; Description: "Обновление"
Name: "Custom"; Description: "Свой выбор"; Flags: iscustom

[Components]
Name: "program"; Description: "Основные файлы программы"; Types: Install Update custom; Flags: fixed
Name: "Settings"; Description: "Файлы настроек"; Types: Install
Name: "Reports"; Description: "Файлы отчетов"; Types: Install Update
Name: "Mainini"; Description: "Файл Main.ini"; Types: Install
Автор: Genri
Дата сообщения: 10.02.2012 14:23
mdid

Цитата:
как выбрать текущий вид установки...
...как выбрать обновление программно?
-- не совсем понимаю, что значит "выбрать обновление программно"? Т.е. вне зависимости от того, что выбрал пользователь, в зависимости от проверки ставить либо полный софт, либо обновление? Но зачем тогда вообще пользователя заставлять выбирать?
Если имеется ввиду другое - не дать пользователю выбрать обновление, если софт не установлен, а если установлен, не дать выбрать полную установку, то можно например так: [more]
Код: [no]
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

[Types]
Name: "Install"; Description: "Установка"; Check: MyProgCheck('full')
Name: "Update"; Description: "Обновление"; Check: MyProgCheck('update')
Name: "Custom"; Description: "Свой выбор"; Flags: iscustom

[Components]
Name: "program"; Description: "Основные файлы программы"; Types: Install Update custom; Flags: fixed
Name: "Settings"; Description: "Файлы настроек"; Types: Install
Name: "Reports"; Description: "Файлы отчетов"; Types: Install Update
Name: "Mainini"; Description: "Файл Main.ini"; Types: Install

[Code]
function MyProgCheck(SetupTupe: String): Boolean;
begin
case SetupTupe of
'full' : Result:= Not DirExists('C:\TEMP');
'update': Result:= DirExists('C:\TEMP');
end;
end;
[/no]
Автор: AleksanderGaMeR
Дата сообщения: 10.02.2012 14:59

Цитата:
Есть проблема, хочу в скрипт вшить выбор NoDVD, не могу понять как это сделать? Можете ли вы мне помочь, господа?
 
Вот скрипт!
http://rghost.ru/36442285
 
Нужно чтобы в том месте, где выбор Доп. Комплектующих был выбор NoDVD . Помогите пожалуйста



Мне кто то поможет?
Автор: Tapas77789
Дата сообщения: 10.02.2012 15:40
AleksanderGaMeR
Для того чтоб тебе помоч надо иметь скрипт с файломи,чтоб можно было откомпилировать и проверить результат, всели работает.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

Предыдущая тема: поиск


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.