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

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

Автор: Nagual
Дата сообщения: 12.05.2007 23:08
Genri
выполняю

#expr Exec("cmd ", "/c echo #define DateTime '%DATE% %TIME:~0,8%' > data.iss")
;#include "data.iss"

#define MyAppVerName "My Program version 1.5 built on " + DateTime

[Setup]
AppName=My Program
AppVerName={#MyAppVerName}
DefaultDirName={pf}\My Program

[Messages]
BeveledLabel={#MyAppVerName}

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

вижу
Column 67:II[ISPP] Undeclared identifer: "DateTime"

какой гемор, лог ошибки нельзя копировать, пришлось писать руками


Добавлено:
Line 4:
Автор: Sampron
Дата сообщения: 12.05.2007 23:14
Никто незнает почему TLabel не переносит на следующую строку длинный текст?
Автор: Genri
Дата сообщения: 12.05.2007 23:31
Nagual -- определение DateTime содержится в data.iss. Включение этого файла закомментировано, но обращение к переменной DateTime осталось в третьей строке. Вот компилятор и ругается. Удали "... + DateTime" и сможешь скомпилить. Но на самом деле это не обязательно, так как файл data.iss все равно создается. Посмотри - что в этом файле.

hint! А скопировать лог можно по правой кнопке мыши.



Добавлено:
Sampron
Возможно потому, что свойство WordWrap выставлено в False
Автор: Sampron
Дата сообщения: 13.05.2007 00:34
Genri
Спасибо Помогло!
Автор: NightW0lf
Дата сообщения: 13.05.2007 01:24
Genri

Цитата:
Возможно потому, что свойство WordWrap выставлено в False

А можно по побробней куда его надо прописать чтобы работало?
Автор: Genri
Дата сообщения: 13.05.2007 01:55
NightW0lf
Цитата:
куда его на прописать чтобы работало?
-- хм, при создании TLabel выставляешь свойство WordWrap в True. А что конкретно не работает ? Стандартных элементов типа TLabel вроде и нет.
Автор: Sampron
Дата сообщения: 13.05.2007 02:12
Никто незнает как можно на WizardForm отключить стиль XP?
Автор: NightW0lf
Дата сообщения: 13.05.2007 02:13
Genri

Цитата:
А что конкретно не работает ?

Ну ведь по идеии должно же это свойство переносить длинный текст указанный в Caption := 'text', а перенос текста не осуществляется.
Автор: Sampron
Дата сообщения: 13.05.2007 02:29
NightW0lf
Нужно ещё указывать размер и отключать авторазмер

Width:=465
Height:=28
AutoSize:=False
WordWrap:=True
Автор: Genri
Дата сообщения: 13.05.2007 02:45
NightW0lf
Sampron
Верно. Но кроме этого необходимо соблюсти еще одно условие - AutoSize:=False должно стоять перед установкой свойств Caption и WordWrap. Например:

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

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

[Code]
procedure InitializeWizard();
var
Lbl: TLabel;
begin
Lbl := TLabel.Create(WizardForm);
Lbl.Top := WizardForm.NextButton.Top - 10;
Lbl.Width:= 100;
Lbl.Height:= 40;
Lbl.AutoSize := False; // В этом месте работает
Lbl.Caption := 'Inno Setup is a free installer for Windows programs';
Lbl.WordWrap:= True;
// Lbl.AutoSize := False; // В этом месте НЕ работает
Lbl.Parent := WizardForm;

end;
Автор: Nagual
Дата сообщения: 13.05.2007 03:40
Genri

Цитата:
Удали "... + DateTime" и сможешь скомпилить

сделал, скомпилено нормально
в файле data.iss
#define DateTime '13.05.2007 4:38:29'
но инфы в инсталляторе нет
так как все это совместить?


Добавлено:
огромный сенкс, разобрался
Автор: NightW0lf
Дата сообщения: 13.05.2007 10:45
Genri

Цитата:
Верно. Но кроме этого необходимо соблюсти еще одно условие - AutoSize:=False должно стоять перед установкой свойств Caption и WordWrap. Например:

Спасибо работает!
Автор: boss911
Дата сообщения: 14.05.2007 02:11
Использую, слегка подредактированый, скин "Slate", нужно сделать, чтоб деинсталятор максимально был схож на инсталл! На сколько это возможно, сколько времени займет и как гемерно это все?
Автор: elchupakabra
Дата сообщения: 14.05.2007 12:47
Подскажите пожалуйста неграмотному.
Беру инсталлятор, например Download Master. Распаковываю используя Inno Setup Unpacker, делаю необходимые изменения, собираю инсталлятор. В получившемся инсталляторе при создании группы (ярлыка) в меню Пуск, пишет не название программы как в оригинале а (Default) - это в процессе установки, но в результате в Пуск создаётся папка с правильным названием, однако неприятный осадок остаётся. А вот с инсталлятором CopytoDVD в пуске так и создалась папка (Default), видимо по причине, что в предыдущих вариантах были только ярлыки, а тут папки с ярлыками.

И в догонгу ещё вопрос. Оригинальный дистрибутив всё того же CopytoDVD - 10 Mb у меня после отсечения дополнительных языков и звуков получилось 19 (Compression=lzma), как так?
Автор: Genri
Дата сообщения: 14.05.2007 14:52
elchupakabra

Цитата:
при создании группы (ярлыка) в меню Пуск, пишет не название программы как в оригинале а (Default)
-- посмотри в хелпе описание DefaultGroupName
Автор: Genri
Дата сообщения: 14.05.2007 19:30
Sampron
Цитата:
как можно на WizardForm отключить стиль XP?
-- А попробуй следующее:
Код:
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

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


Код:
var
FormRegion : tHandle;
InnerRegion : tHandle;

const
RGN_DIFF = 4;
radius = 1;

function CreateRoundRectRgn(p1, p2, p3, p4, p5, p6: Integer): THandle;
external 'CreateRoundRectRgn@gdi32 stdcall';

function CombineRgn(p1, p2, p3: THandle; p4: Integer): Integer;
external 'CombineRgn@gdi32 stdcall';

function SetWindowRgn(hWnd: HWND; hRgn: THandle; bRedraw: Boolean): Integer;
external 'SetWindowRgn@user32 stdcall';

procedure ShapeForm(aForm : TForm; edgeSize : integer);
begin
FormRegion := CreateRoundRectRgn(0,0, aForm.width, aForm.height, edgeSize,
edgeSize);
CombineRgn(FormRegion, FormRegion, InnerRegion, RGN_DIFF);
SetWindowRgn(aForm.Handle, FormRegion, True);
end;

procedure InitializeWizard();
begin
ShapeForm(WizardForm, radius);
end;
Автор: Sampron
Дата сообщения: 14.05.2007 20:15
Genri

Цитата:
Интересный эффект дает и такое использование

Ну ты даёшь
Незнаешь как можно сделать форму подвижной при значении BorderStyle:=bsNone ?
Автор: marat shakirov
Дата сообщения: 14.05.2007 21:20
Так к сожалению не дождался ответа. Неужели никто не знает как реализовать возможность выбора только диска установки?
Автор: NightW0lf
Дата сообщения: 14.05.2007 21:32
marat shakirov

Цитата:
Неужели никто не знает как реализовать возможность выбора только диска установки?

[more=У меня есть такой пример]

Код:
;Script by GloThin & Genri Edit by NightW0lf "Отображения списка локальных дисков пользователя на странице выбора директории".

[Setup]
;Название программы - инсталлятора, а также заголовок инсталлятора, (пожеланию можно версию указать):
AppName=My Program
;Версия программы - инсталлятора, (пожеланию можно указать - название + версию):
AppVerName=My Program 1.5
;Директория установки для программы - инсталлятора:
DefaultDirName=C:\example
;Название выходного файла компилятора:
OutputBaseFilename=example.by.glothin.genri.in.percent.in.gb.mb.list.lokal.disc


[Code]
const
NeedSize = 200000; //Прописать, сколько мегабайт необходимо
DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVEABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;

MB_ICONINFORMATION = $40;
MB_ICONEXCLAMATION = $30;
MB_ICONQUESTION = $20;    
MB_ICONSTOP = $10;
MB_ICONNONE = $0;

var
ListBox: TListBox;
Text: TNewStaticText;
hWnd: Integer;

function GetLogicalDrives: DWORD;
external 'GetLogicalDrives@kernel32.dll stdcall';

function GetDriveType(nDrive: string): Longint;
external 'GetDriveTypeA@kernel32.dll stdcall';

function MessageBox(hWnd: Integer; lpText, lpCaption: String; uType: Cardinal): Integer;
external 'MessageBoxA@user32.dll stdcall';


procedure ListBoxOnClick(Sender: TObject);
var
NewLetter, OldString: string;
i: Integer;
begin
for i := 0 to ListBox.Items.Count - 1 do
begin
if ListBox.Selected[i] then
begin
NewLetter := Copy(ListBox.Items[i], 0, 1);
OldString := Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text));
WizardForm.DirEdit.Text := NewLetter + OldString;
end;
end;
end;


