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

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

Автор: NightW0lf
Дата сообщения: 08.03.2007 10:41
MKN

Цитата:
Поделитесь пожалуйста русификатором для ScriptMaker (ссылки в шапке не рабочие...)

Все можешь качать теперь из шапки я ее обновил!
P.S.: пароль как и был - ruboard
Автор: Genri
Дата сообщения: 08.03.2007 10:51
Nagual
Цитата:
исходные файлы должны браться по пути из реестра
-- т.е. фактически копирование из одного места (путь в реестре), в другое (путь установки) ?
Автор: Nagual
Дата сообщения: 08.03.2007 10:55
Genri
да, именно так, но уточню немного, копирование из пути в реестре в путь в реестре
опишу подробнее, файлы эти находятся в системе, путь их можно вычислить из реестра, обновляются на серваке, задача: скопировать эти файлы в инталлятор, чтобы раскидать их потом на машинах пользаков, путь у пользаков может быть другой, точный путь дает значение в реестре, и еще, можно сделать проверку на начилие папки установленной программы в реестре, и, при отсутствии таковой, вывести сообщение о том, что программа, которую вы пытаетесь обновить, у вас не установлена? защита от дурака, такскть
а после успешного копирования, проиграть звуковой файл, расположенный там же (то есть в пути реестра)
вот такая сложная задача
немного сумбурно все описал... спс
Автор: Genri
Дата сообщения: 08.03.2007 11:23
Nagual -- т.е. выходит задачи две:
1. На этапе компиляции, прочитать из реестра на машине, где происходит компиляция, пути и имена файлов и эти файлы включить в дистрибутив.
2. При установке, прочитать из реестра на машине, где происходит установка, пути и имена файлов и установить файлы из дистрибутива по найденным путям.

Если так, то вопросы:

1. На всех машинах, в реестре общая часть для поиска HKLM\SOFTWARE\xxx\xxx\4.0 ?
2. Кол-во файлов и их имена неизвестны ?
3. Что делать, если при компиляции, путь найден, а файла нет ? Игнорировать или выдавать ошибку ?
4. Что делать если в дистрибутив вошло больше файлов, чем найдено путей на машине пользователя ? Остальные игнорировать или выдавать ошибку ?
5. Что делать, если файлы на машине пользователя более новые, чем в дистрибутиве ?
Автор: Nagual
Дата сообщения: 08.03.2007 11:35
Genri
1. да, пути к программе, записанные в реестре на всех машинах -- константа
2. файлов 3, имена известны, одинаковы на всех машинах и названия их не меняются, допустим пусть будут file1, file2 и file3
3. такого в данном случае быть не может, лучше игнорировать и записать файл по указанному пути (для надежности)
4. такого не может быть, количесво файлов жестко определено, их 3, раписывается все, как я понял, так
{reg:HKLM\SOFTWARE\xxx\xxx\4.0,Folder}\file1
{reg:HKLM\SOFTWARE\xxx\xxx\4.0,Folder}\file2
{reg:HKLM\SOFTWARE\xxx\xxx\4.0,Folder}\file3
5. такого тоже не может быть, потому что обновления происходят на серваке в первую очередь, но если все таки это случилось, тогда лучше оставить все как есть, то есть не заменять более новые файлы более старыми
спс
Автор: Chuvakstepan
Дата сообщения: 08.03.2007 11:41
А мне никто не сможет помочь? Смотреть в начале страницы
Автор: NightW0lf
Дата сообщения: 08.03.2007 13:18
Chuvakstepan

Цитата:
Нужно чтобы три кнопки управления музыкой меняли свое расположение так же как форма процесса инсталляции (внизу справа, см. руководство). А то окошко инсталляции стало маленьким, и не видно кнопок, хотя они есть

У меня можно сказать так получилось [но очень коряво - но суть есть], НО много всяких косяков. Например - после завершения установки [страница wpFinished] окно мастера установки должно вернуться на место а именно в центр и вернуть свой исходный размер - но почемуто не получается.

[more=Вот мои на роботки]

Код:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
;Библиотека для возможности проигрывания .mp3 музыки
Source: "bass.dll"; DestDir: "{tmp}"; Flags: dontcopy noencryption nocompression

