Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]
Dodakaedr
14-04-2014, 21:09
Ivan_009, У вас получилось то что хотели? (http://forum.oszone.net/post-2303526-2140.html)
Dinvin4ester
15-04-2014, 09:05
Так никто не поможет составить процентный прогресс бар ?
audiofeel
16-04-2014, 07:55
привет всем, как "замедлить" анимацию кнопок на ботве ?? при наведении указателя и тд.
Как с помощью Inno Setup скачать архив с сервера для определённого компонента
Всем доброго времени суток!
Подскажите плиз, что за компонент выводит сообщение FinishedHeadingLabel ("Завершение мастера установки")?
Mailchik
16-04-2014, 14:24
Shkutu, WizardForm.FinishedHeadingLabel
diman_21Ru
16-04-2014, 15:36
Всем привет как можно при установке мод-пака чтобы шрифты в модах устанавливались напрямик в папку Windows /Fonts
audiofeel
16-04-2014, 16:59
Всем привет как можно при установке мод-пака чтобы шрифты в модах устанавливались напрямик в папку Windows /Fonts »
так не пробовал ??
[Files]
Source: Fonts\calibrili.ttf; DestDir: {fonts}; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: Calibri Light Italic
как изменить размер шрифта для одной кнопки, (ботва) а не для всех ???
как изменить размер шрифта для одной кнопки, (ботва) а не для всех ??? »
audiofeel, Можно для каждой кнопки сделать так:
var
ButtonFont1: TFont;
ButtonFont2: TFont;
ButtonFont3: TFont;
procedure BtnSetFont1(h :HWND; Font :Cardinal); external 'BtnSetFont@{tmp}\b2p.dll stdcall delayload';
procedure BtnSetFont2(h :HWND; Font :Cardinal); external 'BtnSetFont@{tmp}\b2p.dll stdcall delayload';
procedure BtnSetFont3(h :HWND; Font :Cardinal); external 'BtnSetFont@{tmp}\b2p.dll stdcall delayload';
ButtonFont1:=TFont.Create;
with ButtonFont1 do begin
Name:='Tahoma';
Size:= 9;
Style:=[];
end;
ButtonFont2:=TFont.Create;
with ButtonFont2 do begin
Name:='Georgia';
Size:= 9;
Style:=[];
end;
ButtonFont3:=TFont.Create;
with ButtonFont3 do begin
Name:='Arial';
Size:= 9;
Style:=[];
end;
with WizardForm.CancelButton do begin
BtnSetFont1(hCancelBtn,ButtonFont1.Handle);
end;
with WizardForm.NextButton do begin
BtnSetFont2(hNextBtn,ButtonFont2.Handle);
end;
with WizardForm.BackButton do begin
BtnSetFont3(hBackBtn,ButtonFont3.Handle);
end;
procedure DeinitializeSetup;
begin
ButtonFont1.Free;
ButtonFont2.Free;
ButtonFont3.Free;
end;
diman_21Ru
16-04-2014, 17:56
audiofeel, Короче вот как я сделал :
Name: Fonts;Description:Fonts; Types: full compact custom; Flags: fixed
Source:"Fonts\*"; DestDir: {Fonts};Components:Fonts; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: Calibri Light Italic
установщик видит папку но не распаковывает не куда , что не так , заранее спасибо =)
habib2302
16-04-2014, 18:21
diman_21Ru, может попробовать запустить с правами админа?
Stealthmax
16-04-2014, 18:51
Приветствую всех! Проблема образовалась, не могу сам разобраться, подскажите в чем глюк?!
function InitializeSetup(): Boolean;
var
ResultCode: Integer; // Содержит код ошибки
GetPath: String; // Путь к программе
Message : integer;
oldVer: string;
begin
if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Sandboxie','UninstallString', GetPath) // Получаем путь к программе
then begin
GetPath := RemoveQuotes(GetPath);
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Sandboxie','DisplayVersion', oldVer);
Message := MsgBox('Найдена установленная версия {#MyAppName} '+oldVer+'! Удалить?', mbConfirmation, MB_YESNO);// Выводим сообщение
if Message = IDYES then
Exec('taskkill', '/f /im {#MyAppExeName}', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
Exec(GetPath, '', '', SW_SHOW,ewWaitUntilTerminated, ResultCode);
Result := True // Установка программы будет продолжена
end
end;
Определяет версию в реестре и выводит диалог удаления предыдущей, но удаление не происходит.
В реестре прописано: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Sandboxie
"UninstallString"="C:\Windows\Installer\SandboxieInstall64.exe" /remove
habib2302
16-04-2014, 19:44
Stealthmax,
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
AppId=wwwwwwwwwwwwww
[code ]
function UninstallMyApp(): Boolean;
var
Buff: String;
i: Integer;
begin
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 if MsgBox('Перед установкой необходимо удалить предыдущую версию приложения. Продолжить?', 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\{#SetupSetting("AppID")}_is1', 'UninstallString', Buff );
if not Result then MsgBox('Удаление завершилось неудачей, бывай!', mbError, MB_OK);
end;
end;
function InitializeSetup(): Boolean;
begin
Result := UninstallMyApp();
end;
Stealthmax
16-04-2014, 19:45
у меня есть похожый код »
Аналогично не запускает удаление. Данный код работает для Inno, т.к. и мой код работал для удаления предыдущей версии на Inno других программ.
Тут непонятная проблема с извлечением строки реестра, которая идет с параметром "UninstallString"="C:\Windows\Installer\SandboxieInstall64.exe" /remove, а для Inno по аналогии идет просто "UninstallString"=C:\Program Files\MyApp_is1\unins000.exe, т.е. при вызове Exec('Path','/SILENT','') подставляем дополнительный параметр и все прекрасно работает. Скорей всего это и есть загвоздка. Не знаю как это обойти, получается что извлекает строку, но как-то не так её выполняет. При вызове из обычной командной строки данного фрагмента тоже все нормально, запускает стандартное удаление.
habib2302
16-04-2014, 21:19
доброе время суток. если отказаться от удаления программы нажав "нет", то появляется ошибка
; Скрипт создан через Мастер Inno Setup Script.
; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP!
#define MyAppName "Display Driver Uninstaller"
#define MyAppVersion "12.6.3"
#define MyAppURL "http://anonym.to/?http://www.wagnardmobile.com/DDU/"
#define MyAppExeName "Display Driver Uninstaller.exe"
#include "WinTB.iss"
#include "botva2.iss"
[Setup]
; Примечание: Значение AppId идентифицирует это приложение.
; Не используйте одно и тоже значение в разных установках.
; (Для генерации значения GUID, нажмите Инструменты | Генерация GUID.)
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=true
OutputBaseFilename={#MyAppName} {#MyAppVersion} RePack (& Portable) by Xabib
SetupIconFile=ico.ico
Compression=lzma/Ultra64
SolidCompression=true
InternalCompressLevel=Ultra64
DiskSpanning=false
DiskSliceSize=736000000
ShowLanguageDialog=yes
SlicesPerDisk=4
UninstallDisplayIcon={app}\ico.ico
RawDataResource=Botva:botva2.dll|b2p:b2p.dll|Logo:logo.png|bPic:bPic.png|LiPic:LiPic.png|aPic:aPic.p ng
AppModifyPath={app}
VersionInfoProductName={#MyAppName}
DirExistsWarning=no
AppendDefaultDirName=false
AppendDefaultGroupName=false
DisableReadyPage=true
AppID={#MyAppName}
VersionInfoDescription={#MyAppName} RePack by Xabib
AppCopyright=Xabib © 2014
VersionInfoVersion={#MyAppVersion}
VersionInfoProductVersion={#MyAppVersion}
VersionInfoCopyright=Xabib © 2014
DisableFinishedPage=false
UninstallDisplayName={#MyAppName}
ComponentsListTVStyle=true
ShowComponentSizes=false
Uninstallable=not IsComponentSelected('DDU\Portable')
DisableProgramGroupPage=yes
CreateUninstallRegKey=not IsComponentSelected('DDU\Portable')
[Languages]
Name: "Russian"; MessagesFile: "Russian.isl"
[Types]
Name: full; Description: Полная установка; Flags: iscustom
[Tasks]
Name: icons; Description: {cm:AdditionalIcons}; Components: DDU\instal;
Name: icons\desktop; Description: {cm:CreateDesktopIcon}; Components: DDU\instal;
Name: icons\group; Description: {cm:CreateGroupIcon}; Components: DDU\instal;
Name: icons\quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; OnlyBelowVersion: 0,6.1; Components: DDU\instal;
Name: icons\taskbaricon; Description: {cm:CreateQuickLaunchIcon}; MinVersion: 0.0,6.1.7600; Components: DDU\instal; Flags: unchecked;
[Components]
Name: DDU; Description: {#MyAppName}; Flags: fixed disablenouninstallwarning; Types: full;
Name: DDU\instal; Description: Установить {#MyAppName}; Flags: exclusive disablenouninstallwarning
Name: DDU\Portable; Description: Распаковать {#MyAppName}; Flags: exclusive disablenouninstallwarning
[Files]
;Файлы распаковываемые в папку с игрой. Необходимы для деинсталлятора;
Source: WinTB.dll; Flags: dontcopy;
Source: ico.ico; DestDir: {app}; Flags: ignoreversion
; Примечание: Не используйте "Flags: ignoreversion" для системных файлов
Source: {app}\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs;
[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Components: DDU\instal; Tasks: icons\group; IconFilename: {app}\ico.ico;
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}; Components: DDU\instal; Tasks: icons\group; IconFilename: {app}\ico.ico;
Name: {group}\{cm:ProgramOnTheWeb,{#MyAppName}}; Filename: {#MyAppURL}; Components: DDU\instal; Tasks: icons\group;
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Components: DDU\instal; Tasks: icons\desktop; IconFilename: {app}\ico.ico;
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: {app}\{#MyAppExeName}; Components: DDU\instal; Tasks: icons\quicklaunchicon; IconFilename: {app}\ico.ico;
[Run]
Filename: {app}\{#MyAppExeName}; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait skipifsilent PostInstall Unchecked;
[ Code]
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
const
///////////////////////////////////Относится к лого и изображениям мастера
RT_RCDATA = 10;
LOAD_LIBRARY_AS_DATAFILE = $2;
var
///////////////////////////////////Лого и изображения
lPLogo, bPicHandle, bPicHandle2, lPicHandle: THandle;
BtnImage: TBitmapImage;
///////////////////////////////////////////
iInitialize: Boolean;
///////////////////////////////////Ресурсы(относится к лого и изображениям мастера)
function GetFromRes(const ResName, SaveFileName: String): Boolean;
var
lResStream: TResourceStream;
begin
lResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
try
lResStream.SaveToFile(AddBackslash(ExpandConstant('{tmp}')) + SaveFileName);
finally
lResStream.Free;
Result := FileExists(AddBackslash(ExpandConstant('{tmp}')) + SaveFileName);
end;
end;
function OnShouldSkipPage(Sender: TWizardPage): Boolean;
begin
if WizardForm.ComponentsList.Items.Count > 0 then WizardForm.Tag:= 1; // отображаются страницы выбора папки и компонентов
end;
procedure InitializeWizard;
begin
PageFromID(wpSelectDir).OnShouldSkipPage:= @OnShouldSkipPage
with WizardForm do
begin
///////////////////////////////////Логотип и изображения мастера
iInitialize := True;
if GetFromRes('_IS_BOTVA', 'botva2.dll') and GetFromRes('_IS_B2P', 'b2p.dll') and GetFromRes('_IS_LOGO', 'logo.png') and GetFromRes('_IS_BPIC', 'bPic.png') and GetFromRes('_IS_LIPIC', 'LiPic.png') and GetFromRes('_IS_APIC', 'aPic.png') then
begin
///////////////////////////////////Изображения
bPicHandle := ImgLoad(WelcomePage.Handle, ExpandConstant('{tmp}\aPic.png'), WizardBitmapImage.Left, WizardBitmapImage.Top, WizardBitmapImage.Width, WizardBitmapImage.Height, True, True);
WizardBitmapImage.Hide;
ImgSetVisibility(bPicHandle, True);
ImgApplyChanges(WelcomePage.Handle);
bPicHandle := ImgLoad(FinishedPage.Handle, ExpandConstant('{tmp}\bPic.png'), WizardBitmapImage2.Left, WizardBitmapImage2.Top, WizardBitmapImage2.Width, WizardBitmapImage2.Height, True, True);
WizardBitmapImage2.Hide;
ImgSetVisibility(bPicHandle, True);
ImgApplyChanges(FinishedPage.Handle);
lPicHandle := ImgLoad(MainPanel.Handle, ExpandConstant('{tmp}\LiPic.png'), WizardSmallBitmapImage.Left, WizardSmallBitmapImage.Top, WizardSmallBitmapImage.Width, WizardSmallBitmapImage.Height, True, True);
WizardSmallBitmapImage.Hide;
DiskSpaceLabel.Hide;
ComponentsDiskSpaceLabel.Hide;
ImgSetVisibility(lPicHandle, True);
ImgApplyChanges(MainPanel.Handle);
////////////////////////////////////////////
///////////////////////////////////Логотип
lPLogo:= ImgLoad(WizardForm.Handle, ExpandConstant('{tmp}\logo.png'), ScaleX(20), ScaleY(318), ScaleX(124), ScaleY(40), True, True);
ImgApplyChanges(WizardForm.Handle);
end;
///////////////////////////////////WinTB
ExtractTemporaryFile('WinTB.dll');
SetTaskBarProgressValue(0, 60);
SetTaskBarProgressState(0, TBPF_ERROR);
TaskBarV10(MainForm.Handle, WizardForm.Handle, false, false, 0, 0, _m_);
//////////////////////////////////////
with TLabel.Create(WizardForm) do
begin
Parent:=WizardForm;
AutoSize:=False;
Transparent:= true;
SetBounds(ScaleX(20), ScaleY(318), ScaleX(124), ScaleY(40));
end;
end;
end;
function LoadLibraryEx(lpFileName: String; hFile: THandle; dwFlags: DWORD): THandle; external 'LoadLibraryExA@kernel32.dll stdcall';
function LoadString(hInstance: THandle; uID: SmallInt; var lpBuffer: Byte; nBufferMax: Integer): Integer; external 'LoadStringA@user32.dll stdcall';
function PinToTaskbarWin7(Filename: String): Boolean;
var
hInst: THandle;
buf: array [0..255] of byte;
i: byte;
strVerb, s: String;
objShell, colverbs: Variant;
begin
if not FileExists(Filename) then Exit;
if (GetWindowsVersion shr 24 = 6) and ((GetWindowsVersion shr 16) and $FF = 1) then
begin
hInst := LoadLibraryEx(ExpandConstant('{sys}\shell32.dll'), 0, LOAD_LIBRARY_AS_DATAFILE);
for i := 0 to LoadString(hInst, 5386, buf[0], 255)-1 do strVerb := strVerb + Chr(Buf[i]);
FreeDLL(hInst);
try
objShell := CreateOleObject('Shell.Application');
except
ShowExceptionMessage;
Exit;
end;
colVerbs := objShell.Namespace(ExtractFileDir(Filename)).ParseName(ExtractFileName(Filename)).Verbs;
for i := colVerbs.Count downto 1 do if colVerbs.Item[i].Name = strVerb then
begin
colVerbs.Item[i].DoIt;
Result := True;
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
res:Integer;
s,s1:string;
begin
If CurStep=ssPostInstall
then
begin
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_SHOWNORMAL, ewWaitUntilTerminated, res);
if (CurStep = ssPostInstall) and IsTaskSelected('icons\taskbaricon') then PinToTaskbarWin7(ExpandConstant('{app}\{#MyAppExeName}'))
end;
end;
Procedure CurPageChanged(CurPageID: Integer);
Begin
Case CurPageID of
wpSelectTasks:
if IsComponentSelected('DDU\instal') then
begin
WizardForm.NextButton.Caption:= SetupMessage(msgButtonInstall);
end;
wpSelectDir: if WizardForm.Tag = 1 then
begin
WizardForm.SelectDirPage.Notebook.ActivePage:= WizardForm.SelectComponentsPage;
WizardForm.PageNameLabel.Caption:= SetupMessage(msgWizardSelectComponents);
WizardForm.Hint:= WizardForm.PageDescriptionLabel.Caption; // запомнить SetupMessage(msgSelectDirDesc)
WizardForm.PageDescriptionLabel.Caption:= SetupMessage(msgSelectComponentsDesc);
end;
wpSelectComponents: if WizardForm.Tag = 1 then
begin
WizardForm.SelectComponentsPage.Notebook.ActivePage:= WizardForm.SelectDirPage;
WizardForm.DiskSpaceLabel.Caption:= WizardForm.ComponentsDiskSpaceLabel.Caption;
WizardForm.PageNameLabel.Caption:= SetupMessage(msgWizardSelectDir);
WizardForm.PageDescriptionLabel.Caption:= WizardForm.Hint; // иначе вместо названия программы [name]
if IsComponentSelected('DDU\instal') then
begin
WizardForm.DirEdit.Text :=(ExpandConstant('{#SetupSetting("DefaultDirName")}'))
end else
if IsComponentSelected('DDU\Portable') then
begin
WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{src}')) + '{#MyAppName} Portable'
WizardForm.NextButton.Caption:= SetupMessage(msgButtonInstall);
end;
end;
end;
end;
procedure DeinitializeSetup();
begin
if iInitialize then
begin
gdipShutdown;
TaskBarDestroy;
end;
end;
procedure InitializeUninstallProgressForm;
begin
with UninstallProgressForm do
begin
///////////////////////////////////Логотип и изображения мастера
if GetFromRes('_IS_BOTVA', 'botva2.dll') and GetFromRes('_IS_B2P', 'b2p.dll') and GetFromRes('_IS_LOGO', 'logo.png') and GetFromRes('_IS_LIPIC', 'LIPic.png') then
begin
///////////////////////////////////Изображения
lPicHandle := ImgLoad(MainPanel.Handle, ExpandConstant('{tmp}\LiPic.png'), WizardSmallBitmapImage.Left, WizardSmallBitmapImage.Top, WizardSmallBitmapImage.Width, WizardSmallBitmapImage.Height, True, True);
WizardSmallBitmapImage.Hide;
ImgSetVisibility(lPicHandle, True);
ImgApplyChanges(MainPanel.Handle);
///////////////////////////////////Логотип
lPLogo:= ImgLoad(UninstallProgressForm.Handle, ExpandConstant('{tmp}\logo.png'), ScaleX(20), ScaleY(318), ScaleX(124), ScaleY(40), True, True);
ImgApplyChanges(UninstallProgressForm.Handle);
end;
with TLabel.Create(nil) do
begin
Parent:=UninstallProgressForm;
AutoSize:=False;
Transparent:= true;
SetBounds(ScaleX(20), ScaleY(318), ScaleX(124), ScaleY(40));
end;
end;
end;
procedure DeinitializeUninstall();
begin
gdipShutdown;
end;
http://i.imgur.com/q8XH9gl.png (http://i.imgur.com/iz3ax0w.png)
и как сделать установку по пути из реестра т.е
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1,InstallLocation|{pf}\My Program}
потому что у меня этот код не работает т.е вместо пути из реестра показывает др путь {pf}\My Program}
habib2302
16-04-2014, 22:34
с утра до вечера ни одного ответа на мое сообщение (http://forum.oszone.net/post-2339102-435.html)
если отказаться от удаления программы нажав "нет", то появляется ошибка »
procedure InitializeUninstallProgressForm;
begin
with UninstallProgressForm do
begin
iInitialize = True;
///////////////////////////////////Логотип и изображения мастера
if GetFromRes('_IS_BOTVA', 'botva2.dll') and GetFromRes('_IS_B2P', 'b2p.dll') and GetFromRes('_IS_LOGO', 'logo.png') and GetFromRes('_IS_LIPIC', 'LIPic.png') then
begin
///////////////////////////////////Изображения
lPicHandle := ImgLoad(MainPanel.Handle, ExpandConstant('{tmp}\LiPic.png'), WizardSmallBitmapImage.Left, WizardSmallBitmapImage.Top, WizardSmallBitmapImage.Width, WizardSmallBitmapImage.Height, True, True);
WizardSmallBitmapImage.Hide;
ImgSetVisibility(lPicHandle, True);
ImgApplyChanges(MainPanel.Handle);
///////////////////////////////////Логотип
lPLogo:= ImgLoad(UninstallProgressForm.Handle, ExpandConstant('{tmp}\logo.png'), ScaleX(20), ScaleY(318), ScaleX(124), ScaleY(40), True, True);
ImgApplyChanges(UninstallProgressForm.Handle);
end;
with TLabel.Create(nil) do
begin
Parent:=UninstallProgressForm;
AutoSize:=False;
Transparent:= true;
SetBounds(ScaleX(20), ScaleY(318), ScaleX(124), ScaleY(40));
end;
end;
end;
procedure DeinitializeUninstall();
begin
if iInitialize then gdipShutdown;
end;
потому что у меня этот код не работает т.е вместо пути из реестра показывает др путь {pf}\My Program} »
Вот это:
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1,InstallLocation|{pf}\My Program}
Работает по следующему принципу:
DefaultDirName={Если запись в реестре не найдена|Берем путь отсюда}
Вывод напрашивается сам собой: записи в реестре нет, или указана она здесь не верно.
-----------------------------------------------------------------------------------------
с утра до вечера ни одного ответа на мое сообщение »
Наверное потому что люди на форуме не живут, нет?
diman_21Ru
16-04-2014, 23:00
Парни почему при распаковки установщика не все шрифты ставятся , какова причина .
Аналогично не запускает удаление. »Проверял, запускает удаление:
Здесь обрати внимание на {#MyAppName}:
#define MyAppName "Sandboxie"
#define AppVerName "My Program"
#define MyAppExeName "MyProg.exe"
[Setup]
AppName={#MyAppName}
AppVersion=1.5
AppVerName={#AppVerName}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=.
[Files]
Source: compiler:Examples\{#MyAppExeName}; DestDir: {app}; Flags: ignoreversion
[Code]
function UninstallMyApp(): Boolean;
var
Buff: String;
i: Integer;
begin
Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppName}_is1', 'UninstallString', Buff );
if not Result then Result := not FileExists(RemoveQuotes(Buff));
if not Result then if MsgBox('Перед установкой необходимо удалить предыдущую версию приложения. Продолжить?', 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\{#MyAppName}_is1', 'UninstallString', Buff );
if not Result then MsgBox('Удаление завершилось неудачей, бывай!', mbError, MB_OK);
end;
end;
function InitializeSetup(): Boolean;
begin
Result := UninstallMyApp();
end;
а здесь на {#SetupSetting("AppID")}:
#define MyAppName "My Program"
#define MyAppExeName "MyProg.exe"
[Setup]
AppId=Sandboxie
AppName={#MyAppName}
AppVersion=1.5
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=.
[Files]
Source: compiler:Examples\{#MyAppExeName}; DestDir: {app}; Flags: ignoreversion
[Code]
function UninstallMyApp(): Boolean;
var
Buff: String;
i: Integer;
begin
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 if MsgBox('Перед установкой необходимо удалить предыдущую версию приложения. Продолжить?', 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\{#SetupSetting("AppID")}_is1', 'UninstallString', Buff );
if not Result then MsgBox('Удаление завершилось неудачей, бывай!', mbError, MB_OK);
end;
end;
function InitializeSetup(): Boolean;
begin
Result := UninstallMyApp();
end;
Кстати, если установлено через инсталлятор Inno, то создаётся в реестре ключ вида:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Sandboxie_is1
это значит что он отличен от
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Sandboxie
audiofeel
17-04-2014, 06:33
установщик видит папку но не распаковывает не куда , что не так , заранее спасибо »
я вроде понял что тебе нужно установить шрифты,
; Скрипт создан через Мастер Inno Setup Script.
; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP!
#define MyAppName "Моя программа"
#define MyAppVersion "1.5"
#define MyAppPublisher "Моя компания, Inc."
#define MyAppURL "http://www.сайт.com/"
#define MyAppExeName "MyProg.exe"
[Setup]
; Примечание: Значение AppId идентифицирует это приложение.
; Не используйте одно и тоже значение в разных установках.
; (Для генерации значения GUID, нажмите Инструменты | Генерация GUID.)
AppId={{CF96A237-9697-4D02-BB1B-84FA94A8FE44}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=true
ChangesAssociations=true
ChangesEnvironment=true
[Languages]
Name: english; MessagesFile: compiler:Languages\English.isl
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked; OnlyBelowVersion: 0,6.1
[Files]
Source: C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion
; Примечание: Не используйте "Flags: ignoreversion" для системных файлов
Source: TTF\Aniron.ttf; DestDir: {fonts}; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: Aniron
Source: TTF\ProtoSans56.otf; DestDir: {fonts}; Flags: onlyifdoesntexist uninsneveruninstall fontisnttruetype; FontInstall: Proto Sans 56
[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
Name: {group}\{cm:ProgramOnTheWeb,{#MyAppName}}; Filename: {#MyAppURL}
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon
Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: quicklaunchicon
[Run]
Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}; Flags: nowait postinstall skipifsilent unchecked
в этом скрипте устанавливаются два шрифта "Aniron" - это "TrueType"
и "Proto Sans 56" - этот шрифт не "TrueType"
после установки их видит Word и блокнот и они появляются в системной папке "шрифты", а также все записи в реестре
http://rghost.ru/54285090
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC