Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 8]
Dodakaedr
20-12-2015, 19:54
Но хотелось бы запуск страницы прикрутить к скрипту ниже.
Прикрутить к чекбоксу. »
И в чем собственно проблема? В примере я вам уже показывал как создать чекбокс и привязать к нему ссылку...[Setup]
AppName=ACDSee 5.0 Power Pack
AppVersion=ACDSee 5.0 Power Pack
DefaultDirName={pf}\ACD Systems
DisableFinishedPage=yes
OutputDir=.
UsePreviousAppDir=no
UsePreviousGroup=no
[Code]
var
LinkProg: TNewCheckBox;
function ShowFinishedForm(): Boolean;
var
FinishedForm: TSetupForm;
begin
FinishedForm := CreateCustomForm;
FinishedForm.Position:=poScreenCenter;
try
FinishedForm.ClientWidth := ScaleX(310);
FinishedForm.ClientHeight := ScaleY(133);
FinishedForm.BorderStyle := bsSingle;
FinishedForm.BorderIcons := [biSystemMenu];
FinishedForm.Caption := 'Установка — ACDSee 5.0 Power Pack';
FinishedForm.CenterInsideControl(WizardForm, False);
with TNewButton.Create(FinishedForm) do
begin
Parent := FinishedForm;
SetBounds(ScaleX(110), ScaleY(100), ScaleX(90), ScaleY(25));
ModalResult := mrYes;
Caption := SetupMessage(msgButtonYes);
end;
with TNewStaticText.Create(FinishedForm) do
begin
Parent:= FinishedForm;
Caption:='Все готово, приятного пользования!'+ #13#10 +
''+ #13#10 +
'Запустить программу сейчас?';
Left:=70;
Top:=20;
Font.Name:= 'Tahoma';
Font.Size:= 9;
Font.Color:=clBlack;;
end;
with TNewButton.Create(FinishedForm) do
begin
Parent := FinishedForm;
SetBounds(ScaleX(210), ScaleY(100), ScaleX(90), ScaleY(25));
ModalResult := mrNo;
Caption := SetupMessage(msgButtonNo);
end;
LinkProg := TNewCheckBox.Create(FinishedForm);
LinkProg.Parent := FinishedForm;
LinkProg.Caption := 'Посетить сайт программы';
LinkProg.SetBounds(ScaleX(50), ScaleY(70), ScaleX(150), ScaleY(20));
Result := (FinishedForm.ShowModal = mrYes);
finally
FinishedForm.Free;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
ResultCode: Integer;
r: integer;
begin
case CurStep of
ssDone:
begin
if ShowFinishedForm then
begin
Exec(ExpandConstant('{pf}\ArtIcons Pro\ARTICONS.exe'), '', '', SW_SHOW, ewNoWait, ResultCode);
end;
if LinkProg.Checked then
ShellExec('', 'http://www.obviousidea.com/windows-software/light-image-resizer/how-to-resize-a-photo/', '','', SW_SHOW, ewNoWait, r);
end;
end;
end;
В примере я вам уже показывал как создать чекбокс и привязать к нему ссылку...
Все гениально и просто.
Чекбокс создал, скрипт прикрутить не смог.
Большое спасибо.
vadjliss
21-12-2015, 21:21
парни подскажите как сделать что бы программа добавлялась в контекстное меню
в справке не нашёл
и ещё ни как не могу понять в чём причина
http://fs5.directupload.net/images/151223/temp/6ahiw3fh.jpg (http://fs5.directupload.net/images/151223/6ahiw3fh.jpg)
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
[Code]
type
PDisplay_Device = record
cb: DWord;
DeviceName: array [0..31] of char;
DeviceString: array [0..127] of char;
StateFlags: DWord;
DeviceID, DeviceKey: array [0..127] of char;
end;
TMixerCaps = record
vPid, vDriverVersion: DWord;
sName: array [0..31] of char;
Support, cDestinations: DWord;
end;
// Проверка версии Windows
#if Pos("4.", GetFileVersion(AddBackslash(GetEnv("windir")) + "Explorer.exe")) == 1
{Win9x}
TMemoryStatusEx = record
dwLength, dwMemoryLoad: DWord;
LoTotalPhys, LoAvailPhys, LoTotalPageFile, LoAvailPageFile,
LoTotalVirtual, LoAvailVirtual, LoAvailExtendedVirtual, HiTotalPhys,
HiAvailPhys, HiTotalPageFile, HiAvailPageFile, HiTotalVirtual, HiAvailVirtual,
HiAvailExtendedVirtual: Integer;
end;
function GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx): Boolean;
external 'GlobalMemoryStatus@kernel32.dll stdcall';
#else
{WinNT}
TMemoryStatusEx = record
dwLength, dwMemoryLoad: DWord;
LoTotalPhys, HiTotalPhys, LoAvailPhys, HiAvailPhys,
LoTotalPageFile, HiTotalPageFile, LoAvailPageFile, HiAvailPageFile,
LoTotalVirtual, HiTotalVirtual, LoAvailVirtual, HiAvailVirtual, LoAvailExtendedVirtual,
HiAvailExtendedVirtual: Integer;
end;
function GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx): Boolean;
external 'GlobalMemoryStatusEx@kernel32.dll stdcall';
#endif
const
DISPLAY_DEVICE_PRIMARY_DEVICE = 4;
oneMB = 1024*1024;
NeedMHz = 1800;
NeedVideoRAM = 128;
NeedSoundCard = 'Creative X-Fi';
NeedMB = 512;
NeedPageFile = 1024;
var
InfoPage: TWizardPage;
TopText, BottomText: TNewStaticText;
ChangeText: Boolean;
SystemPanel, ProcessorPanel, VideoPanel,
AudioPanel, RAMPanel, PageFilePanel: TMemo;
SystemVersionPanel, ProcessorMHzPanel, VideoRAMPanel,
AudioNamePanel, RAMTotalPanel, PageFileTotalPanel: TMemo;
lpCaps: TMixerCaps;
Version: TWindowsVersion;
MemoryEx: TMemoryStatusEx;
n, errCode: Integer;
Keys: TArrayOfString;
DeviceValue: Cardinal;
lpDisplayDevice: PDisplay_Device;
function GetSystemMetrics(nIndex: Integer): Integer;
external 'GetSystemMetrics@user32.dll stdcall';
function GetDeviceCaps(hDC, nIndex: Integer): Integer;
external 'GetDeviceCaps@GDI32 stdcall';
function CreateDC(lpDriverName, lpDeviceName, lpOutput: String; lpInitData: Integer): Integer;
external 'CreateDCA@GDI32 stdcall';
function EnumDisplayDevices(lpDevice, iDevNum: DWord; var lpDisplayDevice: PDisplay_Device; dwFlags: DWord): Boolean;
external 'EnumDisplayDevicesA@user32.dll stdcall';
function mixerGetDevCaps(uDeviceID: LongInt; var lpCaps: TMixerCaps; uSize: LongInt): LongInt;
external 'mixerGetDevCapsA@winmm.dll stdcall';
function mixerGetNumDevs: Integer;
external 'mixerGetNumDevs@winmm.dll stdcall';
// Дополнить число до кратного Multiple
function ToMultiple(Bytes, Multiple: Integer): Integer;
begin
if Abs(Bytes/Multiple) > Bytes/Multiple then
Result := (Bytes/Multiple + 1)*Multiple
else
Result := Bytes
end;
// Перевод числа в значение Бт/Кб/Мб/Гб/Тб (до 3х знаков после запятой)
function ByteOrTB(Bytes: Extended; noMB: Boolean): String;
begin
if not noMB then
Result := FloatToStr(Int(Bytes)) + ' Мб'
else
if Bytes < 1024 then
Result := FloatToStr(Int(Bytes)) + ' Бт'
else
if Bytes/1024 < 1024 then
Result := FloatToStr(round((Bytes/1024)*10)/10) + ' Кб'
else
if Bytes/oneMB < 1024 then
Result := FloatToStr(round(Bytes/oneMB*100)/100) + ' Мб'
else
if Bytes/oneMB/1000 < 1024 then
Result := FloatToStr(round(Bytes/oneMB/1024*1000)/1000) + ' Гб'
else
Result := FloatToStr(round(Bytes/oneMB/oneMB*1000)/1000) + ' Тб'
StringChange(Result, ',', '.')
end;
// Удаление начальных, конечных и повторных пробелов
function DelSp(String: String): String;
begin
while (Pos(' ', String) > 0) do Delete(String, Pos(' ', String), 1)
Result := Trim(String)
end;
function Size64(Hi, Lo: Integer): Extended;
begin
Result := Lo
if Lo < 0 then
Result := Result + $7FFFFFFF + $7FFFFFFF + 2
for Hi := Hi-1 downto 0 do Result := Result + $7FFFFFFF + $7FFFFFFF + 2
end;
function CheckCPU(NeedMHz: Integer): Boolean;
var
String: String;
begin
String := 'Hardware\Description\System\CentralProcessor'; RegGetSubkeyNames(HKLM, String, Keys) // Количество ядер
for n := 0 to GetArrayLength(Keys)-1 do
RegQueryStringValue(HKLM, String + '\' + Keys[n], 'ProcessorNameString', Keys[n])
if not RegQueryDWordValue(HKLM, String + '\0', '~MHz', DeviceValue) or (DeviceValue < NeedMHz) then
Exit
else
Result := True
end;
function CheckMemorySize(NeedRAM: Integer): Boolean;
begin
MemoryEx.dwLength := SizeOf(MemoryEx)
if not GlobalMemoryStatusEx(MemoryEx) then
MsgBox('Ошибка функции:' + #13 + 'GlobalMemoryStatusEx', mbError, mb_Ok)
else
if (ToMultiple(trunc(Size64(MemoryEx.HiTotalPhys, MemoryEx.LoTotalPhys)/oneMB), 16) < NeedRAM) then
Exit
else
Result := True
end;
procedure CreateCheckForm();
begin
TopText := TNewStaticText.Create(InfoPage)
with TopText do
begin
Parent := InfoPage.Surface
Left := 0
AutoSize := True
end
BottomText := TNewStaticText.Create(InfoPage)
with BottomText do
begin
Parent := InfoPage.Surface
Caption := 'Когда Вы будете готовы продолжить установку, нажмите «Далее».'
Font.Color := clBlack
Left := 0
Top := 200
AutoSize := True
end
SystemPanel := TMemo.Create(InfoPage)
with SystemPanel do
begin
Text := 'Система'
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := ScaleY(33)
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := $EEEEEE
end
SystemVersionPanel := TMemo.Create(InfoPage)
with SystemVersionPanel do
begin
Alignment := taLeftJustify
Parent := InfoPage.Surface
Left := ScaleX(104)
Top := SystemPanel.Top
Width := ScaleX(310)
Height := ScaleY(22)
ReadOnly := True
end
ProcessorPanel := TMemo.Create(InfoPage)
with ProcessorPanel do
begin
Text := 'Процессор'
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := SystemPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := $EEEEEE
end
ProcessorMHzPanel := TMemo.Create(InfoPage)
with ProcessorMHzPanel do
begin
Alignment := taLeftJustify
Parent := InfoPage.Surface
Left := ScaleX(104)
Top := ProcessorPanel.Top
Width := ScaleX(310)
Height := ScaleY(22)
ReadOnly := True
end
VideoPanel := TMemo.Create(InfoPage)
with VideoPanel do
begin
Text := 'Видеоадаптер'
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := ProcessorPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := $EEEEEE
end
VideoRAMPanel := TMemo.Create(InfoPage)
with VideoRAMPanel do
begin
Alignment := taLeftJustify
Parent := InfoPage.Surface
Left := ScaleX(104)
Top := VideoPanel.Top
Width := ScaleX(310)
Height := ScaleY(22)
ReadOnly := True
end
AudioPanel := TMemo.Create(InfoPage)
with AudioPanel do
begin
Text := 'Звуковая карта'
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := VideoPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := $EEEEEE
end
AudioNamePanel := TMemo.Create(InfoPage)
with AudioNamePanel do
begin
Alignment := taLeftJustify
Parent := InfoPage.Surface
Left := ScaleX(104)
Top := AudioPanel.Top
Width := ScaleX(310)
Height := ScaleY(22)
ReadOnly := True
end
RAMPanel := TMemo.Create(InfoPage)
with RAMPanel do
begin
Text := 'Объём памяти'
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := AudioPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := $EEEEEE
end
RAMTotalPanel := TMemo.Create(InfoPage)
with RAMTotalPanel do
begin
Alignment := taLeftJustify
Parent := InfoPage.Surface
Left := ScaleX(104)
Top := RAMPanel.Top
Width := ScaleX(310)
Height := ScaleY(22)
ReadOnly := True
end
PageFilePanel := TMemo.Create(InfoPage)
with PageFilePanel do
begin
Text := 'Файл подкачки'
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := RAMPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := $EEEEEE
end;
PageFileTotalPanel := TMemo.Create(InfoPage)
with PageFileTotalPanel do
begin
Alignment := taLeftJustify
Parent := InfoPage.Surface
Left := ScaleX(104)
Top := PageFilePanel.Top
Width := ScaleX(310)
Height := ScaleY(22)
ReadOnly := True
end
end;
procedure UpdateInfo();
var
DeviceName, DeviceKey: String;
begin
ChangeText := False
GetWindowsVersionEx(Version)
// Операционная система:
SystemVersionPanel.Color := $CCFFCC
DeviceKey := 'Software\Microsoft\Windows NT\CurrentVersion'
if not UsingWinNT then StringChange(DeviceKey, 'Windows NT', 'Windows')
RegQueryStringValue(HKLM, DeviceKey, 'ProductName', DeviceName)
if RegQueryStringValue(HKLM, DeviceKey, 'CSDVersion', DeviceKey) then
DeviceName := DeviceName + ' ' + DeviceKey
StringChange(DeviceName, 'Microsoft ', '')
SystemVersionPanel.Text := ' ' + DeviceName + ' сборка ' + IntToStr(Version.Major) + '.' + IntToStr(Version.Minor) +
'.' + IntToStr(Version.Build)
if (Pos('2000 Service Pack 4', SystemVersionPanel.Text) = 0) and // Windows 2000 SP4
(Pos('XP Service Pack 2', SystemVersionPanel.Text) = 0) and // Windows XP SP2
(Pos('XP Service Pack 3', SystemVersionPanel.Text) = 0) and // Windows XP SP3
(Pos('Vista', SystemVersionPanel.Text) = 0) then // Windows Vista (c любым SP или без него)
begin
SystemVersionPanel.Color := $CCCCFF
ChangeText := True
end
// Процессор:
ProcessorMHzPanel.Color := $CCFFCC
if not CheckCPU(NeedMHz) then
begin
ProcessorMHzPanel.Color := $CCCCFF
ChangeText := True
end
ProcessorMHzPanel.Text := ' ' + DelSp(Keys[0]) + ' @' + IntToStr(DeviceValue) + ' MHz'
if GetArrayLength(Keys) > 1 then
ProcessorPanel.Text := 'Процессоры' // + ' (' + IntToStr(GetArrayLength(Keys)) + ')'
// Видеокарта:
VideoRAMPanel.Color := $CCFFCC
lpDisplayDevice.cb := SizeOf(lpDisplayDevice)
DeviceKey := ''
n := 0
while not (EnumDisplayDevices(0, n, lpDisplayDevice, 0) and
(lpDisplayDevice.StateFlags and DISPLAY_DEVICE_PRIMARY_DEVICE > 0)) and (n < 127) do n := n + 1
for n := 0 to 127 do DeviceKey := DeviceKey + lpDisplayDevice.DeviceKey[n]
Delete(DeviceKey, Pos(Chr(0), DeviceKey), 127) // Ключ драйвера получаем из API
StringChange(DeviceKey, '\Registry\Machine\', '')
errCode := 1
DeviceValue := 0
if RegQueryBinaryValue(HKLM, DeviceKey, 'HardwareInformation.MemorySize', DeviceName) then
for n := 1 to Length(DeviceName) do
begin
DeviceValue := DeviceValue + Ord(DeviceName[n])*errCode
errCode := errCode*$100
end
else
if RegQueryDWordValue(HKLM, DeviceKey, 'HardwareInformation.MemorySize', DeviceValue) then
else
RegQueryDWordValue(HKLM, DeviceKey + '\Info', 'VideoMemory', DeviceValue)
DeviceName := ''
for n := 0 to 127 do DeviceName := DeviceName + lpDisplayDevice.DeviceString[n]
Delete(DeviceName, Pos(Chr(0), DeviceName), 127)
if DeviceName <> '' then
if DeviceValue > 0 then
VideoRAMPanel.Text := ' ' + DelSp(DeviceName) + ', '+ ByteOrTB(DeviceValue/oneMB, False)
else
VideoRAMPanel.Text := ' ' + DelSp(DeviceName) + ' (Standard), '+ ByteOrTB(DeviceValue/oneMB, False)
else
begin
VideoRAMPanel.Text := ' Драйвер устройства не обнаружен'
VideoRAMPanel.Color := $CCCCFF
ChangeText := True
end
if (DeviceValue/oneMB < NeedVideoRAM) then
begin
VideoRAMPanel.Color := $CCCCFF
ChangeText := True
end
VideoRAMPanel.Text := VideoRAMPanel.Text + ', ' + IntToStr(GetSystemMetrics(0)) + 'x' +
IntToStr(GetSystemMetrics(1)) + ' (' + IntToStr(GetDeviceCaps(CreateDC('DISPLAY','','',0),14) *
GetDeviceCaps(CreateDC('DISPLAY','','',0),12)) + ' bit)'
// Звуковая карта:
AudioNamePanel.Color := $CCFFCC
// for errCode := 0 to 1 do // Вывод основного звукового устройства
for errCode := 0 to mixerGetNumDevs do
begin
mixerGetDevCaps(errCode-1, lpCaps, SizeOf(lpCaps))
DeviceName := ' '
for n := 0 to 31 do DeviceName := DeviceName + lpCaps.sName[n]
Delete(DeviceName, Pos(Chr(0), DeviceName), 31)
Delete(DeviceName, Pos(' [', DeviceName), 31)
StringChange(DeviceName, 'SB ', 'Creative ')
Delete(DeviceName, Pos(' Audio', DeviceName), 31)
SetArrayLength(Keys, errCode)
if errCode > 0 then Keys[errCode-1] := DeviceName
end
if GetArrayLength(Keys) > 1 then
begin
AudioPanel.Text := 'Звуковые карты'
// AudioPanel.Text := 'Звуковые карты (' + IntToStr(GetArrayLength(Keys)) +')'
AudioNamePanel.Text := ''
for n := 1 to GetArrayLength(Keys) do
AudioNamePanel.Text := AudioNamePanel.Text + Keys[n-1] // + '(' + IntToStr(n) + ')'
end
else
if GetArrayLength(Keys) = 0 then
begin
AudioNamePanel.Text := ' Драйвер устройства не обнаружен'
AudioNamePanel.Color := $CCCCFF
ChangeText := True
end
else
AudioNamePanel.Text := Keys[0]
if Pos(NeedSoundCard, AudioNamePanel.Text) = 0 then
AudioNamePanel.Text := AudioNamePanel.Text + ' (рекомендуется ' + NeedSoundCard + ')'
// Объём памяти:
RAMTotalPanel.Color := $CCFFCC
if not CheckMemorySize(NeedMB) then
begin
RAMTotalPanel.Color := $CCCCFF
ChangeText := True
end
RAMTotalPanel.Text := ' ' + ByteOrTB(ToMultiple(trunc(Size64(MemoryEx.HiTotalPhys, MemoryEx.LoTotalPhys)/oneMB), 16), False) + ' всего, ' +
ByteOrTB(ToMultiple(trunc(Size64(MemoryEx.HiTotalPhys, MemoryEx.LoTotalPhys)/oneMB), 16) -
Size64(MemoryEx.HiAvailPhys, MemoryEx.LoAvailPhys)/oneMB, False) + ' используется, ' +
ByteOrTB(Size64(MemoryEx.HiAvailPhys, MemoryEx.LoAvailPhys)/oneMB, False) + ' свободно'
// Виртуальная память:
PageFileTotalPanel.Color := $CCFFCC
PageFileTotalPanel.Text := ' ' + ByteOrTB(Size64(MemoryEx.HiTotalPageFile, MemoryEx.LoTotalPageFile)/oneMB, False) + ' всего, ' +
ByteOrTB((Size64(MemoryEx.HiTotalPageFile, MemoryEx.LoTotalPageFile) -
Size64(MemoryEx.HiAvailPageFile, MemoryEx.LoAvailPageFile))/oneMB, False) + ' занято системным кэшем'
if Size64(MemoryEx.HiTotalPageFile, MemoryEx.LoTotalPageFile)/oneMB < NeedPageFile then
begin
PageFileTotalPanel.Color := $CCCCFF
ChangeText := True
end
if ChangeText = True then
begin
TopText.Top := 0
TopText.Caption := 'Не все компоненты удовлетворяют минимальным требованиям.' #13
'Пожалуйста, проверьте позиции, выделенные красным цветом.'
TopText.Font.Color := clRed
WizardForm.NextButton.Enabled := False
end
else
begin
TopText.Caption := 'Все компоненты соответствуют минимальным требованиям.'
TopText.Font.Color := clGreen
TopText.Top := 8
WizardForm.NextButton.Enabled := True
end
end;
procedure InitializeWizard();
begin
InfoPage := CreateCustomPage(wpLicense, 'Аппаратное и программное обеспечение',
'Программа установки обнаружила следующие наобходимые компоненты.')
CreateCheckForm() // Создание объектов TMemo, в которых будет выводится информация о системе
UpdateInfo() // Обновление информации о системе
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = InfoPage.ID then UpdateInfo() // Обновление информации о системе
end;
и ещё ни как не могу понять в чём причина »
Result := FloatToStr(round(Bytes/oneMB/oneMB*1000)/1000) + ' Тб';
Точку с запятой поставь в конце строки. Компилишь же на Unicode - версия критична к точкам с запятой в конце строк.
vadjliss
25-12-2015, 22:23
подскажите как убрать последнюю страницу инсталлятара
http://fs5.directupload.net/images/151225/temp/gdkim6q7.jpg (http://fs5.directupload.net/images/151225/gdkim6q7.jpg)
ToBeLife
26-12-2015, 05:31
Доброго времени суток.
Прошу помочь
1. Свернуть дерево компонентов - что необходимо прописать кроме флага Collapsed в [Components]?
2. Как изменить код "запрет установки в пустое место", чтобы можно было продолжить установку после предупреждения, и вместо ок - выдавало запрос:все равно продолжить? - да/нет
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
if not FileExists(ExpandConstant('{app}\file.xxx')) then begin
MsgBox('Установка невозможна. Проверьте правильность указаного пути!' #13#13'Installation is not possible. Check the correctness of the specified path!', mbError, MB_OK);
Result := False;
end;
end;
end;
3. Отображение компонентов в зависимости от языка.
Если выбирается Русский, то в последствии видны компоненты только А В С, если английский, то только D E F
sergey3695
26-12-2015, 10:51
vadjliss,
[setup]
DisableFinishedPage=yes
[Setup]: DisableFinishedPage (http://www.jrsoftware.org/ishelp/index.php?topic=setup_disablefinishedpage)
ToBeLife,
1. Не знаю и думаю это не хорошая идея.
2.
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
if not FileExists(ExpandConstant('{app}\file.xxx')) then begin
if not (MsgBox('Установка невозможна. Проверьте правильность указаного пути!' #13#13'Installation is not possible. Check the correctness of the specified path!', mbError, MB_OKCANCEL)=mrOk) then
Result := False;
end;
end;
end;
3.
[Languages]
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "eng"; MessagesFile: "compiler:Default.isl"
[Components]
Name: Mode; Description: mode; Types: custom; Languages: rus; flags: fixed
Name: Mode/A; Description: A; Languages: rus; Flags: disablenouninstallwarning
Name: Mode/B; Description: B; Languages: rus; Flags: disablenouninstallwarning
Name: Mode/C; Description: C; Languages: rus; Flags: disablenouninstallwarning
Name: Mode2; Description: mode; Types: custom; Languages: eng; flags: fixed
Name: Mode2/D; Description: D; Languages: eng; Flags: disablenouninstallwarning
Name: Mode2/E; Description: E; Languages: eng; Flags: disablenouninstallwarning
Name: Mode2/F; Description: F; Languages: eng; Flags: disablenouninstallwarning
kotyarko@fb
26-12-2015, 22:32
1. Свернуть дерево компонентов - что необходимо прописать кроме флага Collapsed в [Components]? »[Setup]
ComponentsListTVStyle=yes
vadjliss
02-01-2016, 11:31
ребята нашёл скрипт отключение музыки кнопкой там стоит файл waw, а у меня mp3 как исправить , а то выдаёт ошибку менял на mp3 толку нет
http://fs5.directupload.net/images/160102/temp/425dxgjw.jpg (http://fs5.directupload.net/images/160102/425dxgjw.jpg)
[Files]
Source: compiler:sound.wav; DestDir: "{tmp}"; Flags: dontcopy nocompression
[Code]
function sndPlaySound(lpszSoundName: string; uFlags: cardinal):integer;
external 'sndPlaySoundA@winmm.dll stdcall';
procedure StopSound(Sender: TObject);
begin
sndPlaySound(ExpandConstant(''), $0001 or $0008);
end;
procedure InitializeWizard();
var
ButtonStop: TButton;
begin
ExtractTemporaryFile(ExpandConstant('sound.wav'));
sndPlaySound(ExpandConstant('{tmp}\sound.wav'), $0001 or $0008);
ButtonStop := TButton.Create(WizardForm);
with ButtonStop do
begin
Parent := WizardForm;
Caption :='stop';
Left := ScaleX(8);
Top :=320
Width := ScaleX(43);
Height := ScaleY(33);
TabOrder := 0;
OnClick:=@StopSound
end;
end;
а у меня mp3 »См. BASS_Module (https://yadi.sk/d/sbVP37J8mdrYu)
Требуется помощь исправления пути под кнопкой Обзор... программной группы.
Скрипт
#include "Include\botva2.iss"
#define MyAppName "Comfy File Recovery 3.7"
#define MyAppVersion "3.7"
#define MyAppPublisher "Comfy Software"
#define MyAppURL "http://repaircorruptedfiles.ru/file-repair/how-to.html"
#define MyAppExeName "Comfy File Recovery.exe"
[Setup]
AppId={{7C6237DF-DD6A-4CA1-AA8D-62B087CA3D07}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName=Comfy File Recovery 3.7
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
DefaultDirName={pf}\Comfy Software\Comfy File Recovery 3.7
DefaultGroupName=Comfy Software\Comfy File Recovery 3.7
OutputBaseFilename=comfy_file_recovery_3.7_setup
ChangesAssociations=yes
DirExistsWarning=no
Uninstallable=not PortableCheck
DisableProgramGroupPage=yes
WizardImageFile=Include\1.bmp
WizardSmallImageFile=Include\2.bmp
SetupIconFile=Include\Icon.ico
UninstallDisplayIcon={app}\Comfy File Recovery.exe
UninstallIconFile=Include\Uninstall.ico
Compression=lzma/ultra64
SolidCompression=true
InternalCompressLevel=ultra64
OutputDir=.
UsePreviousAppDir=no
UsePreviousGroup=no
[Languages]
Name: "english"; MessagesFile: "compiler:Languages\English.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[ Code]
var
ComponentPage: TWizardPage;
InstallerGroupBox: TNewGroupBox;
Installer: TNewRadioButton;
Portable: TNewRadioButton;
StartMenuIcon: TNewCheckBox;
DirPageBox: TNewGroupBox;
ProgramGroupPageBox: TNewGroupBox;
LinkProg: TNewCheckBox;
/////////////////////////////////////////////////////
dirBrowseForm: TSetupForm; //
dirBrowse, dirOK, dirNO, dirback: TButton; //
DirTreeView: TFolderTreeView; //
Edit: TNewEdit; //
BrowseBevel: TBevel; //
BrowsePanel: TPanel; //
BrowsePanel2: TPanel; //
BrowseBevel2,BrowseBevel3: TBevel; //
BrowseForm : TSetupForm; //
/////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean); //
begin //
Confirm:=False; // Закрытие без подтверждения
end; //
/////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////
function InstallerCheck: Boolean; //
begin //
Result := Installer.Checked; //
end; //
////////////////////////////////////////
function PortableCheck: Boolean; //
begin //
Result := Portable.Checked; //
end; //
////////////////////////////////////////
/////////////////////////////////////////////////////
procedure CompClick(Sender: TObject); //
begin //
case TNewRadioButton(Sender) of //
Portable: //
begin //
WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{src}')) + 'ComfyFileRecoveryPortable';
WizardForm.Caption:= FmtMessage(ExpandConstant('Распаковка — %1'), [ExpandConstant('{#SetupSetting("AppName")}')]); //Распаковка
end; //
Installer: //
begin //
WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{pf}')) + 'Comfy Software\Comfy File Recovery 3.7';
WizardForm.Caption:= FmtMessage(SetupMessage(msgSetupWindowTitle), [ExpandConstant('{#SetupSetting("AppName")}')]); //Установка
end; //
end; //
end; //
/////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure dirOkclick(Sender: TObject); //
begin //
dirBrowseForm.Close; //
WizardForm.Enabled:=True; //
WizardForm.DirEdit.Text:=Edit.Text; //
end; //
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
procedure dirBackClick(Sender: TObject); //
begin // начало
if Portable.Checked then begin // если Portable.Checked тогда начать
Edit.Text:=AddBackslash(ExpandConstant('{src}\')+'ComfyFileRecoveryPortable'); //
DirTreeView.ChangeDirectory(AddBackslash(ExpandConstant('{src}\')), True); //
end else begin // конец еще начать
Edit.Text:=AddBackslash(ExpandConstant('{pf}\')+'Comfy Software\Comfy File Recovery 3.7'); //
DirTreeView.ChangeDirectory(AddBackslash(ExpandConstant('{pf}\')), True); //
end; //
end; // конец
///////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure dirNOclick(Sender: TObject); //
begin //
dirBrowseForm.Close; //
WizardForm.Enabled:=true; //
end; //
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
procedure DirFolderChange(Sender: TObject); //
Begin //
Edit.Text:=AddBackslash(DirTreeView.Directory) + 'Comfy Software\Comfy File Recovery 3.7'; //
if Portable.Checked then //
Edit.Text:=AddBackslash(DirTreeView.Directory) + 'ComfyFileRecoveryPortable'; //
end; //
////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure FormClosedir(Sender: TObject; var Action: TCloseAction); //
begin //
WizardForm.Enabled:=true; //
end; //
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////
procedure BrowseClick(Sender: TObject); //
begin //
dirBrowseForm := CreateCustomForm(); //
with dirBrowseForm do begin //
ClientWidth := ScaleX(352); //
ClientHeight := ScaleY(388); //
CenterInsideControl(WizardForm, False); //
Caption:='Обзор папок'; //
onClose:=@FormClosedir; //
///////////////////////////////////////////////////////////////
with tlabel.create(dirBrowseForm) do begin //
SetBounds(ScaleX(15),ScaleY(15),ScaleX(350),ScaleY(15)); //
caption:='Выберите папку из списка и нажмите «ОK».'; //
parent:=dirBrowseForm; //
Font.Color:=clBlack; //
Font.Size:=8; //
//////////////////////////////////////////////////////////////////////////
BrowseBevel := TBevel.Create(WizardForm); //
BrowseBevel.SetBounds(ScaleX(0),ScaleY(40),ScaleX(352),ScaleY(2)); //
BrowseBevel.parent:=dirBrowseForm; //
//
BrowseBevel3 := TBevel.Create(WizardForm); //
BrowseBevel3.SetBounds(ScaleX(0),ScaleY(342),ScaleX(352),ScaleY(2)); //
BrowseBevel3.parent:=dirBrowseForm; //
//////////////////////////////////////////////////////////////////////////
BrowsePanel := TPanel.Create(WizardForm); //
with BrowsePanel do //
begin //
parent:=dirBrowseForm; //
Left := ScaleX(5); //
Top := ScaleY(45); //
Width := ScaleX(342); //
Height := ScaleY(292); //
Caption := ''; //
end; //
BrowsePanel2 := TPanel.Create(WizardForm); //
with BrowsePanel2 do //
begin //
BrowsePanel2.Parent := BrowsePanel; //
Left := ScaleX(5); //
Top := ScaleY(5); //
Width := ScaleX(332); //
Height := ScaleY(282); //
BevelOuter := bvLowered; //
Caption := ''; //
end; //
BrowseBevel2 := TBevel.Create(WizardForm); //
with BrowseBevel2 do //
begin //
BrowseBevel2.Parent := BrowsePanel2; //
Left := ScaleX(5); //
Top := ScaleY(5); //
Width := ScaleX(322); //
Height := ScaleY(272); //
Style := bsRaised; //
end; //
//////////////////////////////////////////////////////////////////
Edit:= TNewEdit.Create(dirBrowseForm); //
with edit do begin //
SetBounds(ScaleX(10),ScaleY(10),ScaleX(311),ScaleY(21)); //
Text:=WizardForm.DirEdit.text; //
Parent:= BrowsePanel2; //
Font.Color:=clBlack; //
end; //
//
DirTreeView:= TFolderTreeView.Create(dirBrowseForm) //
with DirTreeView do begin //
SetBounds(ScaleX(10),ScaleY(35),ScaleX(311),ScaleY(235)); //
OnChange:=@DirFolderChange; //
Parent:=BrowsePanel2; //
end; //
///////////////////////////////////////////////////////////////////////////////
dirback:=tbutton.create(dirBrowseForm) //
with dirback do begin //
SetBounds(ScaleX(16),ScaleY(351),ScaleX(100),ScaleY(30)); //
parent:=dirBrowseForm; //
Caption:='Сброс'; //
onclick:=@dirBackClick; //
end; //
///////////////////////////////////////////////////////////////////////////////
dirok:=tbutton.create(dirBrowseForm) //
with dirok do begin //
SetBounds(ScaleX(126),ScaleY(351),ScaleX(100),ScaleY(30)); //
parent:=dirBrowseForm; //
Caption:='OK'; //
onclick:=@dirOKclick; //
end; //
///////////////////////////////////////////////////////////////////////////////
dirno:=tbutton.create(dirBrowseForm) //
with dirno do begin //
SetBounds(ScaleX(236),ScaleY(351),ScaleX(100),ScaleY(30)); //
parent:=dirBrowseForm; //
Caption:='Отмена'; //
onclick:=@dirNOclick; //
end; //
end; //
end; //
///////////////////////////////////////////////////////////////////////////////
DirTreeView.ChangeDirectory(AddBackslash(WizardForm.dirEdit.Text), true); //
Edit.Text:=(DirTreeView.Directory); //
dirBrowseForm.Show; //
WizardForm.Enabled:=false; //
end; //
///////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
procedure StartMenuIcon_OnClick(Sender: TObject); //
begin // Процедура для CheckBox
WizardForm.NoIconsCheck.Checked:= TNewCheckBox(Sender).Checked; // "Не создавать папку в меню Пуск"
end; //
/////////////////////////////////////////////////////////////////////
procedure CurPageChanged(CurPageID: Integer); //Изменить Страницу
begin
case CurPageID of //делать CurPageID из
wpSelectDir:
begin
if Portable.Checked then //если Portable.Checked тогда
begin
ProgramGroupPageBox.Hide;
WizardForm.GroupEdit.Hide;
WizardForm.GroupBrowseButton.Hide;
StartMenuIcon.Hide;
WizardForm.SelectGroupBitmapImage.Hide;
WizardForm.SelectStartMenuFolderLabel.Hide;
WizardForm.SelectStartMenuFolderBrowseLabel.Hide;
WizardForm.NextButton.Caption:= 'Распаковать';
DirPageBox.Caption:= 'Папка распаковки:';
WizardForm.Caption:= FmtMessage(ExpandConstant('Распаковка — %1'), [ExpandConstant('{#SetupSetting("AppName")}')]); //Распаковка
WizardForm.PageNameLabel.Caption:= ExpandConstant('Выбор папки распаковки');
WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('Программа распакует %1 в следующую папку.'), [ExpandConstant('{#SetupSetting("AppName")}')]);
WizardForm.SelectDirBrowseLabel.Caption:= 'Нажмите «Распаковать», чтобы началась распаковка. Если вы хотите выбрать другую папку, нажмите «Обзор».'
if Installer.Checked then //если Installer.Checked тогда
end else begin //конец еще начать
ProgramGroupPageBox.Show;
WizardForm.GroupEdit.Show;
WizardForm.GroupBrowseButton.Show;
StartMenuIcon.Show;
WizardForm.SelectGroupBitmapImage.Show;
WizardForm.SelectStartMenuFolderLabel.Show;
WizardForm.SelectStartMenuFolderBrowseLabel.Show;
WizardForm.NextButton.Caption:= 'Установить'
DirPageBox.Caption:= 'Папка установки:';
WizardForm.Caption:= FmtMessage(ExpandConstant('Установка — %1'), [ExpandConstant('{#SetupSetting("AppName")}')]); //Установка
WizardForm.PageNameLabel.Caption:= ExpandConstant('Выбор папки установки');
WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('Программа установит %1 в следующую папку.'), [ExpandConstant('{#SetupSetting("AppName")}')]);
WizardForm.SelectDirBrowseLabel.Caption:= 'Нажмите «Установить», чтобы началась установка. Если вы хотите выбрать другую папку, нажмите «Обзор».'
WizardForm.SelectStartMenuFolderBrowseLabel.Caption:= 'Нажмите «Установить», чтобы началась установка. Если вы хотите выбрать другую папку, нажмите «Обзор».'
end;
end;
wpInstalling:
if Installer.Checked then
begin
WizardForm.PageNameLabel.Caption:= ExpandConstant('Установка');
end else begin
WizardForm.PageNameLabel.Caption:= ExpandConstant('Распаковка');
end;
wpFinished:
if Portable.Checked then
begin
WizardForm.FinishedHeadingLabel.Caption:= FmtMessage(ExpandConstant('Завершение распаковки'), [ExpandConstant('{#SetupSetting("AppName")}')]);
WizardForm.FinishedLabel.Caption:= FmtMessage(ExpandConstant('Программа %1 распакована на Ваш компьютер.'#10#13''#10#13'Нажмите «Завершить», чтобы выйти из программы распаковки.'), [ExpandConstant('{#SetupSetting("AppName")}')]);
end else begin
WizardForm.FinishedHeadingLabel.Caption:= FmtMessage(ExpandConstant('Завершение установки'), [ExpandConstant('{#SetupSetting("AppName")}')]);
WizardForm.FinishedLabel.Caption:= FmtMessage(ExpandConstant('Программа %1 установлена на Ваш компьютер.'#10#13''#10#13'Нажмите «Завершить», чтобы выйти из программы установки.'), [ExpandConstant('{#SetupSetting("AppName")}')]);
end;
end;
end;
procedure InitializeWizard();
begin
WizardForm.DiskSpaceLabel.Hide;
ComponentPage := CreateCustomPage(wpWelcome, 'Выбор типа, компонентов и дополнительных задач', '...');
InstallerGroupBox := TNewGroupBox.Create(WizardForm);
with InstallerGroupBox do
begin
Parent := ComponentPage.Surface;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(210);
Height := ScaleY(64);
Caption := 'Тип установки:';
end;
Portable := TNewRadioButton.Create(WizardForm);
with Portable do
begin
Parent := InstallerGroupBox;
Left := ScaleX(10);
Top := ScaleY(39);
Width := ScaleX(195);
Height := ScaleY(17);
Caption := 'Распаковка портативной версии';
OnClick:=@CompClick;
end;
Installer := TNewRadioButton.Create(WizardForm);
with Installer do
begin
Parent := InstallerGroupBox;
Left := ScaleX(10);
Top := ScaleY(14);
Width := ScaleX(195);
Height := ScaleY(17);
Caption := 'Установка обычной версии';
OnClick:=@CompClick;
Checked := True
end;
DirPageBox := TNewGroupBox.Create(WizardForm);
with DirPageBox do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(417);
Height := ScaleY(107);
Caption := 'Папка установки:';
end;
ProgramGroupPageBox := TNewGroupBox.Create(WizardForm);
with ProgramGroupPageBox do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(112);
Width := ScaleX(417);
Height := ScaleY(107);
Caption := 'Папка в меню Пуск:';
end;
with WizardForm.DirEdit do
begin
Left := ScaleX(5);
Top := ScaleY(78);
Width := ScaleX(325);
Parent := DirPageBox;
end;
with WizardForm.DirBrowseButton do
begin
Left := ScaleX(337);
Top := ScaleY(77);
Parent := DirPageBox;
OnClick:=@BrowseClick;
end;
with WizardForm.SelectDirBitmapImage do
begin
Left := ScaleX(2);
Top := ScaleY(15);
Width := ScaleX(32);
Height := ScaleY(32);
Parent := DirPageBox;
end;
with WizardForm.SelectDirLabel do
begin
Left := ScaleX(34);
Top := ScaleY(23);
Width := ScaleX(381);
Height := ScaleY(14);
Parent := DirPageBox;
end;
with WizardForm.SelectDirBrowseLabel do
begin
Left := ScaleX(5);
Top := ScaleY(48);
Width := ScaleX(410);
Height := ScaleY(27);
Parent := DirPageBox;
end;
with WizardForm.GroupEdit do
begin
Left := ScaleX(5);
Top := ScaleY(78);
Width := ScaleX(325);
Parent := ProgramGroupPageBox;
end;
with WizardForm.GroupBrowseButton do
begin
Left := ScaleX(337);
Top := ScaleY(77);
Parent := ProgramGroupPageBox;
OnClick:=@BrowseClick;
end;
with WizardForm.SelectGroupBitmapImage do
begin
Left := ScaleX(5);
Top := ScaleY(15);
Width := ScaleX(32);
Height := ScaleY(32);
Parent := ProgramGroupPageBox;
end;
with WizardForm.SelectStartMenuFolderLabel do
begin
Left := ScaleX(37);
Top := ScaleY(23);
Width := ScaleX(378);
Height := ScaleY(14);
Parent := ProgramGroupPageBox;
end;
with WizardForm.SelectStartMenuFolderBrowseLabel do
begin
Left := ScaleX(5);
Top := ScaleY(48);
Width := ScaleX(410);
Height := ScaleY(27);
Parent := ProgramGroupPageBox;
end;
/////////////////////////////////////////////////////////////////
begin //
StartMenuIcon:= TNewCheckBox.Create(WizardForm); //
with StartMenuIcon do //
begin //
Parent:= WizardForm.SelectDirPage; // "Не создавать папку в меню Пуск"
SetBounds(ScaleX(10), ScaleY(219), ScaleX(200), ScaleY(17)); //
Caption := 'Не создавать папку в меню Пуск'; //
OnClick:=@StartMenuIcon_OnClick; //
end; //
/////////////////////////////////////////////////////////////////
end;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID = 8) or(PageID = 10) or(PageID = 14) then
Result:= True;
end;
vadjliss
04-01-2016, 08:57
парни что то не могу понять в чём дело не удаляется программа пишет ошибку в справке тоже ни чего не нашёл
http://fs5.directupload.net/images/160104/temp/csgkgg37.jpg (http://fs5.directupload.net/images/160104/csgkgg37.jpg)
vadjliss
04-01-2016, 09:39
всё разабрался
Dodakaedr
04-01-2016, 17:24
ZVSRus, вопрос не ясен.
вопрос не ясен
В скрипте при нажатии на кнопку Обзор (выбор папки в меню пуск), нет правильного пути установки и возвращении пути по умолчанию.
vadjliss
05-01-2016, 19:27
парни вопрос запись в host вот этот код работает только на 32 битной системе а как сделать что бы и на 64 битную записывала
if exist %systemroot%\SysWOW64 (
set hosts=%systemroot%\SysWOW64\drivers\etc\hosts
) else (
set hosts=%systemroot%\System32\drivers\etc\hosts
)
cacls %hosts% /E /G All:F
cacls %hosts% /E /G ‚бҐ:F
attrib -s -r -h %hosts%
(echo.
echo #
echo 127.0.0.1 cap.cyberlink.com
echo 127.0.0.1 activation.cyberlink.com
echo #
)>>%hosts%
cacls %hosts% /E /R All
cacls %hosts% /E /R ‚бҐ
ipconfig /flushdns
dimantv_wot@vk
05-01-2016, 22:04
Всем привет может кто скинуть простой скрипт.
kotyarko@fb
05-01-2016, 23:57
dimantv_wot@vk, краткость, может быть, и сестра таланта, но не в данном случае.
Вот вам самый простой скрипт:[Setup]
AppName=Program
AppVerName=1
DefaultDirName={app}
Какой вопрос - такой ответ.
dimantv_wot@vk
06-01-2016, 12:44
kotyarko@fb, почти точто нужно но как можно включить начальную страницу для смены картинки слева сбоку
kotyarko@fb
06-01-2016, 13:12
почти точто нужно » lol.
но как можно включить начальную страницу для смены картинки слева сбоку » В версиях Inno Setup ниже 5.5.7, WelcomePage по-умолчанию уже включена, и никаких дополнительных действий делать не нужно. Если вы используете 5.5.7, то для отображения этой страницы нужно:
[Setup]
DisableWelcomePage=no
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.