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

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

Автор: Sampron
Дата сообщения: 24.04.2008 00:48
Raf_SE
Попробуй так:

[Registry]
Root: HKLM; Subkey: System\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List; ValueType: string; ValueName: {app}\MyProg.exe; ValueData: {app}\MyProg.exe:*:Enabled:MyProg; Flags: uninsdeletekey

Добавлено:
Hater_Decay

Цитата:
Как всё-таки сделать чтоб имя деинсталлятора было не unins000.exe

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
RenameFile(ExpandConstant('{app}\unins000.exe'), ExpandConstant('{app}\uninstall.exe'))
RenameFile(ExpandConstant('{app}\unins000.dat'), ExpandConstant('{app}\uninstall.dat'))
end;
Автор: geranik
Дата сообщения: 24.04.2008 09:24
Кто может перезалить delphi 2.01. совместимую с компановкой исходников?
Sampron Здорово, как-то абгрежил и получилось...
Уже убрал привязку имени .bin к имени exeшника.
Автор: Hater_Decay
Дата сообщения: 24.04.2008 12:24
Sampron, спасибо за совет но это просто переименует файл. Мне нравится фича, которая описана ещё в хелпе про то, что сетап дописывается в unins*** если такой уже есть, но порой это очень мешает и хотелось бы создать отдельный анинсталл
Автор: omals
Дата сообщения: 24.04.2008 15:52
может стоит в шапку добавить линк на полезную утилитку
Inno Setup Form Designer
http://isfd.kaju74.de/index.php?isfd

для рисования своих форм полезная утилитка
да и наглядно посмотреть свойства можно
Автор: Victor_Dobrov
Дата сообщения: 24.04.2008 19:58
omals, Добавил в Шапку ссылку на Inno Setup Extensions Knowledge Base и Inno Setup Form Designer.
Автор: Sampron
Дата сообщения: 25.04.2008 01:38
geranik
Немного не в тему, смотри личку.
Автор: Unc1e
Дата сообщения: 25.04.2008 08:57
Подскажите, пожалуйста, как запустить приложение в режиме совместимости? В частности нужно под Вистой во время установки запустить ехе-шник, который нормально запускается только в режиме совместимости с XP SP2. То есть нужно выполнить приложение равносильно нажатию Свойства--> Совместимость --> Запустить программу в режиме совместимости с: Windows XP (пакет обновления 2). Заранее СПАСИБО!
Автор: omals
Дата сообщения: 25.04.2008 10:52

Цитата:
Кто может перезалить delphi 2.01. совместимую с компановкой исходников?
Может Sampron поможет? Если есть возможность.

тоже надо
или подскажите где можно скачать (не имеет значения откуда - осел, торент и т.д. - все подойдет)
спс.
Автор: Sampron
Дата сообщения: 25.04.2008 10:58
omals
Как вас много, качайте пока не удалили!
http://rapidshare.com/files/110165797/Delphi_2.01.rar.html
inno setup как МТ-шник, пока не сделаешь то не поедет.
Автор: omals
Дата сообщения: 25.04.2008 19:45
Sampron
ОГРОМНОЕ СПАСИБО
Автор: KurtWagner
Дата сообщения: 26.04.2008 01:11
Хочу сделать чист! При наводке на инсталлер(а) меняется курсор на свой! залитый
Автор: Victor_Dobrov
Дата сообщения: 26.04.2008 11:14
Доработал [more=скрипт]
#define Background "Background.jpg"

[Setup]
AppName=Picture to Background
AppVerName=Picture to Background
CreateAppDir=false
OutputBaseFilename=PictureToBackground
OutputDir=.

