Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 4]
R.i.m.s.k.y.
10-04-2012, 16:54
Temyraz@fb, не пора ужо самому учится?
function TUT(filepath:string):string;
var
S: TArrayOfString;
i : Integer;
begin
if not FileExists(FilePath) then begin MsgBox('Файл не найден ' + FilePath, mbError, mb_Ok); Exit;end; // если файла нет, выходим
LoadStringsFromFile(FilePath, S); // загружаем файл
result := S[0];
end;
Exec (ExpandConstant ( '{tmp}\check.bat' ), TUT + AddQuotes(PathToPsql) , ExpandConstant ( '{tmp}' ), SW_HIDE, ewWaitUntilTerminated, ReturnCode );
И если хочешь добавить кавыки - используй AddQuotes
Ivan_009
10-04-2012, 19:23
Почему при отмене установки в стандартном скрипте инсталл тупо закрывается и не показывает финишную страницу пример:
Ivan_009, дело не в скрипте, а в настройках самого скрипта секции [Setup], понарысь, может погалочил чего-то.
понарысь, может погалочил чего-то »
Это на каком языке?;)
Temyraz@fb
11-04-2012, 10:47
Temyraz@fb, не пора ужо самому учится?
Код:
function TUT(filepath:string):string;
var
S: TArrayOfString;
i : Integer;
begin
if not FileExists(FilePath) then begin MsgBox('Файл не найден ' + FilePath, mbError, mb_Ok); Exit;end; // если файла нет, выходим
LoadStringsFromFile(FilePath, S); // загружаем файл
result := S[0];
end;
Exec (ExpandConstant ( '{tmp}\check.bat' ), TUT + AddQuotes(PathToPsql) , ExpandConstant ( '{tmp}' ), SW_HIDE, ewWaitUntilTerminated, ReturnCode );
И если хочешь добавить кавыки - используй AddQuotes »
сделал как ты сказал только пишет Invalid number of parameters
пишу так:
Exec (ExpandConstant ( '{tmp}\check.bat' ), PasswordPage.Edits[0].Text + AddQuotes(TUT), ExpandConstant ( '{tmp}' ), SW_HIDE, ewWaitUntilTerminated, ReturnCode );
R.i.m.s.k.y.
11-04-2012, 11:02
Temyraz@fb, в вызов TUT надо подставить имя_путь_файла откуда дергать строчку, не?
Exec (ExpandConstant ( '{tmp}\check.bat' ), PasswordPage.Edits[0].Text + AddQuotes(TUT(ExpandConstant ( '{src}\www.txt' ))), ExpandConstant ( '{tmp}' ), SW_HIDE, ewWaitUntilTerminated, ReturnCode );
Nestle_Nesquik
11-04-2012, 14:19
Всем привет! Какой будет скрипт, если добавить музыку при открытии установки игры или программы и картинка на весь экран?(ну когда открываешь установку, вместе с ней картинка на весь экран) Буду очень благодарен!
Вот скрипт:
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
[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={{9EF45819-0D12-4C3B-B2FA-FDA670E27623}
AppName=Fusion
AppVersion=3.51
;AppVerName=Fusion 3.51
DefaultDirName={pf}\Fusion
DefaultGroupName=Fusion 3.51
OutputBaseFilename=Установка приложения
Compression=lzma
SolidCompression=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "C:\Users\(имя пользователя)\Desktop\Smart_Install_Maker\Fusion 3.51.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{group}\Fusion"; Filename: "{app}\Fusion 3.51.exe"
Name: "{commondesktop}\Fusion"; Filename: "{app}\Fusion 3.51.exe"; Tasks: desktopicon
[Run]
Filename: "{app}\Fusion 3.51.exe"; Description: "{cm:LaunchProgram,Fusion}"; Flags: nowait postinstall skipifsilent
R.i.m.s.k.y.
11-04-2012, 14:22
Всем привет! »
Симметрично привет!
Какой будет скрипт, если добавить музыку при открытии установки игры или программы и картинка на весь экран? »
большой, длинный, непонятный
Как в шапке
Это на каком языке? »
На тарбаранском языке. :)
Сократил текст, чтоб понятно было; не пишу же так: ...поищи в настройках скрипта, может какие-то галочки вставил.
R.i.m.s.k.y.
11-04-2012, 14:54
alert30, хы, ты бы еще написал "грепать по сорцам" :)
Johny777
11-04-2012, 15:39
немного изменил один из примеров ботвы (теперь без ботвы)
при нажатии на кнопку "отмена" создаётся своя форма с кнопками "Да" и "Нет"
может кому-то (мне однозначно) пригодится
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
SolidCompression=yes
Compression=lzma/ultra
PrivilegesRequired=none
OutputDir=userdocs:Inno Setup Examples Output
[ code]
var
NoButton, YesButton: TButton;
MyExit: TSetupForm;
procedure MyExitMessage();
begin
MyExit := CreateCustomForm();
with MyExit do
begin
BorderIcons := [];
Position := poScreenCenter;
ClientWidth := ScaleX(230);
ClientHeight := ScaleY(100);
Caption := ExpandConstant(SetupMessage(msgExitSetupTitle));
Color := $48c1ca;
end;
NoButton := TButton.Create(MyExit);
with NoButton do
begin
Parent := MyExit;
Left := ScaleX(50);
Caption := 'Нет';
Top := ScaleY(60);
Width := ScaleX(60);
Height := ScaleY(25);
ModalResult:= mrNo;
end;
YesButton := TButton.Create(MyExit);
with YesButton do
begin
Caption := 'Да';
Parent := MyExit;
Left := ScaleX(120);
Top := ScaleY(60);
Width := ScaleX(60);
Height := ScaleY(25);
ModalResult := mrYes;
end;
end;
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm := False;
MyExitMessage();
if MyExit.ShowModal() = mrNo then
Cancel := False;
end;
зачем?
R.i.m.s.k.y., :)
оформление в инно - пустая трата времени, головняка много, а толку мало
http://img191.imageshack.us/img191/2051/41121108.png (http://imageshack.us/photo/my-images/191/41121108.png/)
sergey3695
11-04-2012, 16:24
только и остаётся к сожалению, тк чтобы добавить функцию какую ты хотел нужно связаться с автором библиотеки. Именно это я тебе советую. Его не трудно найти
или используй родной деинсталл, если это возможно
[UninstallDelete]
Type: filesandordirs; Name: {app} »
почитай из справки:
Эта Директива используется, чтобы предотвратить пользователей от установки новой версии приложения, пока приложение работает, и, чтобы помешать пользователю удаление запущенного приложения. Это указывает имена одного или более именованных мьютексы (несколько семафоров разделяются запятыми), которые Установке и удалению будет проверять при загрузке. Если таковые имеются, Установка/Удаление появится сообщение: "[Установки или удаления] показали, что [Заменяет] выполняется в настоящее время. Пожалуйста, закройте все экземпляры его сейчас, затем нажмите кнопку OK, чтобы продолжить, или Отменить, чтобы прервать работу." Значение может содержать константы.
Я знаю автора isdone, и тут библиотека не причем. Почитай можь поймешь.
Johny777
11-04-2012, 16:53
почитай из справки: »
давай подумаем
isdone я не использую и потому ограничен в помощи больше обычного.
Сам не использую его или другие скрипты/библиотеки нацеленные на создание возможности распаковки архивов Инно сатапом, созданных внешними ужималками а не родным встроенным 7-ZIP.
У меня всё работает!
ты же используешь исдан. А это библиотека со скриптом, через который ты к ней обращаешься. Уберём лишнее. Получаем в конечном итоге библиотеку и конфликт который тебе хочется решить
Вывод: Директива AppMutex несовместима с библиотекой или со скриптом-настройкой к библиотеке. Если второе, то совет я тебе дал. Не помогло? Значит обратись к автору библиотеки.
И справку я читал хоть и не всю (не isdone).
Ты лучше перечитай справку к isdone
И последнее . Этот форум не для обсуждения isdone. Для него есть особая ветка на руборде (не в обиду тебе).
PS:
у медали две стороны. Если ты ставишь себе превыше всего более сильное сжатие при помощи isdone, которое не всегда имеет место или не стоит того, то рискуешь потерять что-то другое.
sergey3695
11-04-2012, 17:12
Johny777, я тебе написал не про isdone
[Setup]: AppMutex
Description:
This directive is used to prevent the user from installing new versions of an application while the application is still running, and to prevent the user from uninstalling a running application. It specifies the names of one or more named mutexes (multiple mutexes are separated by commas), which Setup and Uninstall will check for at startup. If any exist, Setup/Uninstall will display the message: "[Setup or Uninstall] has detected that [AppName] is currently running. Please close all instances of it now, then click OK to continue, or Cancel to exit." The value may include constants.
Из справки inno про AppMutex.
Нехотел я объяснять, не люблю много печатать, но придёться. Из справки понятно что один и тот же AppMutex проверяется как и при запуске инсталлятора так и при запуске деинсталлятора.
Johny777
11-04-2012, 17:18
Из справки inno про AppMutex. »
зачем ты мне уже второй раз одно и то же из справки цитируешь
и чем смысл разъяснений справки отличается от моих же слов?
не даёт пользователю запустить тот же инсталл несколько раз пока он работает »
вот можешь посмотреть работу дерективы в деле на примере более ранней версии моего скрипта
http://sendfile.su/566305
sergey3695
11-04-2012, 17:23
вот скрин http://i31.fastpic.ru/thumb/2012/0411/79/6259677900003ef273dd17d5f0151a79.jpeg (http://fastpic.ru/view/31/2012/0411/6259677900003ef273dd17d5f0151a79.jpg.html)
Что тут непонятно?
Johny777
11-04-2012, 18:07
sergey3695,
Промт или гугловский переводчик?
Эта Директива используется, чтобы предотвратить пользователей от установки новой версии приложения, пока приложение работает, и, чтобы помешать пользователю удаление запущенного приложения. Это указывает имена одного или более именованных мьютексы (несколько семафоров разделяются запятыми), которые Установке и удалению будет проверять при загрузке. Если таковые имеются, Установка/Удаление появится сообщение: "[Установки или удаления] показали, что [Заменяет] выполняется в настоящее время. Пожалуйста, закройте все экземпляры его сейчас, затем нажмите кнопку OK, чтобы продолжить, или Отменить, чтобы прервать работу." Значение может содержать константы.
Я знаю автора isdone, и тут библиотека не причем. Почитай можь поймешь. »
вот русская справка.
http://sendfile.su/570136
Ivan_009
11-04-2012, 18:36
Покажите пример наложения картинки на весь экран только не через isgsg.dll.. :drug:
Johny777
11-04-2012, 18:58
Ivan_009,
1. фоновый рисунок в зависимости от разрешения экрана (разрешения не все. Сделай по аналогии какие надо)
[Setup]
AppName=AppName
AppVerName=AppVerName
DefaultDirName={pf}\AppName
[Files]
Source: 640.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 800.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 1024.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 1152.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 1280.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 1600.bmp; DestDir: {tmp}; Flags: dontcopy
[ Code]
function GetDC(HWND: DWord): DWord;
external 'GetDC@user32.dll stdcall';
function GetDeviceCaps(DC: DWord; Index: Integer): Integer;
external 'GetDeviceCaps@gdi32.dll stdcall';
function ReleaseDC(HWND: DWord;DC: DWord): Integer;
external 'ReleaseDC@user32.dll stdcall';
function ShowWindow(hWnd: DWord; nCmdShow: Integer): boolean;
external 'ShowWindow@user32.dll stdcall';
function SetWindowLong(hWnd: DWord; nIndex: Integer; dwNewLong: Longint): Longint;
external 'SetWindowLongA@user32.dll stdcall';
procedure InitializeWizard();
var
bgImage : TBitmapImage;
bgImageName: String;
width: integer;
dc: DWord;
begin
bgImage:=TBitmapImage.Create(MainForm)
bgImage.Align:=alClient
bgImage.Stretch:=True
bgImage.Parent:=MainForm
dc:=GetDC(MainForm.Handle)
width:=GetDeviceCaps(dc,8)
ReleaseDC(MainForm.Handle,dc)
if width <=640 then
bgImageName:='640.bmp'
else if width<=800 then
bgImageName:='800.bmp'
else if width<=1024 then
bgImageName:='1024.bmp'
else if width<=1152 then
bgImageName:='1152.bmp'
else if width<=1280 then
bgImageName:='1280.bmp'
else
bgImageName:='1600.bmp'
ExtractTemporaryFile(bgImageName)
bgImage.bitmap.LoadFromFile(expandConstant('{tmp}\'+bgImageName))
SetWindowLong(MainForm.Handle,-16,$80000000)
ShowWindow(Mainform.Handle,SW_SHOWMAXIMIZED)
end;
2. пример Виктора Доброва из папки ...Inno Setup 5\Scripts\Dobrov\BackgroundImage.iss
[Setup]
AppName=Background Image
AppVerName=Background Image
CreateAppDir=false
[Files]
Source: BackgroundImage.bmp; DestDir: embedded; Flags: dontcopy noencryption
[ Code]
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 BackgroundForm: TForm; BackgroundImage: TBitmapImage;
Begin
BackgroundForm:= TForm.Create(nil)
BackgroundForm.BorderStyle:= bsNone
BackgroundForm.OnActivate:= @BackgroundOnActivate;
ShowWindow(BackgroundForm.Handle, sw_ShowMaximized) // фоновое окно на полный экран
BackgroundImage:= TBitmapImage.Create(BackgroundForm)
BackgroundImage.Align:= alClient
BackgroundImage.Stretch:= True
ExtractTemporaryFile('BackgroundImage.bmp')
BackgroundImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\BackgroundImage.bmp'))
BackgroundImage.Parent:= BackgroundForm
end;
Ivan_009
11-04-2012, 19:13
У кого есть isSlideShow v1.03 поделитесь пожалуйста нигде не могу найти..........
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.