procedure InitializeWizard();
var
Page: TWizardPage;
Text: TNewStaticText;
Memo: TMemo;
Path: string;
FreeMB, TotalMB: Cardinal;
drives: DWORD;
i: integer;
begin
Text := TNewStaticText.Create(WizardForm);
Text.Top := 102;
Text.Width := 332;
Text.Height := 14;
Text.Caption := 'Список жестких дисков и свободного места';
Text.Parent := WizardForm.SelectDirPage;

ListBox := TListBox.Create(WizardForm);
ListBox.Top := 120;
ListBox.Width := 332;
ListBox.Height := ScaleY(90);
ListBox.Parent := WizardForm.SelectDirPage;
ListBox.OnClick := @ListBoxOnClick;
ListBox.Font.Name := 'Courier New';
ListBox.Font.Size := 10;
ListBox.Font.Style := [fsBold];
ListBox.Color := clBtnFace;

drives := GetLogicalDrives();
for i := 0 to 31 do
begin
if (drives and (1 shl i)) > 0 then
begin
Path := chr(ord('A') + i) + ':\';
if GetDriveType(Path) = DRIVE_FIXED then
begin
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB>1024 then ListBox.Items.Add(Path + ' ' + IntToStr(round(FreeMB / TotalMB * 100)) + '% ' + floatToStr(round(FreeMB/1024*100)/100) + ' GB')
else ListBox.Items.Add(Path + ' ' + IntToStr(round(FreeMB / TotalMB * 100)) + '% ' + IntToStr(FreeMB) + ' MB');
end;
end;
end;
end;


