Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 8]
a.k.a. Rasputin
07-02-2016, 17:28
Цитата Dodakaedr:
Все работает! »
Работает, но при восстановлении из бэкапа не совсем правильно.
Возможно, в предыдущем сообщении я не совсем подробно обрисовал:
Вот содержимое основной директории
http://i75.fastpic.ru/big/2016/0207/16/9d3e8a87a2c2c3e854e25871ff1d3716.png
Из папки Sol 0_Data бекапим 3 файла
http://i73.fastpic.ru/big/2016/0207/f3/949d4fdd35a0aae17633ed6f2e0ba6f3.png
И из папки Sol 0_Data\Managed бэкапим 1 файл
На выходе получаем папку Backup, в ней папка Sol 0_Data с содержимым
http://i74.fastpic.ru/big/2016/0207/e8/3dd2238903a1257edebbe1b86946b1e8.png
Здесь все хорошо.
А вот далее, после деинсталляции, папка Sol 0_Data с содержимым бэкапа должна переместиться в основную директорию и заменить файлы.
Но она копируется на уровень ниже и имеем следующее
http://i76.fastpic.ru/big/2016/0207/c7/e5fd5e67d4fbad70b62396904bfdd1c7.png
а должно быть
http://i76.fastpic.ru/big/2016/0207/a7/625399199d15b81af7b24170f50773a7.png
Dodakaedr
07-02-2016, 17:59
должна переместиться в основную директорию и заменить файлы »
Код так и работает. Либо вы не правильно объясняете свою задачу либо я не пойму что вам нужно.
a.k.a. Rasputin, С какой папки бэкапите в ту папку и вернется. Скорее всего где-то у вас в скрипте ошибка. Покажите свой скрипт, а именно как вы делаете бэкап и восстанавливаете его?
a.k.a. Rasputin
07-02-2016, 18:40
Dodakaedr,
отправил в личку
vadjliss
07-02-2016, 19:27
парни не могу понять снимаю обе галочки ни чего не устанавливается нормально
но если оставить 1 то устанавливаются обе программы в чём дело может кто отредактирует буду признателен
[Tasks]
Name: fbrinst; Description: "Microsoft Visual C++"
Name: fbrinst; Description: "Kaspersky Free Antivirus 16.0.1.445.0.173.0 [Web-Installer]"
[Files]
Source: soft\Microsoft Visual C++.exe; DestDir: {tmp}; Tasks: fbrinst; Flags: deleteafterinstall
Source: soft\Kaspersky Free Antivirus 16.0.1.445.0.173.0 [Web-Installer].exe; DestDir: {tmp}; Tasks: fbrinst; Flags: deleteafterinstall
[Run]
Filename: {tmp}\Microsoft Visual C++.exe; Description: "Launch Firebird Setup"; Tasks: fbrinst
Filename: {tmp}\Kaspersky Free Antivirus 16.0.1.445.0.173.0 [Web-Installer].exe; Description: "Launch Firebird Setup"; Tasks: fbrinst
не могу понять снимаю обе галочки ни чего не устанавливается нормально
но если оставить 1 то устанавливаются обе программы »
Так у Вас обе задачи имеют одинаковое название - fbrinst - инсталятор воспринимает это, как одну команду. Каждая задача должна иметь уникальное имя
[Tasks]
Name: fbrinst; Description: "Microsoft Visual C++"
;Name: fbrinst; Description: "Kaspersky Free Antivirus 16.0.1.445.0.173.0 [Web-Installer]"
Name: kfa; Description: "Kaspersky Free Antivirus 16.0.1.445.0.173.0 [Web-Installer]"
[Files]
Source: soft\Microsoft Visual C++.exe; DestDir: {tmp}; Tasks: fbrinst; Flags: deleteafterinstall
Source: soft\Kaspersky Free Antivirus 16.0.1.445.0.173.0 [Web-Installer].exe; DestDir: {tmp}; Tasks: fbrinst; Flags: deleteafterinstall
[Run]
Filename: {tmp}\Microsoft Visual C++.exe; Description: "Launch Firebird Setup"; Tasks: fbrinst
Filename: {tmp}\Kaspersky Free Antivirus 16.0.1.445.0.173.0 [Web-Installer].exe; Description: "Launch Firebird Setup"; Tasks: kfa
a.k.a. Rasputin
09-02-2016, 18:46
Подскажите пожалуйста, как добавить страницу с двумя радиокнопками для копирования определенных файлов, например
при выборе 1-й - копируется 1.txt
при выборе 2-й - копируется 2.txt
по возможности с описанием этих кнопок. Что-то вроде этого, только без чекбоксов, только 2 радиокнопки:
http://i75.fastpic.ru/big/2016/0209/39/bc44e5503441f6ddf9c881297390b339.png (http://fastpic.ru/)
[Files]
Source: "{app}\1.txt"; DestDir: "{app}\Data"; BeforeInstall: "BackupFile()"; Flags: ignoreversion
Source: "{app}\2.txt"; DestDir: "{app}\Data"; BeforeInstall: "BackupFile()"; Flags: ignoreversion
Dodakaedr
09-02-2016, 20:32
a.k.a. Rasputin, вопрос какой-то не корректный, но судя по скрину, наверное так:
[setup]
appname=app
appvername=app v1.1
defaultdirname={sd}\app
[Files]
Source: "1.txt"; DestDir: "{app}"; Components: "a\check1"; Flags: ignoreversion
Source: "2.txt"; DestDir: "{app}"; Components: "a\check2"; Flags: ignoreversion
[Components]
Name: "a"; Description: "что-то для программы"; Types: full compact custom; Flags: fixed
Name: "a\check1"; Description: "1.txt"; Flags: exclusive
Name: "a\check2"; Description: "2.txt"; Flags: exclusive
более подробная инфа есть в справке.
dracosha
09-02-2016, 22:56
Ребят не могу найти живой пример, а сам в этом деле не смыслю. Помогите пожалуйста.
Есть три архива 7z - внутри архивов наборы иконок в формате png. Все три набора предлагаются на странице компонентов. Нужно чтобы распаковался выбранный архив.
Пользуюсь только расширенной китайской версией. Сборка Inno Ultra.
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
UninstallDisplayIcon={app}\MyProg.exe
OutputDir=userdocs:Inno Setup Examples Output
[Components]
Name: "program"; Description: "Program Files"; Flags: fixed;
Name: "Fugue"; Description: "Fugue"; Flags: exclusive;
Name: "Nova"; Description: "Nova"; Flags: exclusive;
Name: "Xpk"; Description: "Xpk"; Flags: exclusive;
[Files]
Source: "MyProg.exe"; DestDir: "{app}"; Components: program;
Source: "Fugue.7z"; DestDir: "{app}"; Components: Fugue;
Source: "Nova.7z"; DestDir: "{app}"; Components: Nova;
Source: "Xpk.7z"; DestDir: "{app}"; Components: Xpk;
[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
a.k.a. Rasputin
10-02-2016, 00:05
вопрос какой-то не корректный »
в установщике есть 2 файла.
Нужно, чтобы пользователь смог выбрать только один из них для установки при помощи радиокнопок.
В вашем варианте выше есть выпадающий список с выбором полной, компактной и выборочной установкой. Он не нужен.
Примеры:
http://i73.fastpic.ru/big/2016/0210/da/f357449ba719bd02bd7426d4e09a20da.png (http://fastpic.ru/)
http://i73.fastpic.ru/big/2016/0210/88/6a47fda9c90a15a60a1ac80d72ff6f88.png (http://fastpic.ru/)
http://i73.fastpic.ru/big/2016/0210/a2/2d82da12401648259d74c0a0081944a2.png (http://fastpic.ru/)
http://i73.fastpic.ru/big/2016/0210/37/7b19680fce49c4d675ceb6f921d10137.jpg (http://fastpic.ru/)
Dodakaedr
10-02-2016, 20:22
В вашем варианте выше есть выпадающий список с выбором полной, компактной и выборочной установкой. Он не нужен. »
http://forum.oszone.net/post-2594366-1235.html
saurn, На страницах 128, 129 Вы помогли мне разобраться с кнопкой Сброс.
Если есть время помогите разобраться еще с одной кнопкой Сброс.
Нужно кнопку Сброс прикрутить к программной группе.
Скрипт скинул в личку.
Dodakaedr
10-02-2016, 22:53
Ребят не могу найти живой пример, а сам в этом деле не смыслю. Помогите пожалуйста. »
"Живой" пример:[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=.
[Components]
Name: "arch"; Description: "1.7z\2.7z";
[Files]
Source: "7za.exe"; Flags: dontcopy deleteafterinstall
Source: "1.7z"; DestDir: "{app}\Icons"; AfterInstall: "Extract()"; Components: arch;
Source: "2.7z"; DestDir: "{app}"; AfterInstall: "Extract()"; Components: arch;
[Code]
procedure Extract();
var
rs: integer;
strFile: String;
begin
strFile := ExpandConstant(CurrentFileName);
if not FileExists(ExpandConstant('{tmp}\7za.exe')) then ExtractTemporaryFile('7za.exe');
Exec(ExpandConstant('{tmp}\7za.exe'), ' x '+'"'+strFile+'" -y -o'+'"'+ExtractFilePath(strFile)+'"', '', SW_Hide, ewWaitUntilTerminated, rs);
DeleteFile(strFile);
end;
Файлы для примера (https://yadi.sk/d/dTSftLAfodgrd)
Aviromathe
11-02-2016, 14:37
Как изменить заголовок MessageBox ?
С поддержкой юникода (c переводом строк из ANSI в UNICODE)
[Code]
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
const
FR_PRIVATE = $10;
procedure InitializeWizard();
begin
WizardForm.Caption:= ('Установка {#MyAppName}');
end;
procedure InitializeUninstallProgressForm();
begin
UninstallProgressForm.Caption:= ('Удаление {#MyAppName}');
end;
Aviromathe,
Как изменить заголовок MessageBox ?
А если так
[Messages]
UninstallAppFullTitle=Я такой-то удаляю — %1
Всем привет. Возникла такая проблема. Переустановила виндовс. После переустановки заново установила inno setup, качала с оф. сайта, то есть отсюда http://www.jrsoftware.org/isdl.php (это же оф. сайт?). Но как то теперь инно сетап работает не так. Компилирует все нормально, но при установке скомпилированной программы исчезло первое окошко приветствия (то есть там, где говорится "вас приветствует мастер установки программы, вы установите версию такую то.... и т.д.). То есть появляется сразу окошко с выбором места установки. И это не только с вновь созданными скриптами, то же самое происходит, если компилировать те скрипты, которые создавала ранее, до переустановки. Подскажите пожалуйста, в чем может быть проблема? Спасибо.
Aviromathe
12-02-2016, 13:36
Всем привет. Возникла такая проблема. Переустановила виндовс. После переустановки заново установила inno setup, качала с оф. сайта, то есть отсюда http://www.jrsoftware.org/isdl.php (это же оф. сайт?). Но как то теперь инно сетап работает не так. Компилирует все нормально, но при установке скомпилированной программы исчезло первое окошко приветствия (то есть там, где говорится "вас приветствует мастер установки программы, вы установите версию такую то.... и т.д.). То есть появляется сразу окошко с выбором места установки. И это не только с вновь созданными скриптами, то же самое происходит, если компилировать те скрипты, которые создавала ранее, до переустановки. Подскажите пожалуйста, в чем может быть проблема? Спасибо. »
Вот вам окно привествия
В последних версиях окно приветствия отключено
Если хотите его включить добавьте эту строку в скрипт
[Code]
DisableWelcomePage=no
Оффициальный сайт http://www.jrsoftware.org/
Venelana
13-02-2016, 13:57
Помогите пожалуйста,отключить кнопку "Отмена" во время установки
Если что смотрите картинку что за кнопка!
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{558D0D03-8238-4111-9709-EF358E0F2101}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Code]
const
MF_GRAYED = $1;
MF_BYCOMMAND = $0;
SC_CLOSE = $F060;
MF_BYPOSITION = $00000400;
type
HMENU = THandle;
function GetSystemMenu(hWnd: THandle; bRevert: Boolean): THandle; external 'GetSystemMenu@user32.dll stdcall';
function EnableMenuItem(hMenu: UINT; uIDEnableItem, uEnable: UINT): Boolean; external 'EnableMenuItem@user32.dll stdcall';
function DeleteMenu(hMenu: HMENU; uPosition, uFlags: UINT): BOOL; external 'DeleteMenu@user32.dll stdcall';
function GetMenuItemCount(hMenu: HMENU): Integer; external 'GetMenuItemCount@user32.dll stdcall';
procedure CurPageChanged(CurPageID: Integer);
var Menu: THandle;
begin
Menu := GetSystemMenu(WizardForm.Handle, False); EnableMenuItem(Menu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
if (CurPageID = wpSelectDir) or (CurPageID = wpReady) then
WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall)
else if (CurPageID = wpFinished) then
WizardForm.NextButton.Caption := SetupMessage(msgButtonFinish)
else
WizardForm.NextButton.Caption := SetupMessage(msgButtonNext);
end;
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Cancel:= true;
Confirm:= false;
end;
procedure InitializeWizard;
var
SystemMenu: HMENU;
begin
SystemMenu := GetSystemMenu(WizardForm.Handle, False);
DeleteMenu(SystemMenu, 9999, MF_BYCOMMAND);
DeleteMenu(SystemMenu, GetMenuItemCount(SystemMenu)-1, MF_BYPOSITION);
end;
Помогите пожалуйста,отключить кнопку "Отмена" во время установки
Как-то так
if (CurPageID = wpInstalling) then
WizardForm.CancelButton.Visible:= False;
Gamattinol
13-02-2016, 17:29
Как можно по другому отменить закрытие при помощи Alt + F4 ?
[Setup]
AppName=MyApp
AppverName=MyApp
DefaultDirName={pf}\MyApp
OutputDir=.
[code]
const
MF_BYCOMMAND = 0;
MF_ENABLED = 0;
MF_GRAYED = 1;
MF_DISABLED = 2;
SC_CLOSE = 61536;
GCL_STYLE = -26;
CS_NOCLOSE = $200;
function GetSystemMenu(hWnd: HWND; bRevert: BOOL): LongWord; external 'GetSystemMenu@user32.dll stdcall';
function EnableMenuItem(hMenu: THandle; uIDEnableItem: Longword; uEnable: Longword): Boolean; external 'EnableMenuItem@user32.dll stdcall';
function GetClassLong(Wnd: HWnd; Index: Integer): Longint; external 'GetClassLongA@user32.dll stdcall';
function SetClassLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetClassLongA@user32.dll stdcall';
procedure CurPageChanged(CurPageID: Integer);
begin
//if (CurPageID = wpInstalling) then
//begin
EnableMenuItem(GetSystemMenu(WizardForm.Handle, false), SC_CLOSE, MF_DISABLED or MF_BYCOMMAND);
SetClassLong(WizardForm.Handle, GCL_STYLE, GetClassLong(WizardForm.Handle, GCL_STYLE) or CS_NOCLOSE);
//end;
end;
отключить кнопку "Отмена" во время установки »
procedure CurPageChanged( const CurPageID: Integer );
begin
case CurPageID of
wpInstalling: WizardForm.CancelButton.Enabled := False;
end;
end;
Предыдущий пример отключает видимость кнопки.
Думаю, если уж лишать пользователя возможности отменить установку, то следует, также, отключить кнопку закрытия на бордюре окна. Хотя, в таскбаре окно все равно можно будет закрыть.
#define A = (Defined UNICODE) ? "W" : "A"
const
GCL_STYLE = - 26;
CS_NOCLOSE = $0200;
function SetClassLong( hWnd: HWND; nIndex: Integer; dwNewLong: Longint ): DWORD; external 'SetClassLong{#A}@user32.dll stdcall';
function GetClassLong( hWnd: HWND; nIndex: Integer ): DWORD; external 'GetClassLong{#A}@user32.dll stdcall';
procedure CurPageChanged( const CurPageID: Integer );
begin
case CurPageID of
wpInstalling:
begin
WizardForm.CancelButton.Enabled := False;
SetClassLong( WizardForm.Handle, GCL_STYLE, ( GetClassLong( WizardForm.Handle, GCL_STYLE ) or CS_NOCLOSE ) );
end;
end;
end;
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.