;.mp3 музыка
Source: "Human1.mp3"; DestDir: "{tmp}"; Flags: dontcopy noencryption nocompression

[Code]
const
BACKGROUND = 6; // "5"-по центру, "6"-растянуто на весь экран, "1,2,3,4"-в разных углах экрана
TIMER = 16;

BASS_ACTIVE_STOPPED = 0;
BASS_ACTIVE_PLAYING = 1;
BASS_ACTIVE_STALLED = 2;
BASS_ACTIVE_PAUSED = 3;
BASS_SAMPLE_LOOP = 4;

var
mp3Handle: HWND;
mp3Name: string;
Splash: TSetupForm;


function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean;
external 'BASS_Init@files:BASS.dll stdcall delayload';

function BASS_StreamCreateFile(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): DWORD;
external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';

function BASS_Start(): Boolean;
external 'BASS_Start@files:BASS.dll stdcall delayload';

function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean;
external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';

function BASS_ChannelIsActive(handle: DWORD): Integer;
external 'BASS_ChannelIsActive@files:BASS.dll stdcall delayload';

function BASS_ChannelPause(handle: DWORD): Boolean;
external 'BASS_ChannelPause@files:BASS.dll stdcall delayload';

function BASS_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';

function BASS_Pause(): Boolean;
external 'BASS_Pause@files:BASS.dll stdcall delayload';

function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';


function GetSystemMetrics(nIndex: Integer): Integer;
external 'GetSystemMetrics@user32.dll stdcall';

function isxbb_AddImage(Image: PChar; Flags: Cardinal): Integer;
external 'isxbb_AddImage@files:isxbb.dll stdcall';

function isxbb_Init(hWnd: Integer): Integer;
external 'isxbb_Init@files:isxbb.dll stdcall';

function isxbb_StartTimer(Seconds: Integer; Flags: Cardinal): Integer;
external 'isxbb_StartTimer@files:isxbb.dll stdcall';

function isxbb_KillTimer(Flags: Cardinal): Integer;
external 'isxbb_KillTimer@files:isxbb.dll stdcall';


{ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * }
{ * * * * * * * * * * * * * * * * * [Кнопка создать новую папку в при выборе директории установки] * * * * * * * * * * }
{ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * }
procedure DirOnClick(Sender: TObject);
var
res: Boolean;
UserSelectDir: string;
begin
UserSelectDir := WizardForm.DirEdit.Text;
res := BrowseForFolder('Выберите папку из списка и нажмите «ОК»', UserSelectDir, True);
if res then
begin
WizardForm.DirEdit.Text := UserSelectDir;
end;
end;
{ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * }
{ * * * * * * * * * * * * * * * * * [Кнопка "создать новую папку" при выборе директории установки] * * * * * * * * * * }
{ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * }


procedure PlayButtonOnClick(Sender: TObject);
begin
case BASS_ChannelIsActive(mp3Handle) of
BASS_ACTIVE_PAUSED:
begin
BASS_ChannelPlay(mp3Handle, False);
end;
BASS_ACTIVE_STOPPED:
begin
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
end;
end;
end;


procedure PauseButtonOnClick(Sender: TObject);
begin
BASS_ChannelPause(mp3Handle);
end;


procedure StopButtonOnClick(Sender: TObject);
begin
BASS_Stop();
BASS_Free();
end;




//при запуске инсталлятора выполняем вот этот код:

procedure InitializeWizard();
var
Form: TSetupForm;
ProgressBar: TNewProgressBar;
CancelButton: TButton;
StaticText: TNewStaticText;
BitmapImage: TBitmapImage;
BitmapFileName: string;
i: Integer;
BackgroundBitmapImage: TBitmapImage;
s: string;
width, height: Integer;
License: string;
Readmerus: string;
Name1: string;
i: Integer;
PlayButton, PauseButton, StopButton: TButton;
Text: TNewStaticText;
Panel1: TPanel;
begin
WizardForm.DirBrowseButton.OnClick := @DirOnClick;
Form := CreateCustomForm();
try
with Form do
begin
ClientWidth := ScaleX(380);
ClientHeight := ScaleY(120);
BorderStyle := bsDialog;
Left := GetSystemMetrics(16) - ClientWidth - ScaleX(12);
Top := GetSystemMetrics(17) - ClientHeight - ScaleY(12);
Caption := 'Inno Setup Wizard' //Заголовок мини ProgressBar'a
end;
WizardForm.Position := poScreenCenter;
MainForm.BORDERSTYLE := bsNone;

