|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 8] |
|
|
Скрипты Inno Setup. Помощь и советы [часть 8]
|
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы (Archive Pack 1):
Скрипты Inno Setup. Помощь и советы [часть 6] Скрипты Inno Setup. Помощь и советы [часть 7] |
|
|
Отправлено: 08:52, 02-02-2015 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать us_ov, Примерно так
Скрытый текст
var
cbDrive: TComboBox;
DrvLetters: array of string;
FreeSpaceLabel: TLabel;
function GetDriveType(lpDisk: string): integer;
external 'GetDriveTypeA@kernel32.dll stdcall';
function GetLogicalDriveStrings(nLenDrives: LongInt; lpDrives: string): integer;
external 'GetLogicalDriveStringsA@kernel32.dll stdcall';
const
DRIVE_UNKNOWN=0;
DRIVE_NO_ROOT_DIR=1;
DRIVE_REMOVABLE=2;
DRIVE_FIXED=3;
DRIVE_REMOTE=4;
DRIVE_CDROM=5;
DRIVE_RAMDISK=6;
function DriveTypeString(dtype: integer): string;
begin
case dtype of
DRIVE_NO_ROOT_DIR: Result:='Неверный путь';
DRIVE_REMOVABLE: Result:='Съемный';
DRIVE_FIXED: Result:='Фиксированный';
DRIVE_REMOTE: Result:='Сетевой';
DRIVE_CDROM: Result:='CD-ROM';
DRIVE_RAMDISK: Result:='Ram диск';
else
Result:='Неизвестный';
end;
end;
procedure cbDriveOnClick(Sender: TObject);
begin
WizardForm.DirEdit.Text:=DrvLetters[cbDrive.ItemIndex]+'!Po';
end;
procedure FillCombo();
var
n: integer;
drivesletters: string; lenletters: integer;
drive: string;
disktype, posnull: integer;
sd: string;
begin
sd:=UpperCase(ExpandConstant('{sd}'));
drivesletters:=StringOfChar(' ', 64);
lenletters:=GetLogicalDriveStrings(63, drivesletters);
SetLength(drivesletters, lenletters);
drive:='';
n:=0;
while ((Length(drivesletters) > 0)) do
begin
posnull:=Pos(#0, drivesletters);
if posnull > 0 then
begin
drive:=UpperCase(Copy(drivesletters, 1, posnull-1));
disktype:=GetDriveType(drive);
if ( not ( disktype = DRIVE_CDROM ) ) then
begin
cbDrive.Items.Add(drive+DriveTypeString(disktype))
SetArrayLength(DrvLetters, N+1);
DrvLetters[n]:=drive;
if (Copy(drive, 1, 2)=sd) then cbDrive.ItemIndex:=n;
n:=n+1;
end
drivesletters:=Copy(drivesletters, posnull+1, Length(drivesletters));
end
end;
cbDriveOnClick(cbDrive);
end;
procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: string;
FreeMB, TotalMB: cardinal;
begin
Path:=ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption:='Свободно на диске: ' + FloatToStr(round(FreeMB/1024*100)/100) + ' GB'
else
FreeSpaceLabel.Caption:='Свободно на диске: ' + IntToStr(FreeMB) + ' MB'
end;
procedure InitializeWizard();
begin
cbDrive:=TComboBox.Create(WizardForm.SelectDirPage);
FreeSpaceLabel:=TLabel.Create(WizardForm);
with cbDrive do
begin
Parent:=WizardForm.DirEdit.Parent;
Left := ScaleX(0);
// Left:=WizardForm.DirEdit.Left+41; // 41
Top:=WizardForm.DirEdit.Top+WizardForm.DirEdit.Height*2-15; //2-15
// Width:=WizardForm.DirEdit.Width;
Width := ScaleX(400); //размер
Style:=csDropDownList;
end
with FreeSpaceLabel do
begin
Parent:=WizardForm.SelectDirPage;
Left:=ScaleX(0);
Top:=Scaley(195);
Width:=ScaleX(209); //209
Height:=ScaleY(13);
end;
WizardForm.DirBrowseButton.Visible:=false; // False
WizardForm.DirEdit.Enabled:=true;
WizardForm.DirEdit.OnChange:=@GetFreeSpaceCaption;
WizardForm.DirEdit.Text:=WizardForm.DirEdit.Text+#0;
FillCombo;
cbDrive.OnClick:=@cbDriveOnClick;
with WizardForm.DirEdit do
begin
Left := ScaleX(0);
Top := ScaleY(80); //выше ниже
Height := ScaleY(23);
Width:=ScaleX(400); //209 размер
end;
with WizardForm.DirBrowseButton do// пришлось сдвинуть обзор
begin
Left := ScaleX(0);
Top := ScaleY(150);
Height := ScaleY(30);
end;
end;
|
|
Отправлено: 16:40, 08-08-2015 | #871 |
|
Новый участник Сообщения: 22
|
Профиль | Отправить PM | Цитировать TryRooM, СПАСИБО!
|
|
Отправлено: 17:11, 08-08-2015 | #872 |
|
Забанен Сообщения: 96
|
|
|
Отправлено: 19:12, 08-08-2015 | #873 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать vadjliss,
[Setup] ;AllowNoIcons=yes не создавать папку в меню пуск Вы закомментировали? Посмотрите, у вас в коде нет этого. var No_Icons_CheckBox: TNewCheckBox; |
|
Последний раз редактировалось TryRooM, 08-08-2015 в 21:45. Отправлено: 20:58, 08-08-2015 | #874 |
|
Забанен Сообщения: 96
|
TryRooM
[Setup] ;AllowNoIcons=yes не создавать папку в меню пуск не отключает |
|
Отправлено: 21:32, 08-08-2015 | #875 |
|
SHVtYW4= Сообщения: 3451
|
Профиль | Отправить PM | Цитировать |
|
------- Отправлено: 21:52, 08-08-2015 | #876 |
|
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать Здравствуйте.
Решил сделать слайдшоу, нашел пример с использованием isgsg.dll: А можно ли как нибудь прописать показ изображений с помощью цикла - чтобы Inno сам формировал себе список для слайдшоу из изображений, которые найдёт в папке {tmp} ? |
|
Отправлено: 07:29, 09-08-2015 | #877 |
|
Забанен Сообщения: 96
|
|
|
Отправлено: 14:57, 11-08-2015 | #878 |
|
Пользователь Сообщения: 131
|
Профиль | Сайт | Отправить PM | Цитировать Цитата vadjliss:
Скрипт
#define gameid "{11110000-2222-3333-4444-555500000000}"
#define appname "My Program"
#define appversion "1.0"
[Setup]
AppId={{#gameid}
AppName={#appname}
AppVerName={#appname}
AppVersion={#appversion}
DefaultDirName={pf}\{#appname}
OutputDir=.
OutputBaseFilename=setup
Compression=lzma2/ultra64
SolidCompression=true
PrivilegesRequired=poweruser
[Languages]
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl";
[CustomMessages]
rus.DeleteInfo1=Перед установкой необходимо удалить предыдущую версию приложения. Удалить?
rus.DeleteInfo2=Удаление предыдущей версии приложения завершилось неудачей.
[Code_]
function UninstallMyApp(): Boolean;
var
Buff: String;
i: Integer;
begin
Result:= not RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#gameid}_is1', 'UninstallString', Buff);
if not Result then Result:= not FileExists(RemoveQuotes(Buff));
if not Result then
if MsgBox(ExpandConstant('{cm:DeleteInfo1}'), mbError, MB_YESNO) = IDYES then
try
Exec(RemoveQuotes(Buff), '', ExtractFilePath(RemoveQuotes(Buff)), SW_SHOW, ewWaitUntilTerminated, i);
finally Result:= not RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#gameid}_is1', 'UninstallString', Buff );
if not Result then MsgBox(ExpandConstant('{cm:DeleteInfo2}'), mbError, MB_OK);
end;
end;
function InitializeSetup(): Boolean;
begin
Result:= UninstallMyApp();
end;
|
|
|
------- Отправлено: 16:54, 12-08-2015 | #879 |
|
Забанен Сообщения: 96
|
Цитата Sotonisto:
не отображаются надписи ред установкой необходимо удалить предыдущую версию приложения. Удалить? Удаление предыдущей версии приложения завершилось неудачей. |
|
|
Отправлено: 19:58, 12-08-2015 | #880 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Скрипты Inno Setup. Помощь и советы [часть 7] | El Sanchez | Автоматическая установка приложений | 2499 | 02-02-2015 08:59 | |
| Скрипты Inno Setup. Помощь и советы [часть 6] | El Sanchez | Автоматическая установка приложений | 2494 | 10-03-2014 11:51 | |
| Скрипты Inno Setup. Помощь и советы [часть 5] | El Sanchez | Автоматическая установка приложений | 1999 | 28-03-2013 19:09 | |
| Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
| Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 | |
|