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

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

Автор: milwaukeeman
Дата сообщения: 17.02.2009 14:21
Что за БАТНИК?
Автор: Raf_SE
Дата сообщения: 17.02.2009 15:20

Цитата:
Мне нужно после установки удалилась папка со всеми файлами.

Играйся с параметром [InstallDelete]


Цитата:
Как сделать чтоб при установке показывалось два Process Bar?
как в играх с free-torrents.org

На ФТО много игр...

И вобще, читай в шабке
Цитата:
Примечание для всех участников

Объёмные скрипты или части кода заключайте в тег more, чтобы ваш вопрос в сообщении не затерялся среди множества строк прилагаемого скрипта.



Добавлено:
milwaukeeman
файл в формате .bat. Гугля в помощь.
Автор: Studio13 OutlaW
Дата сообщения: 17.02.2009 15:39
milwaukeeman
Далеко ходить не надо http://forum.ru-board.com/topic.cgi?forum=5&topic=25393&start=2000#lt
Автор: milwaukeeman
Дата сообщения: 17.02.2009 16:00
Еще раз говорю. чтоб удалял папку только после нажатия Завершить
Автор: skeptik_vdm
Дата сообщения: 17.02.2009 16:25
Помогите пожалуйста это реализовать (то что обведено в красную рамку)
Автор: GRom V
Дата сообщения: 17.02.2009 16:40
Офигеть стоит вставить кусок кода и инсталлятор сразу опасен!?

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