{****************************************** [Для корректного отображения "License.rtf"] *********************************}
ExtractTemporaryFile('License.rtf');
LoadStringFromFile(ExpandConstant('{tmp}') + '\License.rtf', License)
WizardForm.LicenseMemo.RTFText := License;
{****************************************** [Для корректного отображения "License.rtf"] *********************************}


{****************************************** [Для корректного отображения "Readme_rus.rtf"] ******************************}
ExtractTemporaryFile('Readme_rus.rtf');
LoadStringFromFile(ExpandConstant('{tmp}') + '\Readme_rus.rtf', Readmerus)
WizardForm.InfoBeforeMemo.RTFText := Readmerus;
{****************************************** [Для корректного отображения "Readme_rus.rtf"] ******************************}

width := GetSystemMetrics(0);
height := GetSystemMetrics(1);
MainForm.Width := width;
MainForm.Height := height;
width := MainForm.ClientWidth;
height := MainForm.ClientHeight;
ExtractTemporaryFile('Fon.bmp');
s := ExpandConstant('{tmp}') + '\Fon.bmp';
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Left := 0;
BackgroundBitmapImage.Top := 0;
BackgroundBitmapImage.Width := width;
BackgroundBitmapImage.Height := height;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch := True;
MainForm.Visible := True;

MainForm.Left := 0;
MainForm.Top := 0;

BitmapFileName := ExpandConstant('{tmp}\xxxx.bmp');
ExtractTemporaryFile(ExtractFileName(BitmapFileName));
BitmapImage := TBitmapImage.Create(Form);
BitmapImage.Left := ScaleX(8);
BitmapImage.Top := ScaleY(8);
BitmapImage.AutoSize := True;
BitmapImage.Bitmap.LoadFromFile(BitmapFileName);
BitmapImage.Parent := Form;

StaticText := TNewStaticText.Create(Form);
StaticText.Top := BitmapImage.Top;
StaticText.Left := BitmapImage.Left + BitmapImage.Width + ScaleX(8)
StaticText.Caption := 'Идет подготовка к запуску мастера Inno Setup Wizard,' +
+#10#13 + 'выполняющего установку xxxxx.' + #10#13 + 'Пожалуйста подождите.'; //Текст самого мини ProgressBar'a
StaticText.AutoSize := True;
StaticText.Parent := Form;

CancelButton := TButton.Create(Form);
CancelButton.Parent := Form;
CancelButton.Width := ScaleX(75);
CancelButton.Height := ScaleY(23);
CancelButton.Left := Form.ClientWidth - ScaleX(75 + 10);
CancelButton.Top := Form.ClientHeight - ScaleY(23 + 10);
CancelButton.Caption := 'Отмена'; //Название кнопки "Отмена"
CancelButton.ModalResult := mrCancel;
CancelButton.Cancel := True;
begin
//Вставляем наш пароль в поле ввода
WizardForm.PasswordEdit.Text := 'пароль:Ю±°єnhfjgn38ynh0946opuh94*^4yt73b64by847__95ng4j3©™€ЇЏ‡€';
begin
with WizardForm do begin
with MainPanel do
Height := Height - 1;
with WizardSmallBitmapImage do begin
Left := 0;
Top := 0;
Height := 58; //Размер рисунка
Width := 150; //
end;
with PageNameLabel do begin
Width := Width - 0; //Поставьте здесь значения на 0 если хотите вернуть текст
Left := Left + 100; //
end;
with PageDescriptionLabel do begin
Width := Width - 0; //Поставьте здесь значения на 0 если хотите вернуть текст
Left := Left + 100; //
begin
Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
Panel1.Parent := WizardForm;
Panel1.Left := ScaleX(1);
Panel1.Top := ScaleY(315);
Panel1.Width := ScaleX(165);
Panel1.Height := ScaleY(46);
Panel1.TabOrder := 0;
Panel1.Color := clWhite;
Panel1.BevelInner := bvLowered;
Panel1.BevelOuter := bvRaised;
Panel1.BorderStyle := bsSingle;