[Files]
Source: {#Background}; Flags: dontcopy noencryption
Source: ImgGdiplus.dll; Flags: dontcopy noencryption
;есть в календаре SBRunScr, или здесь: url=http://victor-dobrov.narod.ru/ImgGdiplus.dll

[Code]
type hDC= Longint; TSize = record CX, CY: UInt; end; TagMonitorInfo = record cbSize: DWord; Monitor, Work: TRect; dwFlags: DWord; end;
var MonitorInfo: TagMonitorInfo; BackgroundForm: TForm; BackgroundImage: TBitmapImage; Mem: array[0..31] of Integer; VolumeName: String; n: Integer; FS: TFileStream; Size, PicSize: TSize;
const SRCCOPY = $CC0020;

function GetDC(Wnd: HWnd): hDC; external 'GetDC@user32';
function CreateCompatibleDC(DC: hDC): hDC; external 'CreateCompatibleDC@gdi32';
function CreateCompatibleBitmap(DC: hDC; Width, Height: Integer): HBitmap; external 'CreateCompatibleBitmap@gdi32';
function GetMonitorInfo(hMonitor: Integer; var lpMonitorInfo: TagMonitorInfo): Boolean; external 'GetMonitorInfoA@user32';
function SelectObject(DC: hDC; p2: LongWord): LongWord; external 'SelectObject@gdi32';
function ReleaseDC(Wnd: HWnd; DC: hDC): Longint; external 'ReleaseDC@user32';
function DeleteDC(DC: hDC): Boolean; external 'DeleteDC@gdi32';
function ShowWindow(hWnd, nCmdShow: LongWord): LongWord; external 'ShowWindow@user32';
function LoadPicture(Sw: TSize; name: PChar): Longint; external '_LoadPicture@8@files:ImgGdiplus.dll stdcall delayload';
procedure StretchImg(LoadedImage, hDC: Longint; dstX, dstY, dstXE, dstYE, srcX, srcY, srcXE, srcYE: integer; dwROP: DWord); external '_StretchImg@44@files:ImgGdiplus.dll stdcall delayload';
procedure ReleaseImg(LoadedImage: Longint); external '_ReleaseImg@4@files:ImgGdiplus.dll stdcall delayload';

//function LoadPicture(Sw: TSize; name: PChar): Longint; external '_LoadPicture@8@files:IPicture.dll stdcall delayload';
//procedure StretchImg(LoadedImage, hDC: Longint; dstX, dstY, dstXE, dstYE, srcX, srcY, srcXE, srcYE: integer; dwROP: DWord); external '_StretchImg@44@files:IPicture.dll stdcall delayload';
//procedure ReleaseImg(LoadedImage: Longint); external '_ReleaseImg@4@files:IPicture.dll stdcall delayload';

Function ReadFileTag(File, FindStr: String; var Tag: String; Buffer: Integer; Global: Bool): Integer; var Str: String; Pos, Len: Integer; Begin
    Result:= -1;    FS:= TFileStream.Create(File, fmOpenRead);
if FS.Size < Buffer then Len:= FS.Size - Length(FindStr) else Len:= Buffer - Length(FindStr)
    for Pos:= 0 to Len do begin    SetLength(Str, Length(FindStr))
        FS.Seek(Pos, soFromBeginning)
        FS.ReadBuffer(Str, Length(Str))    //    FS.Position - в следующей позиции
        if Str = FindStr then begin Result:= Pos; FS.ReadBuffer(Tag, Length(Tag)); if not Global then Break; end;
    end;    FS.Free;
End;

Function GetPictureSize(File: String): TSize;    var Buffer: String;    Begin
    SetLength(Buffer, $100)    { буфер чтения бинарных данных}
Case Uppercase(ExtractFileExt(File)) of
'.GIF':    begin
        Mem[11]:= 4; Mem[12]:= 6;    { позиция данных в тэге GIF}
        n:= ReadFileTag(File, 'GIF8', Buffer, $200, false); end;
'.JPG','.JPEG': begin    { тэг #FFC2 или #FFC0}
        Mem[11]:= 6; Mem[12]:= 4;    { тэг JFIF: позиция значений высоты и ширины в формате MotorolaWord}
        n:= ReadFileTag(File, Chr($FF)+Chr($C0), Buffer, $8000, true)    { загрузить в строку данные, если заголовок тэга найден}
        if n < 0 then n:= ReadFileTag(File, Chr($FF)+Chr($C2), Buffer, $8000, true); end;    { стандартный заголовок}
'.PNG':    begin
        Mem[11]:=15; Mem[12]:=19;
        n:= ReadFileTag(File, 'PNG', Buffer, $200, false); end;
'.BMP':    begin
        Mem[11]:=18; Mem[12]:=22;
        n:= ReadFileTag(File, 'BM', Buffer, $200, false); end;
end;
        if n < 0 then MsgBox('Unknown Picture Size!', mbError, MB_OK);
    if (Uppercase(ExtractFileExt(File)) = '.BMP') or (Uppercase(ExtractFileExt(File)) = '.GIF') then n:= -1 else n:= 1 { для Bmp и Gif менять мл. и ст. байт}
Result.CX:= Ord(Buffer[Mem[11]]) shl 8 + Ord(Buffer[Mem[11]+n]); Result.CY:= Ord(Buffer[Mem[12]]) shl 8 + Ord(Buffer[Mem[12]+n])
End;

Procedure PictureToBitmap(Parent: TWinControl; Bitmap: TBitmapImage; File: String); var PicStream, MemDC, WinDC: hDC; tmpBitmap: HBitmap; Begin
    Size.CX:= Bitmap.Width; Size.CY:= Bitmap.Height;
    PicSize:= GetPictureSize(File)
    PicStream:= LoadPicture(Size, File);
    WinDC:= GetDC(Parent.Handle);
    MemDC:= CreateCompatibleDC(WinDC);
    tmpBitmap:= CreateCompatibleBitmap(WinDC, Size.CX, Size.CY);    // чтобы рисовать, нужно выбрать битмап в контекст, но напрямую не рисуется, поэтому используется временный
    SelectObject(MemDC, tmpBitmap);
    StretchImg(PicStream, MemDC, 0, 0, Size.CX, Size.CY, 0, 0, PicSize.CX, PicSize.CY, SRCCOPY);
    Bitmap.Bitmap.Handle:= tmpBitmap;
DeleteDC(MemDC); ReleaseDC(Parent.Handle, WinDC); ReleaseImg(PicStream); Parent.Invalidate;
End;

Procedure BackgroundOnActivate(Sender: TObject); Begin if WizardForm.Visible then WizardForm.Show End;
Procedure BackgroundOnResize(Sender: TObject); Begin
    PictureToBitmap(BackgroundForm, BackgroundImage, ExpandConstant('{tmp}\' + ExtractFileName('{#Background}')));
    if WizardForm.Visible then WizardForm.Show
End;

Procedure InitializeWizard; Begin
    ExtractTemporaryFile(ExtractFileName('{#Background}'));
BackgroundForm:= TForm.Create(nil)
    BackgroundForm.Caption:= WizardForm.Caption
    BackgroundForm.BorderStyle:= bsNone    { убрать для показа заголовка}
//    BackgroundForm.OnResize:= @BackgroundOnResize;
    BackgroundForm.OnActivate:= @BackgroundOnActivate;
MonitorInfo.cbSize:= SizeOf(MonitorInfo); GetMonitorInfo(1, MonitorInfo)
BackgroundImage:= TBitmapImage.Create(BackgroundForm);
    BackgroundImage.SetBounds(0,0, MonitorInfo.Monitor.Right, MonitorInfo.Monitor.Bottom)
    BackgroundImage.Align:= alClient;
//    BackgroundImage.Stretch:= True;
    BackgroundImage.Enabled:= False;
    BackgroundImage.Parent:= BackgroundForm;
    PictureToBitmap(BackgroundForm, BackgroundImage, ExpandConstant('{tmp}\' + ExtractFileName('{#Background}')));
    ShowWindow(BackgroundForm.Handle, sw_ShowMaximized)    // фоновое окно на полный экран
End;

Procedure DeinitializeSetup; Begin BackgroundForm.Free; End;
[/more], показывающий в фоновом окне jpg, png, gif файлы.
Правильно определяются размеры всех PNG, GIF, BMP, JPEG картинок, если у кого не так, отпишите!

htuos – Спасибо и
Автор: braunberg
Дата сообщения: 26.04.2008 14:10
Есть вопрос. Переименование unins000.exe в uninstall.exe происходит через следующий код:

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
RenameFile(ExpandConstant('{app}\unins000.exe'), ExpandConstant('{app}\uninstall.exe'))
RenameFile(ExpandConstant('{app}\unins000.dat'), ExpandConstant('{app}\uninstall.dat'))
end;

но иконка в папке Пуск, если имя файла {uninstallexe}, все равно остается прикрученной к unins000.exe. Что нужно сделать, чтобы ассоциировать иконку деинсталяции с переименованным uninstall.exe? Заранее благодарен.

Sampron - cпасибо, просто немного сбило то, что uninstall.exe отсутствует в списке файлов
Автор: Sampron
Дата сообщения: 26.04.2008 14:49
braunberg
[Icons]
Name: {group}\Снести прогу; Filename: {app}\Uninstall.exe
Автор: Kutsenko
Дата сообщения: 26.04.2008 15:52
2 Sampron
А в "Установка и удаление програм" будет запоминаться ведь название деинсталятора unins000.exe ?
Автор: Sampron
Дата сообщения: 26.04.2008 16:22
Kutsenko
мда... действительно, сразу как-то не подумал, тогда так:

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
RenameFile(ExpandConstant('{app}\unins000.exe'), ExpandConstant('{app}\uninstall.exe'))
RenameFile(ExpandConstant('{app}\unins000.dat'), ExpandConstant('{app}\uninstall.dat'))
RegWriteStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Моя Прога_is1','UninstallString', ExpandConstant('{app}\uninstall.exe'))
RegWriteStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Моя Прога_is1','QuietUninstallString', ExpandConstant('{app}\uninstall.exe /SILENT'))
end;
Автор: JekaKot
Дата сообщения: 27.04.2008 12:02
Нашел, попробовал, залил... Удобная штука, с GUI...


Цитата:
Утилита для распаковки инсталляторов созданных Inno Setup версий до 5.2.3


Скачать

Может в шапку внесем?

(сам не правлю, боюсь напортачить, а разбираться со всеми кодами форума лень...)
Автор: Victor_Dobrov
Дата сообщения: 28.04.2008 01:32
JekaKot, этот китайский innounp.exe прерывает распаковку на первом файле с русским именем
Автор: AlexDJ666
Дата сообщения: 28.04.2008 09:23
Добрый день всем кодерам

На странице http://forum.ru-board.com/topic.cgi?forum=5&topic=24767&start=120 3eJIeHb спрашивал про "скрипт, где при выборе компонента с лева появлялась картинка (изображение), а справа его описание", там давали ссылку на такой скрипт, но она, к сожалению, уже умерла. Не сохранился ли этот скрипт у кого-нибудь? Был бы премного благодарен.


И второй вопрос. У меня в установщике получается большой список компонентов и подкомпонентов, хотелось бы разбить список установки на несколько страниц. Я так понимаю, что делается это как-то очень просто через рисовку новых страниц и "перегоном" между страницами ссылкой WizardForm.NextButton, но вот конкретного примера я нигде не нашел. Может быть кто подскажет?
Автор: prodist
Дата сообщения: 28.04.2008 10:44
В Inno Setup надо сделать инсталляшку. Это легко, но времени разбираться СОВСЕМ нет, а надо срочно.
Надо, чтобы сам инсталлятор весил мало (т.е. в нем не были запакованы всякие ресурсы), и копировал необходимые файлы из папки с инсталлятором.
В настройках инсталлятора должны быть:
Директория установки:
C:\Program Files\что-то

Тип установки:
На Русском языке

Выбранные компоненты:
Russian game

Каталог Стартового меню:
что-то

( -- или, если английский язык
Директория установки:
C:\Program Files\что-то

Тип установки:
На Английском языке

Выбранные компоненты:
English game

Каталог Стартового меню:
что-то
)

т.е. должен быть выбор языка: если русский, то копируется дополнительный файл, если английский - ничего копировать дополнительного не надо.
Если кто-то может сделать, будьте так добры%)
Конечно же, нужны исходники. Пути, названия папок и файлов подправлю сам.
Автор: Victor_Dobrov
Дата сообщения: 28.04.2008 12:14
AlexDJ666 - вот [more=скрипт]
[Setup]
AppName=AppName
AppVerName=AppVerName
CreateAppDir=false

[Code]
Var
Page: TWizardPage;
Text1,Text2,Text3,Text4: TNewStaticText;
Panel: TPanel;
ListBox: TListBox;
Check1,Check2,Check3: TCheckBox;
NoChecks,Label1,Label2,Label3: TLabel;

Function Checked1: Boolean;
begin
Result:=Check1.Checked
end;

Function Checked2: Boolean;
begin
Result:=Check2.Checked
end;

Function Checked3: Boolean;
begin
Result:=Check3.Checked
end;

Procedure Check1OnClick (Sender: TObject);
begin
Check1.Checked:=Not(Check1.Checked)
end;

Procedure Check2OnClick (Sender: TObject);
begin
Check2.Checked:=Not(Check2.Checked)
end;

Procedure Check3OnClick (Sender: TObject);
begin
Check3.Checked:=Not(Check3.Checked)
end;

procedure Check1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Text4.Enabled:=True
Text4.Caption:='Описание первого компонента'
end;

procedure Check2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Text4.Enabled:=True
Text4.Caption:='Описание второго компонента'
end;

procedure Check3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Text4.Enabled:=True
Text4.Caption:='Описание третьего компонента'
end;

procedure NoChecksMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Text4.Enabled:=False
Text4.Caption:='Наведите курсор мыши на название компонента, чтобы прочесть его описание.'
end;

Procedure InitializeWizard();
begin
Page:=CreateCustomPage(2, 'Компоненты устанавливаемой программы', 'Выберите компоненты, которые вы хотите установить.')

Text1:=TNewStaticText.Create(Page)
Text1.Left:=0
Text1.Top:=0
Text1.Width:=417
Text1.Height:=28
Text1.AutoSize:=False
Text1.WordWrap:=True
Text1.Caption:='Выберите компоненты программы, которые вы хотите установить. Нажмите на кнопку "Далее" для продолжения.'
Text1.Parent:=Page.Surface

Text2:=TNewStaticText.Create(Page)
Text2.Left:=0
Text2.Top:=63
Text2.Width:=130
Text2.Height:=42
Text2.AutoSize:=False
Text2.WordWrap:=True
Text2.Caption:='Выберите компоненты программы для установки:'
Text2.Parent:=Page.Surface

Panel:=TPanel.Create(Page)
Panel.Left:=287
Panel.Top:=60
Panel.Width:=130
Panel.Height:=160
Panel.BevelInner:=bvLowered
Panel.Parent:=Page.Surface

Text3:=TNewStaticText.Create(Page)
Text3.Left:=293
Text3.Top:=54
Text3.Font.Color:=clBlue
Text3.Caption:='Описание'
Text3.Parent:=Page.Surface

Text4:=TNewStaticText.Create(Page)
Text4.Left:=4
Text4.Top:=10
Text4.Width:=122
Text4.Height:=140
Text4.AutoSize:=False
Text4.WordWrap:=True
Text4.Parent:=Panel

NoChecks:=TLabel.Create(Page)
NoChecks.Width:=WizardForm.Width
NoChecks.Height:=WizardForm.Height
NoChecks.Autosize:=False
NoChecks.Transparent:=True
NoChecks.OnMouseMove:=@NoChecksMouseMove
NoChecks.Parent:=Page.Surface

ListBox:=TListBox.Create(Page)
ListBox.Left:=135
ListBox.Top:=60
ListBox.Width:=140
ListBox.Height:=160
ListBox.Parent:=Page.Surface

Check1:=TCheckBox.Create(Page)
Check1.Left:=2
Check1.Top:=0
Check1.Checked:=True
Check1.Parent:=ListBox

Check2:=TCheckBox.Create(Page)
Check2.Left:=2
Check2.Top:=16
Check2.Checked:=True
Check2.Parent:=ListBox

Check3:=TCheckBox.Create(Page)
Check3.Left:=2
Check3.Top:=32
Check3.Checked:=True
Check3.Parent:=ListBox

Label1:=TLabel.Create(Page)
Label1.Left:=16
Label1.Top:=2
Label1.Caption:='Компонент 1'
Label1.OnClick:=@Check1OnClick
Label1.OnMouseMove:=@Check1MouseMove
Label1.Parent:=Check1

Label2:=TLabel.Create(Page)
Label2.Left:=16
Label2.Top:=2
Label2.Caption:='Компонент 2'
Label2.OnClick:=@Check2OnClick
Label2.OnMouseMove:=@Check2MouseMove
Label2.Parent:=Check2

Label3:=TLabel.Create(Page)
Label3.Left:=16
Label3.Top:=2
Label3.Caption:='Компонент 3'
Label3.OnClick:=@Check3OnClick
Label3.OnMouseMove:=@Check3MouseMove
Label3.Parent:=Check3
end;
[/more], показывающий описание компонента, если тебе нужен другой, проси iTASmania_Inc.

prodist - запускаешь Мастер создания скрипта (Ctrl+N) - дальше всё просто!
Автор: KurtWagner
Дата сообщения: 28.04.2008 13:04
Как добавить program.exe в АутоЗапуск программ???
Автор: elapse
Дата сообщения: 28.04.2008 13:24
AlexDJ666, примерно [more=так]
[no]
[Setup]
AppName=AppName
AppVerName=AppVerName
CreateAppDir=false

[Files]
Source: compiler:WizModernSmallImage.bmp; DestDir: {tmp}; Flags: dontcopy;
Source: compiler:WizModernSmallImage-IS.bmp; DestDir: {tmp}; Flags: dontcopy;

[Code]
Var
Page: TWizardPage;
Text1,Text2,Text3,Text4: TNewStaticText;
Panel: TPanel;
ListBox: TListBox;
Check1,Check2: TCheckBox;
NoChecks,Label1,Label2: TLabel;
Image: TBitmapImage;

Function Checked1: Boolean;
begin
Result:=Check1.Checked
end;

Function Checked2: Boolean;
begin
Result:=Check2.Checked
end;

Procedure Check1OnClick (Sender: TObject);
begin
Check1.Checked:=Not(Check1.Checked)
end;

Procedure Check2OnClick (Sender: TObject);
begin
Check2.Checked:=Not(Check2.Checked)
end;

procedure Check1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Text4.Enabled:=True
Text4.Caption:='Описание первого компонента'
Image.Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizModernSmallImage.bmp'))
Image.Visible:=True
end;

procedure Check2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Text4.Enabled:=True
Text4.Caption:='Описание второго компонента'
Image.Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizModernSmallImage-IS.bmp'))
Image.Visible:=True
end;

procedure NoChecksMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Text4.Enabled:=False
Text4.Caption:='Наведите курсор мыши на название компонента, чтобы прочесть его описание.'
Image.Visible:=False
end;

Procedure InitializeWizard();
begin
ExtractTemporaryFile('WizModernSmallImage.bmp')
ExtractTemporaryFile('WizModernSmallImage-IS.bmp')

Page:=CreateCustomPage(2, 'Компоненты устанавливаемой программы', 'Выберите компоненты, которые вы хотите установить.')

Text1:=TNewStaticText.Create(Page)
Text1.Left:=0
Text1.Top:=0
Text1.Width:=417
Text1.Height:=28
Text1.AutoSize:=False
Text1.WordWrap:=True
Text1.Caption:='Выберите компоненты программы, которые вы хотите установить. Нажмите на кнопку "Далее" для продолжения.'
Text1.Parent:=Page.Surface

Text2:=TNewStaticText.Create(Page)
Text2.Left:=0
Text2.Top:=63
Text2.Width:=130
Text2.Height:=42
Text2.AutoSize:=False
Text2.WordWrap:=True
Text2.Caption:='Выберите компоненты программы для установки:'
Text2.Parent:=Page.Surface

Image:=TBitmapImage.Create(WizardForm)
Image.Left:=0
Image.Top:=Text2.Top + Text2.Height + 10;
Image.Width:=55
Image.Height:=55
Image.Parent:=Page.Surface

Panel:=TPanel.Create(Page)
Panel.Left:=287
Panel.Top:=60
Panel.Width:=130
Panel.Height:=160
Panel.BevelInner:=bvLowered
Panel.Parent:=Page.Surface

Text3:=TNewStaticText.Create(Page)
Text3.Left:=293
Text3.Top:=54
Text3.Font.Color:=clBlue
Text3.Caption:='Описание'
Text3.Parent:=Page.Surface

Text4:=TNewStaticText.Create(Page)
Text4.Left:=4
Text4.Top:=10
Text4.Width:=122
Text4.Height:=140
Text4.AutoSize:=False
Text4.WordWrap:=True
Text4.Parent:=Panel

NoChecks:=TLabel.Create(Page)
NoChecks.Width:=WizardForm.Width
NoChecks.Height:=WizardForm.Height
NoChecks.Autosize:=False
NoChecks.Transparent:=True
NoChecks.OnMouseMove:=@NoChecksMouseMove
NoChecks.Parent:=Page.Surface

ListBox:=TListBox.Create(Page)
ListBox.Left:=135
ListBox.Top:=60
ListBox.Width:=140
ListBox.Height:=160
ListBox.Parent:=Page.Surface

Check1:=TCheckBox.Create(Page)
Check1.Left:=2
Check1.Top:=0
Check1.Checked:=True
Check1.Parent:=ListBox

Check2:=TCheckBox.Create(Page)
Check2.Left:=2
Check2.Top:=16
Check2.Checked:=True
Check2.Parent:=ListBox

Label1:=TLabel.Create(Page)
Label1.Left:=16
Label1.Top:=2
Label1.Caption:='Компонент 1'
Label1.OnClick:=@Check1OnClick
Label1.OnMouseMove:=@Check1MouseMove
Label1.Parent:=Check1

Label2:=TLabel.Create(Page)
Label2.Left:=16
Label2.Top:=2
Label2.Caption:='Компонент 2'
Label2.OnClick:=@Check2OnClick
Label2.OnMouseMove:=@Check2MouseMove
Label2.Parent:=Check2
end;
[/no]
[/more].
Автор: JekaKot
Дата сообщения: 28.04.2008 17:48
Victor_Dobrov

Цитата:
этот китайский innounp.exe прерывает распаковку на первом файле с русским именем



Ну извини...

Я использую innounp.exe только для распаковки чужих программ для того, чтобы выкидывать оттуда всякую ненужную дрянь, вроде многоязычной поддержки, буржуйской справки и пр. Переименованием файлов на русский не занимался, своих прог не далаю...

P.S.: а зачем файлы именовать по-русски?
Автор: Victor_Dobrov
Дата сообщения: 29.04.2008 02:01
JekaKot - в-общем, не всё извлекает, вот ошибка с моим инсталлятором (а версия innounp 0.20 работала)

#13 {pf}\TweakUI\Personal.dat
#14 {pf}\TweakUI\IeBlinder.dll
_нОу (Exception) "Ф_ОД_юТСЛр>ч", чШЦ· 00446162
Автор: Forslay
Дата сообщения: 29.04.2008 05:52
Здравствуйте. Мне нужно сделать Update патч на определённое приложение...

Вы наверное не раз сталкивались с инсталляцией патча на игру STALKER. Там я как понял он ищет запись в реестре, и по пути InstallPatch устанавливает автоматически патч, без выбора пути инсталляции... Если же игра не установлена, то и интслалл должен выдать сообщение, мол что игра не установлена. Заранее большое спасибо за пример скрипта. Надеюсь на помощь !
Автор: SotM
Дата сообщения: 29.04.2008 08:09
Я тут почитал немножко и не смог найти ответы на пару вопросов, надеюсь на вашу помощь.

Есть игрушка и я хочу сделать инстал к ней, паковаться она будет долго и нудно (несколько гигов всё таки).
1. Можно ли сначала всё это дело запаковать, а потом менять скрипт установки сколько мне хочется без перепаковки всего архива? Или нужно сразу скрипт с последней версией запаковывать со всеми файлами?
2. Есть ли такие функции, чтобы из скрипта получать информацию о файлах, которые содержатся в архиве. (ну там имя файла, его размер).
Автор: Victor_Dobrov
Дата сообщения: 29.04.2008 14:17
Добавил в шапку ссылку на китайский innounp 0.23 (с новыми версии работает нормально).
Автор: Forslay
Дата сообщения: 29.04.2008 17:37
Что некому помочь?
Автор: serg_aka_lain
Дата сообщения: 29.04.2008 21:38
Forslay
Вот простенькое решение [more]
Setup
AppName=MyProga
AppVerName=MyProga v 1.0
DefaultDirName={code:GetInstallPath}

Code

function GetInstallPath( AppID: String ): String;
var Path: String;
begin
Path := '';
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Proga_is1','InstallLocation', Path);
Result := Path;
end;

function InitializeSetup(): Boolean;
begin
if RegValueExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Proga_is1','InstallLocation') then
begin
Result := True;
end else
begin
SuppressibleMsgBox('Proga мол не установлена!', mbCriticalError, MB_OK, MB_OK);
Result := False;
Exit;
end;
end;

[/more]

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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