function NextButtonClick(CurPageID: Integer): Boolean;
var
Path,s: String;
FreeMB, TotalMB: Cardinal;
begin
Result:= True;
if CurPageID = wpSelectDir then
begin
Path:= ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB < (NeedSize*1024) then
begin
if FreeMB>1024 then
begin
s:='Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' GB,'#13+'а на выбранном Вами диске доступно только '+ floatToStr(round(FreeMB/1024*100)/100) + ' GB!'
end
else s:='Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' GB,'#13+'а на выбранном Вами диске доступно только '+ + IntToStr(FreeMB)+' MB';
MessageBox(hWnd, s, 'Недостаточно места на диске', MB_OK or $10)
Result := False;
end;
end;
end;
Автор: marat shakirov
Дата сообщения: 14.05.2007 21:56
NightW0lf
спасибо огромное
Автор: Chanka
Дата сообщения: 15.05.2007 11:54
Нужна помощь
На странице 108 http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=4801&start=2140 Victor_Dobrov сделал свой вариант проверки системных требований. Там почти всё хорошо. там есть определение операционной системы но нет её проверки. То есть какая нужна как это сделано здесь http://forum.ru-board.com/topic.cgi?forum=5&topic=4801&start=2146&limit=1&m=1#1. И внешний вид хотелось бы поменять как в этом. Может кто сможет всё это сделать. Буду очень благодарен. Просите что хотите
Автор: NightW0lf
Дата сообщения: 15.05.2007 12:46
Chanka