[Setup]
AppId={{3486693E-E32C-404B-BB54-7CEC4482215C}
AppName={#MyAppName}
AppVerName={#MyAppVerName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: english; MessagesFile: compiler:Default.isl

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked

[Files]
Source: C:\Program Files\Inno Setup Pack\Compiler\Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

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

[Run]
Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#MyAppName}}; Flags: nowait postinstall skipifsilent

[Code]
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpWelcome then
begin
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;
end;
Автор: de_MAX
Дата сообщения: 17.02.2009 16:58

Цитата:
На ФТО много игр...

Наверное имелись ввиду те, где используется freearc(+precomp), там идет прогресс распаковки в отдельный прогрессбар. Вот мне бы тоже было интересно посмотреть на такой скриптик.
Автор: Raf_SE
Дата сообщения: 17.02.2009 17:20
milwaukeeman
А мы тебе о чем говорим? O_o

de_MAX
Я не видел. Дай скриншот, любопытства ради. И посмотри ли на Inno Setup сделана та инсталляха.
Автор: LordVeider
Дата сообщения: 17.02.2009 19:13

Цитата:
Наверное имелись ввиду те, где используется freearc(+precomp), там идет прогресс распаковки в отдельный прогрессбар. Вот мне бы тоже было интересно посмотреть на такой скриптик.
Речь идёт о репаках за авторством zloyded.
Сделаны они действительно в IS.
Вроде даже деда спрашивали, и скриптом он делиться отказался. Но это уже на уровне слухов...
Автор: Sig666
Дата сообщения: 17.02.2009 20:09
Ну а что тут сложного. Создаем прогрессбар и двигаем его по мере выполнения строк кода

exec(...)
progressbar.position:=progressbar.position+1
exec(...)
progressbar.position:=progressbar.position+1

и т.д.

или

[Run]
Filename: prog1.exe; AfterInstall: moveprogress
Filename: prog2.exe; AfterInstall: moveprogress

[Соde]
procedure moveprogress;
begin
progressbar.position:=progressbar.position+1
end;
Автор: milwaukeeman
Дата сообщения: 17.02.2009 21:07
А что насчет удаления папки после установки?
Автор: Sig666
Дата сообщения: 17.02.2009 21:40
После нажатия "Завершить" это так

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
DelTree(ExpandConstant('{app}\'), True, True, True);
end;
Автор: milwaukeeman
Дата сообщения: 17.02.2009 21:49

Цитата:
После нажатия "Завершить" это так

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
DelTree(ExpandConstant('{app}\'), True, True, True);
end;


как мне вот с этим объеденить?

rocedure CurStepChanged(CurStep: TSetupStep);
var
pfunc: LongWord;
begin
if CurStep = ssInstall then
begin
pfunc:= WrapTimerProc(@OnTimer, 4);
TimerID:= SetTimer(0, 0, 20, pfunc);
end;
end;
Автор: Studio13 OutlaW
Дата сообщения: 17.02.2009 22:31
procedure CurStepChanged(CurStep: TSetupStep);

var
pfunc: LongWord;
begin
if CurStep = ssInstall then
begin
pfunc:= WrapTimerProc(@OnTimer, 4);
TimerID:= SetTimer(0, 0, 20, pfunc);
end;
begin
if CurStep = ssDone then
DelTree(ExpandConstant('{app}\'), True, True, True);
end
end;

примерно так
Автор: Jetr0
Дата сообщения: 17.02.2009 22:32
milwaukeeman приблизительно вот так:

procedure CurStepChanged(CurStep: TSetupStep);
var
pfunc: LongWord;
begin
if CurStep = ssInstall then
begin
pfunc:= WrapTimerProc(@OnTimer, 4);
TimerID:= SetTimer(0, 0, 20, pfunc);
end
begin
if CurStep = ssDone then
DelTree(ExpandConstant('{app}\'), True, True, True);
end
end;

А кто сможет помочь мне с кодом?
Автор: Didgik
Дата сообщения: 18.02.2009 04:01
Народ, вопрос )
Пытаюсь сделать выбор дополнительной директории, на кнопке выбора висит:

procedure BaseOnClick(Sender: TObject);
var
res: Boolean;
UserSelectDir: String;
begin
UserSelectDir:= WizardForm.DirEdit.Text;
res:= BrowseForFolder('Выберите директорию', UserSelectDir, False);
if res then
begin
Edit1.Text:= UserSelectDir;
end;
end;
Однако окно выбора папки выдается не совсем такое, как при стандартной кнопке Обзор...
Как вызвать нормальное окно?
Автор: milwaukeeman
Дата сообщения: 18.02.2009 08:22
как сделать так, чтоб программа установки сама определяла путь к ранее установленному приложению.
спасибо.
Автор: Jetr0
Дата сообщения: 18.02.2009 08:54
milwaukeeman через реестр. В реестре нужно найти ключ, в котором прописан путь к программе, а потом сделать приблизительно так:


Код: DefaultDirName={reg:HKLM\Software\My Program, Path}
Автор: milwaukeeman
Дата сообщения: 18.02.2009 09:34
Не получается*
Помогите

DefaultDirName={reg:HKLM\SOFTWARE\7-Zip, "Path"="C:\Program Files\7-Zip"}
Автор: Jetr0
Дата сообщения: 18.02.2009 10:05
milwaukeeman

Код: DefaultDirName={reg:HKLM\SOFTWARE\7-Zip,Path}
Автор: milwaukeeman
Дата сообщения: 18.02.2009 10:14
все нормально
я все усложнил как всегда


Код: DefaultDirName={reg:HKLM\SOFTWARE\7-Zip,Path}
Автор: SotM
Дата сообщения: 18.02.2009 10:27
milwaukeeman
Ты хоть элементарные вещи сначала бы почитал...

Тебе ведь добрые люди написали выше. Зачем переспрашивать по сто раз?

DefaultDirName={reg:HKLM\SOFTWARE\7-Zip, Path}

И переменная Path будет уже содержать "C:\Program Files\7-Zip".
Автор: milwaukeeman
Дата сообщения: 18.02.2009 10:28
Я написал это в то же время как он
Автор: Jetr0
Дата сообщения: 18.02.2009 11:05
Два листа назад я попросил помощи, но так никто и не помог. Напишу еще раз:

Есть софтина, при её установке создается ветвь реестра

Код: HKLM\SOFTWARE\programname\1
Автор: noiseless
Дата сообщения: 18.02.2009 11:18
Jetr0
А если программа использует этот путь для чего-то? И ищет в реестре именно этот путь? Т.е. с другим путем она работать не будет.
Автор: Jetr0
Дата сообщения: 18.02.2009 11:56
noiseless
Нет, все правильно, каждая новая копия программы должна иметь номер ветки больше за предыдущую. Этот путь используется для установки обновлений. Обновление цепляется к ветке "HKLM\SOFTWARE\programname\", потом считывает во всех ветках типа 1, 2, 3 и тд, путь к установленным копиям программы.
Автор: milwaukeeman
Дата сообщения: 18.02.2009 11:59
Подскажите есть в этом мире программа снимка реестра рабочая*
regshot 1.7 в Vista 64 зависает.
версия 2.0 создает пустые ключи\
что делать?
Автор: noiseless
Дата сообщения: 18.02.2009 12:58
Jetr0
Просто хочется понять как это происходит "ручками"
Вот берется дистрибутив и устанавливается. При этом создается ветка в реестре "HKLM\SOFTWARE\programname\1", так? Потом если второй раз запустить ту же установку, она что предложит? Удалить установленную программу или же установить в ту же директорию и при этом новая ветка в реестре создатся или перезапишет старую (т.е. обновит)?

milwaukeeman
Не тот раздел однако
RegMon попробуй
Автор: EagleSH
Дата сообщения: 18.02.2009 13:30
milwaukeeman
забудь про слепки в х64 системе, сам перепробывал кучу подобных программ, ни одна не работает в ней, поэтому когда мне нужно - с образа восстанавливаю х32...
Автор: Qarma
Дата сообщения: 18.02.2009 13:53
Люди помогите, что тут нужно сделать чтобы архив 7z разархивировался, где прописать его путь?
Вот скрипт:

[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
Compression=lzma/ultra64
OutputDir=C:\test
[Languages]
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"


[Files]
Source: c:\Fraps\*; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: c:\is7z.dll; DestDir: {tmp}; Flags: dontcopy
Source: c:\InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy

[Icons]
Name: "{group}\Óäàëèòü"; IconFilename: "{app}\unins000.exe"; Filename: "{app}\unins000.exe"

[Code]
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
ProgressBar : TNewProgressBar;
TimerID: LongWord;
pfunc: LongWord;
Label1:tlabel;

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';
procedure Extract7z (hWnd: THandle; fpath,sourceDir:pchar); external 'Extract7z@files:is7z.dll stdcall';
function progress:integer; external 'progress@files:is7z.dll stdcall';
function progressmax:integer; external 'progressmax@files:is7z.dll stdcall';

procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
progressbar.Max:=progressmax;
progressbar.Position:=progress;
end;


procedure InitializeWizard();
begin
ProgressBar := TNewProgressBar.Create(WizardForm);
label1:=Tlabel.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.Position := 0;
label1.parent:=WizardForm.InstallingPage;
label1.top:=Top + ScaleX(35);
label1.caption:='Ðàñïàêîâêà ôàéëîâ...';
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssPostInstall then
begin
pfunc:=WrapTimerProc(@OnTimer, 4)
TimerID:=SetTimer(0, 0, 200, pfunc)
Extract7z (wizardform.handle, ExpandConstant('{src}') + '\files.7z', ExpandConstant('{app}'));
end
end;

procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpFinished then KillTimer(0, TimerID);
end;


ВСЁ, ПОНЯЛ, ПОМОЩИ НЕ НАДО

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: в очередной раз босудим антивиры?


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