Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
Ivan_009
19-01-2014, 16:57
diman_21Ru, В личке
Ivan_009 edit можно наложить на картинку только за чем он же не прозрачный и смысла нету это делать
Ivan_009
19-01-2014, 17:13
vint56, А чтобы он прозрачный был и выделять можно как так сделать чет непойму.
Или только через ISPicture2 можно...
Ivan_009
19-01-2014, 21:52
Покажите пожалуйста пример плавного открытия и закрытия инсталлятора... Зарание спасибо...
музыка играет но как можно добавить кнопку вкл\выкл »
Для нуждающихся BASS v.1.4 (http://krinkels.org/showpost.php?p=10559&postcount=17)
P.S diman_21Ru, Пробуй иногда пользоваться поиском.
novahudonoser
20-01-2014, 13:04
всем привет! два вопросика:
1. как отключить регистрацию в списке установленных программ и формирование unins000.dat unins000.exe файлов
(нужен инсталятор чтобы только распаковал файлы в нужном месте и без "свидетелей", путь копирования файлов берётся из ключа в реестре)
2. если ключа нет - выводим мессейдж:
function GetInstallDir(const Default: String): String;
begin
RegQueryStringValue(HKLM, 'SOFTWARE\TimeCalculator', 'path', Result);
if Result <> '' then RemoveBackslash(Result) else MsgBoxEx(Application.Handle, 'блаблабла', 'Установка отменена', $10, 0, 0);
end;и в этот момент надо прервать процесс установки, как?
Mailchik
20-01-2014, 14:18
novahudonoser,
1. [Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
Uninstallable=no
2. [Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={code:GetInstallDir}
[Code]
var
sPath: string;
function GetInstallDir(const Default: String): String;
begin
Result := RemoveBackslash(sPath);
end;
function InitializeSetup(): boolean;
begin
Result := RegQueryStringValue(HKCU, 'SOFTWARE\7-Zip', 'Path', sPath);
if not Result then
MsgBoxEx(Application.Handle, 'блаблабла', 'Установка отменена', $10, 0, 0);
end;
novahudonoser
20-01-2014, 16:48
Mailchik, спасибо
только при обнаружении ключа, инсталер показывает ReadyPage http://clip2net.com/s/6DuYQR
чего хотелось бы избежать
ранее saurn мне подсказывал на этот счётfunction ShouldSkipPage(PageID: Integer): Boolean;
begin
ValueExists := RegValueExists(HKLM, 'SOFTWARE\TimeCalculator', 'path');
case PageID of
wpSelectDir: Result := ValueExists;
wpReady: Result := not ValueExists;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpSelectTasks: if ValueExists then WizardForm.NextButton.Caption := SetupMessage(msgButtonNext) else WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall);
end;
end;
но в купе с Вашим кодом - страница таки не игнорится, подскажите в чём проблема?
novahudonoser,
[Setup]
DisableReadyPage=yes
А выше означеный вами кусок кода можете вообще убрать из скрипта, я так понимаю, скрывать\показывать страницу готовности по условию больше не требуется.
novahudonoser
20-01-2014, 17:03
на данном этапе да, скрывать по условию больше не требуется
механизм обновления в последствии будет полностью автоматическим, это так сказать слеующий шаг к её реализации (пока полуавтоматический) )
вот код, и всё вроде так, а страница таки вылезает[Setup]
AppName=Update TimeCalculator
AppVerName=Update TimeCalculator
OutputDir=output\
OutputBaseFilename=Update_1.8
DefaultDirName={code:GetInstallDir}
AllowNoIcons=yes
DisableReadyPage=yes
DisableWelcomePage=yes
DisableStartupPrompt=yes
DisableFinishedPage=yes
Uninstallable=no
Compression=lzma
SolidCompression=yes
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Files]
Source: "update_TimeCalculator.exe"; DestDir: "{app}"; CopyMode: alwaysoverwrite; Flags: recursesubdirs
Source: "help\TimeCalculator.chm"; DestDir: "{app}"; CopyMode: alwaysoverwrite; Flags: recursesubdirs
*Code] // скобку заменил звездой из-за форума
var
sPath: string;
function GetInstallDir(const Default: String): String;
begin
Result := RemoveBackslash(sPath);
end;
function InitializeSetup(): boolean;
begin
Result := RegQueryStringValue(HKLM, 'SOFTWARE\TimeCalculator', 'Path', sPath);
if not Result then
MsgBoxEx(Application.Handle, 'Программа TimeCalculator не инициализирована!'+ Chr(10)+'Запустите программу и повторите установку обновления.', 'Установка обновления отменена', $10, 0, 0);
end;
novahudonoser
20-01-2014, 17:56
http://clip2net.com/s/6DxkSU
хотелось вообще не видеть окон инсталятора, это возможно?
.
novahudonoser
20-01-2014, 18:33
да, только месейдж при условии отсутствия ключа
да, только месейдж при условии отсутствия ключа »
[Setup]
AppName=Update TimeCalculator
AppVerName=Update TimeCalculator
OutputDir=output\
OutputBaseFilename=Update_1.8
DefaultDirName={reg:HKLM\SOFTWARE\TimeCalculator,Path}
AllowNoIcons=yes
Uninstallable=no
Compression=lzma
SolidCompression=yes
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Files]
Source: "update_TimeCalculator.exe"; DestDir: "{app}"; CopyMode: alwaysoverwrite; Flags: recursesubdirs
Source: "help\TimeCalculator.chm"; DestDir: "{app}"; CopyMode: alwaysoverwrite; Flags: recursesubdirs
[Code]
const
BM_CLICK = $00F5;
function ShowWindow(hWnd: HWND; nCmdShow: Integer): BOOL;
external 'ShowWindow@user32.dll stdcall';
function InitializeSetup(): Boolean;
begin
Result := RegValueExists(HKLM, 'SOFTWARE\TimeCalculator', 'path');
if not Result then MsgBoxEx(Application.Handle, 'Программа TimeCalculator не инициализирована!'+ Chr(10)+'Запустите программу и повторите установку обновления.', 'Установка обновления отменена', $10, 0, 0);
end;
procedure CurPageChanged(CurPageID: Integer);
begin
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), SW_HIDE); //Закоментировать, если нужно отображать страницу установки.
PostMessage(WizardForm.NextButton.Handle, BM_CLICK, 0, 0);
end;
P. S.
В шапке темы есть пример.
novahudonoser
20-01-2014, 18:56
беда... http://clip2net.com/s/6DzikK
всё из-за появляющегося диалога http://clip2net.com/s/6Dzm7J
если ответить нет - то инсталятор не выгружается
можно сделать чтобы вопросов вообще не возникало?
можно сделать чтобы вопросов вообще не возникало? »
[Setup]
DirExistsWarning=no
habib2302
22-01-2014, 22:52
доброе время суток. мне когда давали скрипт на предварительное удаление приложения. как сделать, чтобы скрипт срабатывал не сразу после запуска инсталлятора, а перед установкой при выборе определенного компонента.есть еще одна проблема.я делаю репак ultraiso и при выборе русского языка в компонентах то после установки или распаковки вместо русского стоит украинский
вот основная часть скрипта которая связана с языком
[Tasks]
Name: icons; Description: {cm:AdditionalIcons}; Components: UISO\instal;
Name: icons\desktop; Description: {cm:CreateDesktopIcon}; Components: UISO\instal;
Name: icons\group; Description: {cm:CreateGroupIcon}; Components: UISO\instal;
Name: icons\quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; OnlyBelowVersion: 0,6.1; Components: UISO\instal;
Name: icons\taskbaricon; Description: {cm:CreateQuickLaunchIcon}; MinVersion: 0.0,6.1.7600; Components: UISO\instal; Flags: unchecked;
Name: associate; Description: Ассоциировать .iso файл с UltraISO; MinVersion: 0.0,5.0; Components: UISO\instal;
Name: isodrive; Description: Установить ISO CD/DVD эмулятор (ISODrive); MinVersion: 0.0,5.0; Components: UISO\instal;
[Components]
Name: UltraISO; Description: {#MyAppName}; Flags: fixed; Types: full;
Name: UISO\instal; Description: Установить {#MyAppName}; Flags: exclusive
Name: UISO\Portable; Description: Распаковать {#MyAppName}; Flags: exclusive
Name: InterfaceLang; Description: {cm:InterfaceLang}; Flags: fixed; Types: full;
Name: InterfaceLang\ru; Description: Русский; Flags: exclusive;
Name: InterfaceLang\en; Description: Английский; Flags: exclusive;
Name: InterfaceLang\ua; Description: Украинский; Flags: exclusive;
[Registry]
Root: HKCU; Subkey: "Software\EasyBoot Systems\UltraISO\5.0"; ValueName: Language; ValueType: String; ValueData: 1033; MinVersion: 0.0,5.0; Flags: uninsdeletekey; Components: "UISO\instal InterfaceLang\en";
Root: HKCU; Subkey: "Software\EasyBoot Systems\UltraISO\5.0"; ValueName: Language; ValueType: String; ValueData: 1049; MinVersion: 0.0,5.0; Flags: uninsdeletekey; Components: "UISO\instal InterfaceLang\ru";
Root: HKCU; Subkey: "Software\EasyBoot Systems\UltraISO\5.0"; ValueName: Language; ValueType: String; ValueData: 1058; MinVersion: 0.0,5.0; Flags: uninsdeletekey; Components: "UISO\instal InterfaceLang\ua";
Root: HKCR; SubKey: UltraISO; ValueType: String; ValueData: "UltraISO File"; Tasks: associate; MinVersion: 0.0,5.0; Flags: uninsdeletekey; Components: "UISO\instal InterfaceLang\en";
Root: HKCR; SubKey: UltraISO; ValueType: String; ValueData: "Файл UltraISO"; Tasks: associate; MinVersion: 0.0,5.0; Flags: uninsdeletekey; Components: "UISO\instal InterfaceLang\ru";
Root: HKCR; SubKey: UltraISO; ValueType: String; ValueData: "UltraISO файл"; Tasks: associate; MinVersion: 0.0,5.0; Flags: uninsdeletekey; Components: "UISO\instal InterfaceLang\ua";
Root: HKCR; SubKey: UltraISO\shell\open; ValueType: String; ValueData: "Open with &UltraISO"; Tasks: associate; MinVersion: 0.0,5.0; Flags: uninsdeletekey; Components: "UISO\instal InterfaceLang\en";
Root: HKCR; SubKey: UltraISO\shell\open; ValueType: String; ValueData: "Открыть используя &UltraISO"; Tasks: associate; MinVersion: 0.0,5.0; Flags: uninsdeletekey; Components: "UISO\instal InterfaceLang\ru";
Root: HKCR; SubKey: UltraISO\shell\open; ValueType: String; ValueData: "Відкрити з &UltraISO"; Tasks: associate; MinVersion: 0.0,5.0; Flags: uninsdeletekey; Components: "UISO\instal InterfaceLang\ua";
[Ini]
Filename: {app}\uikey.ini; Section: UltraISO; Key: UserName; String: 'Xabib'; Components: UISO\Portable; Flags: UninsDeleteEntry;
Filename: {app}\uikey.ini; Section: UltraISO; Key: Registration; String: '7CAA-64E2-CCC5-5885'; Components: UISO\Portable; Flags: UninsDeleteEntry;
Filename: {app}\uikey.ini; Section: UltraISO; Key: Language; String: 'Russian'; Components: "UISO\Portable InterfaceLang\ru"; Flags: UninsDeleteEntry;
Filename: {app}\uikey.ini; Section: UltraISO; Key: Language; string: 'English'; Components: "UISO\Portable InterfaceLang\en"; Flags: UninsDeleteEntry;
Filename: {app}\uikey.ini; Section: UltraISO; Key: Language; string: 'Ukrainian'; Components: "UISO\Portable InterfaceLang\ua"; Flags: UninsDeleteEntry;
чтобы скрипт срабатывал не сразу после запуска инсталлятора, а перед установкой при выборе определенного компонента »
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
AppId=by Xabib
[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Components: comps1;
Source: C:\Windows\Fonts\*; DestDir: {app}; Flags: external; Components: comps2;
[Components]
Name: comps1; Description: Компонент 1; Types: full;
Name: comps2; Description: Компонент 2; Types: full;
[code]
function UninsPreInstall(): Boolean;
var
Buff, Name: String;
i: Integer;
begin
Result := IsComponentSelected('comps1');
if Result then Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1', 'UninstallString', Buff );
if not Result then Result := not FileExists(RemoveQuotes(Buff));
if not Result then
begin
RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1', 'DisplayName', Name );
WizardForm.StatusLabel.Caption := 'Удаление' + #32 + Name;
Exec(RemoveQuotes(Buff), '/VERYSILENT', ExtractFilePath(RemoveQuotes(Buff)), SW_SHOW, ewWaitUntilTerminated, i);
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of
ssInstall: UninsPreInstall();
end;
end;
Ivan_009
23-01-2014, 18:17
Как обьединить в одну страницу
Ivan_009, использовать вместо Tasks - Components (то есть в секции Components разместить нужные задачи). Ну или сделать родителем для элементов Components - SelectTasksPage.
Ivan_009
23-01-2014, 20:56
Как через ботву наложить такую форму чтобы зеленые края потом были прозрачные
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.