PlayButton := TButton.Create(WizardForm);
PlayButton.Left := 5;
PlayButton.Top := 335;
PlayButton.Width := 50;
PlayButton.Height := 20;
PlayButton.Caption := 'play';
PlayButton.OnClick := @PlayButtonOnClick;
PlayButton.Parent := WizardForm;
PlayButton.Cursor := crHand;

PauseButton := TButton.Create(WizardForm);
PauseButton.Left := 58;
PauseButton.Top := 335;
PauseButton.Width := 50;
PauseButton.Height := 20;
PauseButton.Caption := 'pause';
PauseButton.OnClick := @PauseButtonOnClick;
PauseButton.Parent := WizardForm;
PauseButton.Cursor := crHand;

StopButton := TButton.Create(WizardForm);
StopButton.Left := 111;
StopButton.Top := 335;
StopButton.Width := 50;
StopButton.Height := 20;
StopButton.Caption := 'stop';
StopButton.OnClick := @StopButtonOnClick;
StopButton.Parent := WizardForm;
StopButton.Cursor := crHand;

Text := TNewStaticText.Create(WizardForm);
Text.Caption := 'music';
Text.Parent := WizardForm;
Text.Font.Style := Text.Font.Style + [fsUnderline];
Text.Font.Color := clNavy;
Text.Top := 319;
Text.Left := 71;
Text.Color := clWhite;
end;
end;
end;
end;
end;
end;


//Мини ProgressBar
ProgressBar := TNewProgressBar.Create(Form);
with ProgressBar do
begin
Height := CancelButton.Height - ScaleY(8);
Width := Form.Width - ScaleX(128);
Top := CancelButton.Top;
Left := BitmapImage.Left;
Parent := Form;
Min := 0;
Max := 30;
Position := 0;
end;
Form.ActiveControl := CancelButton;
Form.Show();
for i := 0 to 30 do
begin
Splash.Close;
ProgressBar.Position := i;
Form.Repaint;
Sleep(100);
i := i + 1;
end;
finally
Form.Free();
end;
end;





//Изменяем диалог установки
procedure CurPageChanged(CurPageID: Integer);
var
Name1: string;
PlayButton, PauseButton, StopButton: TButton;
Text: TNewStaticText;
Panel1: TPanel;
i: Integer;
begin
//При установке юзер не поймает пароль по маске
if CurPageID = wpPassword then
begin
SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
end;
begin
if CurPageID = wpWelcome then
begin
if WizardForm.FindComponent('NextButton') is TButton
then
TButton(WizardForm.FindComponent('NextButton')).Caption := 'Вперед ->'; //текст
if WizardForm.FindComponent('CancelButton') is TButton
then
TButton(WizardForm.FindComponent('CancelButton')).Caption := 'Выход'; //текст
if mp3Handle = 0 then
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('Human1.mp3');
mp3Name := ExpandConstant('{tmp}\Human1.mp3');
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
end;
end;
end;
begin
if CurPageID = wpReady then
begin
if WizardForm.FindComponent('CancelButton') is TButton
then
TButton(WizardForm.FindComponent('CancelButton')).Caption := 'Выход'; //текст
end;
end;
begin
if CurPageID = wpInstalling
then
begin
Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
Panel1.Parent := WizardForm;
Panel1.Left := ScaleX(1);
Panel1.Top := ScaleY(60);
Panel1.Width := ScaleX(165);
Panel1.Height := ScaleY(60);
Panel1.TabOrder := 0;
Panel1.Color := clWhite;
Panel1.BevelInner := bvLowered;
Panel1.BevelOuter := bvRaised;
Panel1.BorderStyle := bsSingle;

PlayButton := TButton.Create(WizardForm);
PlayButton.Left := 5;
PlayButton.Top := 60;
PlayButton.Width := 50;
PlayButton.Height := 20;
PlayButton.Caption := 'play';
PlayButton.OnClick := @PlayButtonOnClick;
PlayButton.Parent := WizardForm;
PlayButton.Cursor := crHand;

