Victor_Dobrov -- пробовал - знаний не хватило. Но в размере особо не выиграешь - bmp хорошо сжимаются.
» Inno Setup (создание инсталяционных пакетов)
geranik
Цитата:
Спасибки - пойдет
Цитата:
В смысле в Types оставить 1 строчку с iscustom, если я правильно понял про вкладки.
[Types]
Name: "выборочная!"; Description: "Выбрано в ручную"; Flags: iscustom
Спасибки - пойдет
Господа, а исходников Inno Setup Unpacker в природе не существует? Последняя версия Inno им не поддерживается...
По этому вопросу, думаю, лучше прямиком к QuickeneR'у обратиться (он кстати зарегистрирован на руборде)
Victor_Dobrov
[more=Есть такой код]
var BackgroundForm: TForm;
function GetSystemMetrics(nIndex:Integer):Integer; external 'GetSystemMetrics@user32.dll stdcall';
function ShowWindow(hWnd, nCmdShow: LongWord): LongWord; external 'ShowWindow@user32.dll stdcall';
procedure BackgroundOnActivate(Sender: TObject);
Begin
if WizardForm.Visible then WizardForm.Show
End;
procedure InitializeWizard();
var
BackgroundBitmapImage: TBitmapImage;
s:string;
width, height:Integer;
bitmap:TBitmap;
var errorCode: Integer;
begin
WizardForm.Position:=poScreenCenter;
MainForm.BORDERSTYLE:=bsNone;
MainForm.Left := 0;
MainForm.Top := 0;
width:=GetSystemMetrics(0); //Если скрыть также панель задач, то значение 0 (см. также ниже!)
height:=GetSystemMetrics(1); //Если скрыть также панель задач, то значение 1
MainForm.Width:=width;
MainForm.Height:=height;
width:=MainForm.ClientWidth;
height:=MainForm.ClientHeight;
ExtractTemporaryFile('My_Image.bmp');
s:=ExpandConstant('{tmp}')+'\My_Image.bmp ';
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Align := alClient;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch:=True;
MainForm.Visible:=True;
BackgroundForm:= TForm.Create(MainForm)
BackgroundForm.BorderStyle:= bsNone;
BackgroundForm.FormStyle := fsStayOnTop;
BackgroundForm.Left:= 0; //место нахождения слайдшоу (левый нижний угол)
BackgroundForm.Top:= (MainForm.Height - BackgroundForm.Height); //место нахождения слайдшоу (левый нижний угол)
BackgroundForm.OnActivate:= @BackgroundOnActivate;
ShowWindow(BackgroundForm.Handle, SW_SHOW) // фоновое окно на полный экран если sw_ShowMaximized вместо SW_SHOW
if DirExists(ExpandConstant('{src}\..\Slides')) then // проверка наличия папки нужна только для SBSlideShow
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'fold', ExpandConstant('{src}\..\Slides')) else { если папка отсутствует, показываем Мои рисунки }
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'fold', ExpandConstant('{reg:HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders,My Pictures}'))
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'Alpha', '1'); // // без этого ключа не пашет
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'timer', '2'); // время показа картинки в секундах
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'ShowName', '0'); // // 1, чтобы отображать имя рисунка
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'efTRUE', '1'); // 0, чтобы отключить эффекты
ExtractTemporaryFile('SBSlideShow.scr'); // если сменить флаг ewNoWait на ewWaitUntilIdle, распаковка файлов будет происходить быстрее
Exec(ExpandConstant('{tmp}\SBSlideShow.scr'), '/P '+ IntToStr(BackgroundForm.Handle),'', sw_Hide, ewNoWait, ErrorCode);
end;
Procedure DeinitializeSetup;
Begin
BackgroundForm.Free // прекращаем работу скринсэвера
End;
[/more]
Визуально это выглядит так - сначала рисуется фоновое изображение, на нем появляется форма (светлый квадрат) и только через некоторое время появляется слайдшоу. Особенно это "некоторое" время хорошо заметно на слабых машинах. И этот светлый квадрат - честно немного раздражает.
Можно ли сделать чтоб до появления слайдшоу этого квадрата (формы) небыло видно??? Заранее Спасибо!
[more=Есть такой код]
var BackgroundForm: TForm;
function GetSystemMetrics(nIndex:Integer):Integer; external 'GetSystemMetrics@user32.dll stdcall';
function ShowWindow(hWnd, nCmdShow: LongWord): LongWord; external 'ShowWindow@user32.dll stdcall';
procedure BackgroundOnActivate(Sender: TObject);
Begin
if WizardForm.Visible then WizardForm.Show
End;
procedure InitializeWizard();
var
BackgroundBitmapImage: TBitmapImage;
s:string;
width, height:Integer;
bitmap:TBitmap;
var errorCode: Integer;
begin
WizardForm.Position:=poScreenCenter;
MainForm.BORDERSTYLE:=bsNone;
MainForm.Left := 0;
MainForm.Top := 0;
width:=GetSystemMetrics(0); //Если скрыть также панель задач, то значение 0 (см. также ниже!)
height:=GetSystemMetrics(1); //Если скрыть также панель задач, то значение 1
MainForm.Width:=width;
MainForm.Height:=height;
width:=MainForm.ClientWidth;
height:=MainForm.ClientHeight;
ExtractTemporaryFile('My_Image.bmp');
s:=ExpandConstant('{tmp}')+'\My_Image.bmp ';
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Align := alClient;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch:=True;
MainForm.Visible:=True;
BackgroundForm:= TForm.Create(MainForm)
BackgroundForm.BorderStyle:= bsNone;
BackgroundForm.FormStyle := fsStayOnTop;
BackgroundForm.Left:= 0; //место нахождения слайдшоу (левый нижний угол)
BackgroundForm.Top:= (MainForm.Height - BackgroundForm.Height); //место нахождения слайдшоу (левый нижний угол)
BackgroundForm.OnActivate:= @BackgroundOnActivate;
ShowWindow(BackgroundForm.Handle, SW_SHOW) // фоновое окно на полный экран если sw_ShowMaximized вместо SW_SHOW
if DirExists(ExpandConstant('{src}\..\Slides')) then // проверка наличия папки нужна только для SBSlideShow
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'fold', ExpandConstant('{src}\..\Slides')) else { если папка отсутствует, показываем Мои рисунки }
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'fold', ExpandConstant('{reg:HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders,My Pictures}'))
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'Alpha', '1'); // // без этого ключа не пашет
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'timer', '2'); // время показа картинки в секундах
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'ShowName', '0'); // // 1, чтобы отображать имя рисунка
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'efTRUE', '1'); // 0, чтобы отключить эффекты
ExtractTemporaryFile('SBSlideShow.scr'); // если сменить флаг ewNoWait на ewWaitUntilIdle, распаковка файлов будет происходить быстрее
Exec(ExpandConstant('{tmp}\SBSlideShow.scr'), '/P '+ IntToStr(BackgroundForm.Handle),'', sw_Hide, ewNoWait, ErrorCode);
end;
Procedure DeinitializeSetup;
Begin
BackgroundForm.Free // прекращаем работу скринсэвера
End;
[/more]
Визуально это выглядит так - сначала рисуется фоновое изображение, на нем появляется форма (светлый квадрат) и только через некоторое время появляется слайдшоу. Особенно это "некоторое" время хорошо заметно на слабых машинах. И этот светлый квадрат - честно немного раздражает.
Можно ли сделать чтоб до появления слайдшоу этого квадрата (формы) небыло видно??? Заранее Спасибо!
Corona Skin & Check System Requirements (380 Кб в архиве) - расширение инсталлятора Inno Setup.
Выбор вариантов деинсталляции теперь определяется корректно. Если программа уже установлена, название окна и кнопки на панели задач меняются на 'Обновление'. Для некоторых элементов поменял стандартный курсор на crHand. Доработаны поля ввода серийника и пароля. Клик по WizardForm.DiskSpaceLabel запускает утилиту 'Очистка дисков'.
GRom V, проверь, есть ли этот недостаток на Corona Skin...
Genri, понятно. Просто было много примеров, где BMP-шки лежат отдельно, вне инсталлятора.
Выбор вариантов деинсталляции теперь определяется корректно. Если программа уже установлена, название окна и кнопки на панели задач меняются на 'Обновление'. Для некоторых элементов поменял стандартный курсор на crHand. Доработаны поля ввода серийника и пароля. Клик по WizardForm.DiskSpaceLabel запускает утилиту 'Очистка дисков'.
GRom V, проверь, есть ли этот недостаток на Corona Skin...
Genri, понятно. Просто было много примеров, где BMP-шки лежат отдельно, вне инсталлятора.
Здравствуйте уважаемые модераторы. При создании инсталляционного скрипта я столкнулся с двумя проблемами. Во-первых, невозможность наложение рисунка (например, Button.bmp) на кнопку «AboutButton» («О программе…»). Ни один из доступных кодов не в состоянии решить проблему. Во-вторых, возможно ли, чтобы при нажатии кнопки «OK» в окне выбора папки установки инсталлятор сразу же (без подтверждения по кнопке «Далее») переходил на следующую страницу?
Пожалуйста, помогите правильным скриптом, буду весьма признателен за Вашу помощь!
Пожалуйста, помогите правильным скриптом, буду весьма признателен за Вашу помощь!
Victor_Dobrov
Глянь личку Плизз
Глянь личку Плизз
Подскажите пожайлуста средствами инстталятора можно реализовать защиту приложения?
мне необходимо сделать инсталятор, при установки приложения нужно вводить серийный номер, который дается при приобретении. после ввода нужно чтобы сгенерировался определенный ключ, этот ключ привязывается к железу, который пересылается мне и я по нему уже даю другой серийник для работы.
Или как это лучше реализовать. Необходимо чтобы пользователь мог установить только на один компьютер.
Может быть есть другие решения.
Помогите пожайлуста.
мне необходимо сделать инсталятор, при установки приложения нужно вводить серийный номер, который дается при приобретении. после ввода нужно чтобы сгенерировался определенный ключ, этот ключ привязывается к железу, который пересылается мне и я по нему уже даю другой серийник для работы.
Или как это лучше реализовать. Необходимо чтобы пользователь мог установить только на один компьютер.
Может быть есть другие решения.
Помогите пожайлуста.
Вылезла проблема с распаковкой файлов созданных последним InnoSetup...
Это только моя проблема или?....
Это только моя проблема или?....
Genri, спасибо ты здорово помог, причём ответив не на один, а на два интересующих вопроса.
Но помогите решить второй вопрос, а именно уже на твоём [more=скрипте][Files]
Source: ISTask.dll; DestDir: {app}
[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"
[CustomMessages]
en.CloseApp=Program is running! Close program and continue?
ru.CloseApp=Программа запущена! Закрыть программу и продолжить?
[Code]
function KillTaskA(ExeFileName: string): Integer;
external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';
function RunTaskA(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
begin
UnloadDLL(ExpandConstant('{app}\ISTask.dll'));
end;
end;
procedure InitializeUninstallProgressForm();
begin
if RunTaskA('calc.exe', false) then
if MsgBox(CustomMessage('CloseApp'), mbConfirmation, MB_YESNO) = IDYES then
KillTaskA('calc.exe')
else
Abort;
end;[/more], как поменять надпись
в шапке окна справа от иконки вверху, просто смотриться не очень красиво, я везде
поменял "Деинсталляция" на "Удаление", а в этом окне нет возможности.
Но помогите решить второй вопрос, а именно уже на твоём [more=скрипте][Files]
Source: ISTask.dll; DestDir: {app}
[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"
[CustomMessages]
en.CloseApp=Program is running! Close program and continue?
ru.CloseApp=Программа запущена! Закрыть программу и продолжить?
[Code]
function KillTaskA(ExeFileName: string): Integer;
external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';
function RunTaskA(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
begin
UnloadDLL(ExpandConstant('{app}\ISTask.dll'));
end;
end;
procedure InitializeUninstallProgressForm();
begin
if RunTaskA('calc.exe', false) then
if MsgBox(CustomMessage('CloseApp'), mbConfirmation, MB_YESNO) = IDYES then
KillTaskA('calc.exe')
else
Abort;
end;[/more], как поменять надпись
в шапке окна справа от иконки вверху, просто смотриться не очень красиво, я везде
поменял "Деинсталляция" на "Удаление", а в этом окне нет возможности.
Diawer -- Любопытно, а как ты менял ? Попробуй, ничего не меняя, добавить в скрипт две стрчки:
[Messages]
ru.UninstallAppTitle=Удаление
ru.UninstallAppFullTitle=Удаление — %1
[Messages]
ru.UninstallAppTitle=Удаление
ru.UninstallAppFullTitle=Удаление — %1
GRom V, [more=попробуй так]
[Setup]
AppName=Test
AppVerName=Test
CreateAppDir=false
[Files]
Source: Background.bmp; DestDir: {app}; DestName: My_Image.bmp
Source: SBSlideShow.scr; DestDir: {app}
[Code]
var BackgroundForm: TForm;
function GetSystemMetrics(nIndex:Integer):Integer; external 'GetSystemMetrics@user32.dll stdcall';
function ShowWindow(hWnd, nCmdShow: LongWord): LongWord; external 'ShowWindow@user32.dll stdcall';
procedure BackgroundOnActivate(Sender: TObject);
Begin
if WizardForm.Visible then WizardForm.Show
End;
Procedure CurPageChanged(CurPageID: Integer);
Begin
if CurPageID > wpWelcome then ShowWindow(BackgroundForm.Handle, SW_SHOW) // фоновое окно на полный экран если sw_ShowMaximized вместо SW_SHOW
End;
procedure InitializeWizard();
var
BackgroundBitmapImage: TBitmapImage;
s:string;
width, height:Integer;
bitmap:TBitmap;
var errorCode: Integer;
begin
WizardForm.Position:=poScreenCenter;
MainForm.BORDERSTYLE:=bsNone;
MainForm.Left := 0;
MainForm.Top := 0;
width:=GetSystemMetrics(0); //Если скрыть также панель задач, то значение 0 (см. также ниже!)
height:=GetSystemMetrics(1); //Если скрыть также панель задач, то значение 1
MainForm.Width:=width;
MainForm.Height:=height;
width:=MainForm.ClientWidth;
height:=MainForm.ClientHeight;
ExtractTemporaryFile('My_Image.bmp');
s:=ExpandConstant('{tmp}')+'\My_Image.bmp';
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Align := alClient;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch:=True;
MainForm.Visible:=True;
BackgroundForm:= TForm.Create(MainForm)
BackgroundForm.BorderStyle:= bsNone;
BackgroundForm.FormStyle := fsStayOnTop;
BackgroundForm.Left:= 0; //место нахождения слайдшоу (левый нижний угол)
BackgroundForm.Top:= (MainForm.Height - BackgroundForm.Height); //место нахождения слайдшоу (левый нижний угол)
BackgroundForm.OnActivate:= @BackgroundOnActivate;
if DirExists(ExpandConstant('{src}\..\Slides')) then // проверка наличия папки нужна только для SBSlideShow
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'fold', ExpandConstant('{src}\..\Slides')) else { если папка отсутствует, показываем Мои рисунки }
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'fold', ExpandConstant('{reg:HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders,My Pictures}'))
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'Alpha', '1'); // // без этого ключа не пашет
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'timer', '2'); // время показа картинки в секундах
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'ShowName', '0'); // // 1, чтобы отображать имя рисунка
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'efTRUE', '1'); // 0, чтобы отключить эффекты
ExtractTemporaryFile('SBSlideShow.scr'); // если сменить флаг ewNoWait на ewWaitUntilIdle, распаковка файлов будет происходить быстрее
Exec(ExpandConstant('{tmp}\SBSlideShow.scr'), '/P '+ IntToStr(BackgroundForm.Handle),'', sw_Hide, ewNoWait, ErrorCode);
end;
Procedure DeinitializeSetup;
Begin
BackgroundForm.Free // прекращаем работу скринсэвера
End;
[/more], но задержка есть и при обычном выборе заставки SBSlideShow.scr.
Midway, у меня новые сборки нормально извлекают файлы как с паролем, так и без.
[Setup]
AppName=Test
AppVerName=Test
CreateAppDir=false
[Files]
Source: Background.bmp; DestDir: {app}; DestName: My_Image.bmp
Source: SBSlideShow.scr; DestDir: {app}
[Code]
var BackgroundForm: TForm;
function GetSystemMetrics(nIndex:Integer):Integer; external 'GetSystemMetrics@user32.dll stdcall';
function ShowWindow(hWnd, nCmdShow: LongWord): LongWord; external 'ShowWindow@user32.dll stdcall';
procedure BackgroundOnActivate(Sender: TObject);
Begin
if WizardForm.Visible then WizardForm.Show
End;
Procedure CurPageChanged(CurPageID: Integer);
Begin
if CurPageID > wpWelcome then ShowWindow(BackgroundForm.Handle, SW_SHOW) // фоновое окно на полный экран если sw_ShowMaximized вместо SW_SHOW
End;
procedure InitializeWizard();
var
BackgroundBitmapImage: TBitmapImage;
s:string;
width, height:Integer;
bitmap:TBitmap;
var errorCode: Integer;
begin
WizardForm.Position:=poScreenCenter;
MainForm.BORDERSTYLE:=bsNone;
MainForm.Left := 0;
MainForm.Top := 0;
width:=GetSystemMetrics(0); //Если скрыть также панель задач, то значение 0 (см. также ниже!)
height:=GetSystemMetrics(1); //Если скрыть также панель задач, то значение 1
MainForm.Width:=width;
MainForm.Height:=height;
width:=MainForm.ClientWidth;
height:=MainForm.ClientHeight;
ExtractTemporaryFile('My_Image.bmp');
s:=ExpandConstant('{tmp}')+'\My_Image.bmp';
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Align := alClient;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch:=True;
MainForm.Visible:=True;
BackgroundForm:= TForm.Create(MainForm)
BackgroundForm.BorderStyle:= bsNone;
BackgroundForm.FormStyle := fsStayOnTop;
BackgroundForm.Left:= 0; //место нахождения слайдшоу (левый нижний угол)
BackgroundForm.Top:= (MainForm.Height - BackgroundForm.Height); //место нахождения слайдшоу (левый нижний угол)
BackgroundForm.OnActivate:= @BackgroundOnActivate;
if DirExists(ExpandConstant('{src}\..\Slides')) then // проверка наличия папки нужна только для SBSlideShow
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'fold', ExpandConstant('{src}\..\Slides')) else { если папка отсутствует, показываем Мои рисунки }
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'fold', ExpandConstant('{reg:HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders,My Pictures}'))
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'Alpha', '1'); // // без этого ключа не пашет
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'timer', '2'); // время показа картинки в секундах
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'ShowName', '0'); // // 1, чтобы отображать имя рисунка
RegWriteStringValue(HKCU, 'Software\Serbis\SBSlideShow', 'efTRUE', '1'); // 0, чтобы отключить эффекты
ExtractTemporaryFile('SBSlideShow.scr'); // если сменить флаг ewNoWait на ewWaitUntilIdle, распаковка файлов будет происходить быстрее
Exec(ExpandConstant('{tmp}\SBSlideShow.scr'), '/P '+ IntToStr(BackgroundForm.Handle),'', sw_Hide, ewNoWait, ErrorCode);
end;
Procedure DeinitializeSetup;
Begin
BackgroundForm.Free // прекращаем работу скринсэвера
End;
[/more], но задержка есть и при обычном выборе заставки SBSlideShow.scr.
Midway, у меня новые сборки нормально извлекают файлы как с паролем, так и без.
Ребята, кто-то, что-то знает, почему разработчик innounp не шевелится с новой вресией, кто может ему отписать или может на его форуме есть информация? Английский не знаю.
Хочется обновится до Inno 5.2.3, а приходится юзать 5.2.2, ради поддержки innounp от 27.10.07.
Хочется обновится до Inno 5.2.3, а приходится юзать 5.2.2, ради поддержки innounp от 27.10.07.
Всем привет!
Всегда сам разбирался со всем что мне надо в inno, но вот пришёл и мой
час. Траблы возникли со скином blue.
Если добавить для пользователя возможность не создавать папку в меню
Пуск, то check с данной функцией имеет ЧЁРНЫЫЙ ШРИФТ, тогда как везде
указан шрифт WINDOW (белый). Даже добавление строки Font.Color:=clWindow
(или любой другой цвет) непосредсвенно в секцию кода про позицию и
свойства этого Check'а (NoIconsCheck) ни к чему не приводит, шрифт
Чёрный...
Что это? Глюк или я тупее тупых? Например в инсталяторе руководства от
Kindly эта фишка NoIconsCheck отключена, уж не из-за той же проблемы
(скин то у него чёрный, надписи не видно)))
Помогите разобраться!
Всегда сам разбирался со всем что мне надо в inno, но вот пришёл и мой
час. Траблы возникли со скином blue.
Если добавить для пользователя возможность не создавать папку в меню
Пуск, то check с данной функцией имеет ЧЁРНЫЫЙ ШРИФТ, тогда как везде
указан шрифт WINDOW (белый). Даже добавление строки Font.Color:=clWindow
(или любой другой цвет) непосредсвенно в секцию кода про позицию и
свойства этого Check'а (NoIconsCheck) ни к чему не приводит, шрифт
Чёрный...
Что это? Глюк или я тупее тупых? Например в инсталяторе руководства от
Kindly эта фишка NoIconsCheck отключена, уж не из-за той же проблемы
(скин то у него чёрный, надписи не видно)))
Помогите разобраться!
machetos
http://data.cod.ru/57792101834
http://data.cod.ru/57792101834
можно ли както задать при компиляции /VERYSILENT /NORESTART?
тоесть что б было две инсталки одна нормальная а другая скомпиленая как
/VERYSILENT /NORESTART
нужно именно .exe но так типа эти два параметра уже задани
тоесть что б было две инсталки одна нормальная а другая скомпиленая как
/VERYSILENT /NORESTART
нужно именно .exe но так типа эти два параметра уже задани
Имеется, к примеру, такая запись:
Код: [Registry]
Root: HKCU; SubKey: Software\MyProg; ValueType: dword; ValueName: Test; ValueData: $00000001
Код: [Registry]
Root: HKCU; SubKey: Software\MyProg; ValueType: dword; ValueName: Test; ValueData: $00000001
Уважаемые, есть несколько вопросов по сабжу..
Подскажите, компилирует ли Inno Setup инсталяторы больше 2х гигабайт..?
Просто столкнулся с такой проблемой в программе Install Creator Pro, там этого сделать не возможно =(
И ещё помогите начинающему, нужен скрипт, в той же самой Install Creator Pro
можно было задать парметр запуска нескольким исполняемым файлам при завершении инсталяции.. например по окончанию инсталяции запустить без подвтерждения пользователя *.bat файл и по окончанию установки предложить запуск установленного приложения..
Спасибо!
Подскажите, компилирует ли Inno Setup инсталяторы больше 2х гигабайт..?
Просто столкнулся с такой проблемой в программе Install Creator Pro, там этого сделать не возможно =(
И ещё помогите начинающему, нужен скрипт, в той же самой Install Creator Pro
можно было задать парметр запуска нескольким исполняемым файлам при завершении инсталяции.. например по окончанию инсталяции запустить без подвтерждения пользователя *.bat файл и по окончанию установки предложить запуск установленного приложения..
Спасибо!
ChVL
Цитата:
Код:
procedure InitializeWizard();
begin
RegWriteDWordValue(HKCU, 'Software\MyProg', 'Test', $00000001);
end;
Цитата:
function RegWriteDWordValue (const RootKey: Integer; const SubKeyName, ValueName: String; const Value: Cardinal): Boolean;-- и какую ошибку выдает ?
Примера записи нигде не нашёл, а сам как только не пробовал – не компилирует…
Код:
procedure InitializeWizard();
begin
RegWriteDWordValue(HKCU, 'Software\MyProg', 'Test', $00000001);
end;
Необходимо экспортировать ключи в данную ветку:
HKLM\SYSTEM\CurrentControlSet\Enum\Root\
Обычным методом этого сделать не получается!Естественно они должны удаляться так же легко!.. Для ускорения "ДОГОНА" хочу спросить у Вас... КАК?? Заранее СПАСИБО всем кто откликнется!!
HKLM\SYSTEM\CurrentControlSet\Enum\Root\
Обычным методом этого сделать не получается!Естественно они должны удаляться так же легко!.. Для ускорения "ДОГОНА" хочу спросить у Вас... КАК?? Заранее СПАСИБО всем кто откликнется!!
Genri
Спасибо! Как это обычно бывает, ошибочку у себя я нашёл, пришёл отписаться.
Код немного другой:
Код:
[Сode]
function InitializeSetup(): Boolean;
begin
Result := True;
RegWriteDWordValue(HKCU, 'Software\MyProg', 'Test', $00000001);
end;
Спасибо! Как это обычно бывает, ошибочку у себя я нашёл, пришёл отписаться.
Код немного другой:
Код:
[Сode]
function InitializeSetup(): Boolean;
begin
Result := True;
RegWriteDWordValue(HKCU, 'Software\MyProg', 'Test', $00000001);
end;
ChVL
Цитата:
Цитата:
мне же надо её в процессе инсталляции-- вероятно имелось ввиду "в процессе запуска инсталлятора". Можно и так, только следует иметь ввиду, что если пользователь по ошибке запустит файл инсталлятора, от инсталляции он может отказаться, но запись в реестре останется. И в том примере что я приводил, тот же нюанс. Я просто привел пример синтаксиса функции RegWriteDWordValue.
Victor_Dobrov
Цитата:
Вроде нормально....ПРОШУ просчения за глупый вопрос - все вроде просто но не могу понять - Как можно сделать тоже самое, только после нажатия кнопки "Установить" - т.е непосредственно при начале инсталляции?
Заранее спасибо!
Добавлено:
Цитата:
Я имею ввиду не задержку перед выполнением самого слайдшоу, а задержку перед.....короче говоря вот этот (белый квадратик - форма) на которую грузится SBSlideShow.scr - чтоб его не было видно пока не загрузится SBSlideShow.scr
Цитата:
GRom V, попробуй так, но задержка есть и при обычном выборе заставки SBSlideShow.scr.
Вроде нормально....ПРОШУ просчения за глупый вопрос - все вроде просто но не могу понять - Как можно сделать тоже самое, только после нажатия кнопки "Установить" - т.е непосредственно при начале инсталляции?
Заранее спасибо!
Добавлено:
Цитата:
но задержка есть и при обычном выборе заставки SBSlideShow.scr
Я имею ввиду не задержку перед выполнением самого слайдшоу, а задержку перед.....короче говоря вот этот (белый квадратик - форма) на которую грузится SBSlideShow.scr - чтоб его не было видно пока не загрузится SBSlideShow.scr
Genri
Цитата:
Дык, и при стандартной деинсталляции остаётся! - Придётся удаление как-то прописывать...
Цитата:
запись в реестре останется
Дык, и при стандартной деинсталляции остаётся! - Придётся удаление как-то прописывать...
Victor_Dobrov
Цитата:
Сдесь - разобрался...как я и говорил все просто.
по поводу
Цитата:
Я так понимаю достаточно перенести строку ShowWindow(BackgroundForm.Handle, SW_SHOW) ниже создания формы и запуска SBSlideShow.scr и это уменьшит время показа формы - я правильно понимаю?
Цитата:
ПРОШУ просчения за глупый вопрос - все вроде просто но не могу понять - Как можно сделать тоже самое, только после нажатия кнопки "Установить" - т.е непосредственно при начале инсталляции?
Сдесь - разобрался...как я и говорил все просто.
по поводу
Цитата:
Я имею ввиду не задержку перед выполнением самого слайдшоу, а задержку перед.....короче говоря вот этот (белый квадратик - форма) на которую грузится SBSlideShow.scr - чтоб его не было видно пока не загрузится SBSlideShow.scr
Я так понимаю достаточно перенести строку ShowWindow(BackgroundForm.Handle, SW_SHOW) ниже создания формы и запуска SBSlideShow.scr и это уменьшит время показа формы - я правильно понимаю?
Genri
Цитата:
Так и менял, только UninstallAppFullTitle=Удаление — %1 в этом окне ничего не меняет,
а UninstallAppTitle=Удаление, меняет но так же и на Панели инструментов, надо не просто "Удаление", что бы было "Удаление DeskStickers", получается когда запускаешь деинсталлятор то в первом стандартном окне "Удаление DeskStickers" во втором из секции Code "Удаление", вопрос в том, что бы изменить надпись только в шапке окна [more=кода][Files]
Source: ISTask.dll; DestDir: {app}
[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"
[CustomMessages]
en.CloseApp=Program is running! Close program and continue?
ru.CloseApp=Программа запущена! Закрыть программу и продолжить?
[Code]
function KillTaskA(ExeFileName: string): Integer;
external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';
function RunTaskA(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
begin
UnloadDLL(ExpandConstant('{app}\ISTask.dll'));
end;
end;
procedure InitializeUninstallProgressForm();
begin
if RunTaskA('calc.exe', false) then
if MsgBox(CustomMessage('CloseApp'), mbConfirmation, MB_YESNO) = IDYES then
KillTaskA('calc.exe')
else
Abort;
end;[/more]
Цитата:
Любопытно, а как ты менял ?
Так и менял, только UninstallAppFullTitle=Удаление — %1 в этом окне ничего не меняет,
а UninstallAppTitle=Удаление, меняет но так же и на Панели инструментов, надо не просто "Удаление", что бы было "Удаление DeskStickers", получается когда запускаешь деинсталлятор то в первом стандартном окне "Удаление DeskStickers" во втором из секции Code "Удаление", вопрос в том, что бы изменить надпись только в шапке окна [more=кода][Files]
Source: ISTask.dll; DestDir: {app}
[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"
[CustomMessages]
en.CloseApp=Program is running! Close program and continue?
ru.CloseApp=Программа запущена! Закрыть программу и продолжить?
[Code]
function KillTaskA(ExeFileName: string): Integer;
external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';
function RunTaskA(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
begin
UnloadDLL(ExpandConstant('{app}\ISTask.dll'));
end;
end;
procedure InitializeUninstallProgressForm();
begin
if RunTaskA('calc.exe', false) then
if MsgBox(CustomMessage('CloseApp'), mbConfirmation, MB_YESNO) = IDYES then
KillTaskA('calc.exe')
else
Abort;
end;[/more]
ChVL
Вот. Регистрирует в конце, а при удалении удаляет значение и пустой ключ.
[more]
procedure CurStepChanged(CurStep: TSetupStep);
begin //конец установки
if CurStep = ssDone then
begin
RegWriteDWordValue(HKCU, 'Software\MyProg', 'Test', $00000001);
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
begin
RegDeleteValue(HKCU, 'Software\MyProg', 'Test');
RegDeleteKeyIfEmpty(HKCU, 'Software\MyProg')
end;
end;
[/more]
Вот. Регистрирует в конце, а при удалении удаляет значение и пустой ключ.
[more]
procedure CurStepChanged(CurStep: TSetupStep);
begin //конец установки
if CurStep = ssDone then
begin
RegWriteDWordValue(HKCU, 'Software\MyProg', 'Test', $00000001);
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
begin
RegDeleteValue(HKCU, 'Software\MyProg', 'Test');
RegDeleteKeyIfEmpty(HKCU, 'Software\MyProg')
end;
end;
[/more]
Diawer, вопрос в том, как изменить заголовок МессаджБокса, когда предлагают закрыть приложение?
Изпользуй WinAPI-шную MessageBox из руководства Kindly, примеры приводились.
Изпользуй WinAPI-шную MessageBox из руководства Kindly, примеры приводились.
Genri
Спасибо!
О проделанной работе сообщу!
Спасибо!
О проделанной работе сообщу!
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
Предыдущая тема: Поиск в WinDjView
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.