Цитата:
Нужна помощь
На странице 108 http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=4801&start=2140 Victor_Dobrov сделал свой вариант проверки системных требований. Там почти всё хорошо. там есть определение операционной системы но нет её проверки. То есть какая нужна как это сделано здесь http://forum.ru-board.com/topic.cgi?forum=5&topic=4801&start=2146&limit=1&m=1#1. И внешний вид хотелось бы поменять как в этом. Может кто сможет всё это сделать. Буду очень благодарен. Просите что хотите

У меня есть скрипт проверки системы но там проверяется только винда 95\98SE\2000SP4\XPSP2, но вот нету только Vista елси можешь дай ключи которые нужны для проверки из Vista а я попробую дороботать код.
Автор: Sero
Дата сообщения: 15.05.2007 12:48
Есть вопрос:
Как поменять тип WizardForm.WelcomeLabel1 на TLabel в секции Code
Автор: Genri
Дата сообщения: 15.05.2007 13:32
Sero

Цитата:
Как поменять тип WizardForm.WelcomeLabel1 на TLabel в секции Code
-- а с какой целью? Какое св-во TLabel ты собираешься использовать?

Код:
procedure InitializeWizard();
var
lbl: TLabel;
begin
lbl:= TLabel.Create(WizardForm);
with WizardForm.WelcomeLabel1 do
begin
lbl.Autosize:= Autosize;
lbl.WordWrap:= WordWrap;
lbl.Top:= Top;
lbl.Left:= Left;
lbl.Width:= Width;
lbl.Height:= Height;
lbl.Font:= Font;
lbl.Caption:= Caption;
lbl.Parent:= Parent;
Visible:= False;
end;
end;
Автор: Sero
Дата сообщения: 15.05.2007 13:49
Genri

Цитата:
а с какой целью? Какое св-во TLabel ты собираешься использовать?

Transparent


Добавлено:
За код - спасибо!
Автор: Sampron
Дата сообщения: 15.05.2007 14:13
Пример скина с использованием Transparent:
http://data.cod.ru/986938826
Автор: EagleSH
Дата сообщения: 15.05.2007 14:37
Sampron
УМНИЧКА!

добавь пожалста транспарент к Созданию иконок на раб столе, к секции RunList

и можно ли убрать белый квадрат на странице "установить" ?... чтоб всё было в транспаренте.
Автор: Chanka
Дата сообщения: 15.05.2007 15:09
NightW0lf
Что за ключи?
Автор: NightW0lf
Дата сообщения: 15.05.2007 15:15
Chanka

Цитата:
Что за ключи?

Ну которые отвечают за версию винды и ее сервис пак. Вот пример для WinXP:

Ветка - HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
ProductName - Microsoft Windows 2000
CSDVersion - Service Pack 4
CurrentVersion - 5.0
CurrentBuildNumber - 2195
RegisteredOwner - NightW0lf

Я просто не знаю какая ветка и ключи в Vista может даже этиже, так как нет подрукой WinVista. Если знаешь то выложи, а попробую тебе помочь.
Автор: GloThin
Дата сообщения: 15.05.2007 15:19
Chanka

Цитата:
Что за ключи?

Ключи реестра, где прописана версия операционки, для Висты...

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Mail.ru агент - вход не выполнен


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