PauseButton := TButton.Create(WizardForm);
PauseButton.Left := 58;
PauseButton.Top := 60;
PauseButton.Width := 50;
PauseButton.Height := 20;
PauseButton.Caption := 'pause';
PauseButton.OnClick := @PauseButtonOnClick;
PauseButton.Parent := WizardForm;
PauseButton.Cursor := crHand;

StopButton := TButton.Create(WizardForm);
StopButton.Left := 111;
StopButton.Top := 50;
StopButton.Width := 50;
StopButton.Height := 20;
StopButton.Caption := 'stop';
StopButton.OnClick := @StopButtonOnClick;
StopButton.Parent := WizardForm;
StopButton.Cursor := crHand;

Text := TNewStaticText.Create(WizardForm);
Text.Caption := 'music';
Text.Parent := WizardForm;
Text.Font.Style := Text.Font.Style + [fsUnderline];
Text.Font.Color := clNavy;
Text.Top := 50;
Text.Left := 71;
Text.Color := clWhite;
begin
WizardForm.MainPanel.Visible := False;
WizardForm.Bevel1.Visible := False;
WizardForm.Width := ScaleX(410);
WizardForm.Height := ScaleY(142);
//Здесь смещение страницы установки (в нижнем левом углу)
WizardForm.Left := ScaleX(MainForm.Left + 20);
WizardForm.Top := ScaleY(MainForm.Height - 170);

{Внимание! Нижеописанные способы смещения работают только когда вставлено фоновое изображение или WindowVisible=yes}
{Выводит в правом верхнем углу экрана}
//WizardForm.Left:=ScaleX(MainForm.Width-420);
//WizardForm.Top:=ScaleY(MainForm.Left+20);

{Выводит в левом верхнем углу экрана}
//WizardForm.Left := ScaleX(0);
//WizardForm.Top := ScaleY(0);

{Выводит снизу по центру экрана}
//WizardForm.Position:=poScreenCenter;
//WizardForm.Top:=ScaleY(MainForm.Height-170);

{Выводит в нижнем левом углу (как в Doom 3 Resurrection of Evil от 1C)}
//WizardForm.Left:=ScaleX(MainForm.Left+20);
//WizardForm.Top:=ScaleY(MainForm.Height-170);

{Выводит в нижнем правом углу}
//WizardForm.Left:=ScaleX(MainForm.Width-420);
//WizardForm.Top:=ScaleY(MainForm.Height-170);

WizardForm.InnerNotebook.Left := ScaleX(10);
WizardForm.InnerNotebook.Top := ScaleY(10);
WizardForm.InnerNotebook.Width := ScaleX(370);
WizardForm.StatusLabel.Left := ScaleX(0);
WizardForm.StatusLabel.Top := ScaleY(0);
WizardForm.StatusLabel.Width := WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left := ScaleX(0);
WizardForm.FileNameLabel.Top := ScaleY(20);
WizardForm.FileNameLabel.Width := WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top := ScaleY(40);
WizardForm.ProgressGauge.Width := WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left := ScaleX(154);
WizardForm.CancelButton.Top := ScaleY(80);
end
if CurPageID = wpFinished
then
begin
WizardForm.Width := 502; {Размер окна по горизонтали}
WizardForm.Height := 392; {Размер окна по вертикали}
WizardForm.Position := poScreenCenter; {Возврат в исходное состояние}
end
end;
end;
end;
end;
Автор: Chuvakstepan
Дата сообщения: 08.03.2007 14:11
NightW0lf
Млин, трабла. Я кусок из твоего кода беру. Он говорит unknown identifer PageDescription

Но посмотри лучше мой код, там реализация лучше, красивей. Только надо научиться менять расположение кнопок вместе с формой

Может лучше перепутать Инициализ Визард и КурПэйджчанчед

Добавлено:
Там (в моём коде) нет кнопок play и уже всё проверенно
Автор: Chanka
Дата сообщения: 08.03.2007 16:02
Genri
Пожалуйста помоги мне с моим вопросом насчёт сейв файлов
Автор: san007
Дата сообщения: 08.03.2007 21:46
Может кто знает, как реализовать в секции Code 2 разные ссылки (одна над другой) в левом нижнем углу инсталятора и чтобы они были разного цвета.
Автор: Genri
Дата сообщения: 08.03.2007 22:43
san007
Цитата:
как реализовать в секции Code 2 разные ссылки (одна над другой) в левом нижнем углу инсталятора и чтобы они были разного цвета
-- в примерах есть CodeClasses.iss - посмотри как реализовано там и переделай под себя.

Автор: boss911
Дата сообщения: 09.03.2007 02:22
Genri


Цитата:
... просто этот чел РЕАЛЬНО крут в инно

Может ты мне поможешь, плиз? Я тут не однократно задавал вопрос, но так и не получил правильного ответа (мой ответ)!
Автор: CapsLosk
Дата сообщения: 09.03.2007 02:22
Genri
А можно ли как нить на фоновое окно поместить анимированный гиф?
Автор: Nagual
Дата сообщения: 09.03.2007 07:24
кто нить сталкивался с задачей скрытного копирования файлов, то есть только прогресбар, никакого мелькания имен файлов
Автор: GloThin
Дата сообщения: 09.03.2007 10:47
MKN & ALL
12:10 08-03-2007
Цитата:
Поделитесь пожалуйста русификатором для ScriptMaker (ссылки в шапке не рабочие...)

Руссификатор положил к себе на сайт, вернее на оба - ссылки в шапке...
Будут работать долго....
Автор: Genri
Дата сообщения: 09.03.2007 12:04
Nagual
Цитата:
кто нить сталкивался с задачей скрытного копирования файлов, то есть только прогресбар, никакого мелькания имен файлов


Код:
[Files]
Source: .\Files\*; DestDir: "{app}"; BeforeInstall: HideInstallPath; AfterInstall: ShowInstallPath

[Code]
procedure HideInstallPath();
begin
WizardForm.FileNameLabel.Visible := False;
end;
//*******//
procedure ShowInstallPath();
begin
WizardForm.FileNameLabel.Visible := True;
end;
Автор: Nagual
Дата сообщения: 09.03.2007 12:26
Genri
tnx, все отлично, а как с предыдущей задачей, поможешь?
уж очень сложна для моего начинающего уровня, никакие хелпы не помогают
Автор: AtotIK
Дата сообщения: 09.03.2007 13:06
2 Nagual

Можешь попробовать и так сделать:

procedure InitializeWizard();
begin
WizardForm.FileNameLabel.Visible:= False;
end;

Это отключит отображение файлов вообще.
Автор: Nagual
Дата сообщения: 09.03.2007 13:40
AtotIK
в чем отличие от способа, предложенного Genri?
вроде как одно и то же
Автор: Genri
Дата сообщения: 09.03.2007 13:54
Nagual -- в первом случае, путь скрывается только для тех файлов, для которых заданы указанные процедуры; во-втором - путь скрывается для всех файлов. Первый вариант более гибкий, но если надо скрыть путь абсолютно для всех файлов - предпочтительнее вариант AtotIK



Добавлено:
в примере ниже, путь будет скрыт только для файлов, копируемых в системную директорию:

Код:
[Files]
Source: .\AppFiles\*; DestDir: "{app}"
Source: .\SysFiles\*; DestDir: "{sys}"; BeforeInstall: HideInstallPath; AfterInstall: ShowInstallPath
Source: .\DocFiles\*; DestDir: "{app}"

[Code]
procedure HideInstallPath();
begin
WizardForm.FileNameLabel.Visible := False;
end;
//*******//
procedure ShowInstallPath();
begin
WizardForm.FileNameLabel.Visible := True;
end;
Автор: Nagual
Дата сообщения: 09.03.2007 13:59
Genri
исчерпывающе, тогда да, мне хватит и способа AtotIK
Автор: Genri
Дата сообщения: 09.03.2007 15:34
Nagual -- см. ящик - есть вопросы. Предварительно примерно так:

Код:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
Source: {#ReadReg(HKLM, 'SOFTWARE\xxx\xxx\4.0', 'Folder')}\file1.txt; DestDir: {code:DestDir}
Source: {#ReadReg(HKLM, 'SOFTWARE\xxx\xxx\4.0', 'Folder')}\file2.txt; DestDir: {code:DestDir}
Source: {#ReadReg(HKLM, 'SOFTWARE\xxx\xxx\4.0', 'Folder')}\file3.txt; DestDir: {code:DestDir}

[Соde]
function DestDir(Param: string): string;
var
CurrDir: String;
begin
if RegQueryStringValue(HKLM, 'SOFTWARE\xxx\xxx\4.0',
'Folder', CurrDir) then
begin
Result:= CurrDir;
end;
end;
Автор: NightW0lf
Дата сообщения: 09.03.2007 15:53
Genri
Посмотри пожалуйста личку. Там по поводу вопроса Chuvakstepan

Цитата:
Нужно чтобы три кнопки управления музыкой меняли свое расположение так же как форма процесса инсталляции (внизу справа, см. руководство). А то окошко инсталляции стало маленьким, и не видно кнопок, хотя они есть

Автор: AtotIK
Дата сообщения: 09.03.2007 17:25
Гы...Я тут на одном из своих стареньких дисков обнаружил Inno Setup v1.11m (32 bit)!

Скачать
Автор: Genri
Дата сообщения: 09.03.2007 20:51
boss911
Цитата:
подскажите плиз, параметр\код, чтоб после деинсталяции не появлялось окошко, об окончании удаления программы (кнопка "ОК"), но, чтоб осталось окно, когда деинсталер просит (задан параметр) о перезагрузке после деинсталяции (кнопка "ДА" и "НЕТ").
-- корявое решение, но вроде работает:

Код:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
UninstallRestartComputer=yes

[Files]
Source: Files\*; DestDir: {app}

[Code]
function InitializeUninstall(): Boolean;
var
ResultCode: Integer;
str: string;
begin
if Not UninstallSilent then
begin
str:= ExpandConstant('{uninstallexe}');
Exec(str, '/SILENT', '', SW_SHOW, ewNoWait, ResultCode);
end else
begin
Result:= True;
end;
end;
Автор: Nagual
Дата сообщения: 10.03.2007 00:23
Genri
проверял много и дотошно но все время ошибку выдает, не найден файл по указанному пути
в принципе с путем назначения проблем нет, получаю его так
[Setup]
DefaultDirName={reg:HKLM\SOFTWARE\xxx\xxx\4.0,Folder}
[Files]
DestDir: {app};
причем без использования секции кода, а вот с источником проблемы: говорит не найден файл и все тут, уже голову сломал, не знаю как писать, может из-за того что там в пути пробел есть как то в кавычки надо заключать? но целевой то нормально определяется...
Автор: Genri
Дата сообщения: 10.03.2007 02:34
Nagual
Source: {#ReadReg(HKLM, 'SOFTWARE\xxx\xxx\4.0', 'Folder')}\file1.txt

...остальное см. почту
Автор: boss911
Дата сообщения: 10.03.2007 02:51
Genri

Не совсем есть хорошо, так как ключ /SILENT лишает появлению диалога о подтверждении деинсталляции, что не совсем удобно, бывает, что нечаянно клацнул по деинсталлятору, а он предупреждает, а тут мигом удалит все, и нечего не сделаешь!
А нельзя ли это сделать так, как это реализовано в коде:

Код:
[Сode]
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpWelcome then
begin
SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
end;
Автор: Nagual
Дата сообщения: 10.03.2007 02:58
Genri
все равно не пашет, пробовал так тоже, дело в том что у меня он пишет такой путь
Source file "полный_путь_к_файлу_в_котором лежит_инсталлятор\{#ReadReg(HKLM, 'SOFTWARE\xxx\xxx\4.0', 'Folder')}\file1.txt" does not exist
версия инсталлера 5.1.11
Автор: Chuvakstepan
Дата сообщения: 10.03.2007 09:13
Кто-нибудь поможет мне с моим вопросом? А то процесс моей работы застопорился именно поэтому

Цитата:
Нужно чтобы три кнопки управления музыкой меняли свое расположение так же как форма процесса инсталляции (внизу справа, см. руководство). А то окошко инсталляции стало маленьким, и не видно кнопок, хотя они есть


Смотреть вначале предыдущей страницы

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: ICONS


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