PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 [56] 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Shkutu
10-07-2014, 16:59
Johny777, спасибо за подробные объяснения.
Однако, я видимо не совсем правильно поняла значение слова "valid", когда читала описании функций. Ибо оказалось, что эти функции работают для существующих папок и файлов :(, с которыми как раз проблем вообще нет (если папка существует, очевидно, что ее имя валидно))
Мне же нужно проверять валидность как раз в случае, если такого пути не существует

Kashtan007
10-07-2014, 17:25
Всем привет, как в установщике сделать прозрачный фон под надписями, чтобы было видно картинку?
http://rghost.ru/56805946/image.png

P.S. У меня установщик большого размера, как сделать так, чтобы когда открываешь его он был по центру монитора, а то получается нижняя часть прячется за панель задач.

P.S.S. Как сделать иконку включения\отключения музыки поверх BitMapImage? Т.е. когда я использую BitMapImage то иконки включения\отключения музыки прячется по ним, как сделать эту иконку поверх всего.

Заранее спасибо за помощь!

Shift85
10-07-2014, 18:06
Kashtan007, :butcher: :moderator :offtopic:

Вот юзай.

Kashtan007
10-07-2014, 18:23
Shift85, спасибо). Это к какому из вопросов?

Shift85
10-07-2014, 18:31
Это к какому из вопросов? »
Всем привет, как в установщике сделать прозрачный фон под надписями, чтобы было видно картинку? »

Johny777
10-07-2014, 18:39
Shkutu, ну тогда нужно писать свою проверку
типа первый символ - буква диска, второй - двоеточие итд
путь не должен содержать запрещённых символов:
< (less than)
> (greater than)
: (colon)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx
ещё думаю нужно учесть сетевые пути
и фиг знает что ещё
прости, но у меня сейчас сессия и я не могу писать даже такую небольшую функцию. Попробуй сама! Ok?

UPD:
вот тут есть сишная имплементация подобной проверки
Изучай :)
http://codereview.stackexchange.com/questions/4214/function-to-check-whether-a-path-is-valid-or-not-needs-your-critique

Shkutu
10-07-2014, 19:29
Johny777, собственно уже пишу.:)) Пока сделала чисто в инно, парингом как раз на запрещенные символы и буквы диска проверяю. Но думаю все-таки, что может лучше свою библиотеку и регулярку там заюзать)
А за пример спасибо, посмотрю:)
З.Ы. Удачи на сессии! :)

Nordek
10-07-2014, 19:41
Kashtan007, В юникодной версии Inno можно в редакторе форм задействовать (http://i1.imageban.ru/out/2014/07/10/6fab6625de7722f7c8b7d78092da7203.png) прозрачность.

Пример (На ANSI код работать не будет):
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.

[Languages]
Name: default; MessagesFile: compiler:Default.isl

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked



Name: {group}\My Program; Filename: {app}\MyProg; Flags: foldershortcut
Name: {commondesktop}\My Program; Filename: {app}\MyProg; Tasks: desktopicon; Flags: foldershortcut

[Run]
Filename: {uninstallexe}; Description: Деинсталлировать Тест; Flags: nowait postinstall skipifsilent


[Co[I]de]
procedure InitializeWizard();
begin
WizardForm.WizardBitmapImage.Width := ScaleX(500);
WizardForm.WelcomeLabel1.Transparent := True;
WizardForm.WelcomeLabel2.Transparent := True;

WizardForm.WizardSmallBitmapImage.Left := ScaleX(0);
WizardForm.WizardSmallBitmapImage.Width := ScaleX(495);
WizardForm.PageDescriptionLabel.Transparent := True;
WizardForm.PageNameLabel.Transparent := True;

WizardForm.WizardBitmapImage2.Width := ScaleX(500);
WizardForm.FinishedLabel.Transparent := True;
WizardForm.FinishedHeadingLabel.Transparent := True;
end;

El Sanchez
10-07-2014, 21:39
Пока сделала чисто в инно, парингом как раз на запрещенные символы и буквы диска проверяю. Но думаю все-таки, что может лучше свою библиотеку и регулярку там заюзать) »
Shkutu, PathSearchAndQualify (http://msdn.microsoft.com/en-us/library/windows/desktop/bb773751(v=vs.85).aspx).

saneksanek
11-07-2014, 00:49
del

Kashtan007
11-07-2014, 01:20
Ребята, что здесь нужно изменить, чтобы добавить стиль на Inno Setup Unicode?
На Ansi работает с этим кодом:
#ifdef UNICODE
#define A "W"
#define SKinDll "ISSkin.dll"
#else
#define A "A"
#define SKinDll "ISSkin.dll"
#endif

#define SKin "Bigmusic.cjstyles"
#define SKinIni "NormalNormal.ini"
Как сделать, чтобы работало на юникоде.

P.S. У меня установщик большого размера, как сделать так, чтобы когда открываешь его он был по центру монитора, а то получается нижняя часть прячется за панель задач.

P.S.S. Как сделать иконку включения\отключения музыки поверх BitMapImage? Т.е. когда я использую BitMapImage то иконки включения\отключения музыки прячется по ним, как сделать эту иконку поверх всего.

Заранее спасибо за помощь!

Nordek
11-07-2014, 06:47
Как сделать, чтобы работало на юникоде. »Это вопрос? Если спрашиваете, ставьте вопросительный знак.
Пример (https://mega.co.nz/#!5EUAmLRY!eApwyCM-v7vHbDrA7oGWxqEHZQ5YSkIVWB6shQNPKAo)

У меня установщик большого размера, как сделать так, чтобы когда открываешь его он был по центру монитора »
Задайте значение в Position.
Пример:
[Code]
procedure InitializeWizard();
begin
with WizardForm do
begin
Position := poScreenCenter;
ClientHeight := ScaleY(497);
ClientWidth := ScaleX(856);
end;
end;


Как сделать иконку включения\отключения музыки поверх BitMapImage? »
Задайте значение в Parent
Пример:
[Code]
var
NewButton1: TNewButton;

procedure InitializeWizard();
begin
NewButton1 := TNewButton.Create(WizardForm);
with NewButton1 do
begin
Parent := WizardForm;
Left := ScaleX(24);
Top := ScaleY(325);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'NewButton1';
end;
end;

boss911
11-07-2014, 11:13
Пытаюсь реализовать следующие:
[UninstallRun]
Filename: {reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{7A3C7E05-EE37-47D6-99E1-2EB05A3DA3F7%7d,ModifyPath}; Flags: skipifdoesntexist
Если "ModifyPath"="MyProg.exe", то MyProg.exe запускается. А вот если "ModifyPath"="MyProg.exe /parameter", то приложение не запускается. Как быть? С кавычками игрался, может что-то не правильно делал, не получается. Хелп, плиз.

Kashtan007
11-07-2014, 11:25
Nordek, спасибо большое за помощь. Все работает!)

saneksanek
11-07-2014, 13:20
Можно-ли как-то добавить в басс стартовую громкость?
То есть чтобы играло при запуске не на все 100% а только на 10% к примеру,порылся в модулях нечего не нашел.

Nordek
11-07-2014, 13:44
boss911, [UninstallRun]
Filename: {reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{7A3C7E05-EE37-47D6-99E1-2EB05A3DA3F7%7d,ModifyPath}; Parameters: /SILENT; Flags: shellexec

Kashtan007
11-07-2014, 13:54
Еще возник такой вопрос, я использовал Transparent для того чтобы сделать текст без фона, но теперь я не могу изменить цвет шрифта и размер. Пробовал уже и через код и через редактор форм, но цвет остается черный, но когда я возвращаю фон то цвет текста меняется. Можно ли как-то сделать текст другого цвета? Заранее спасибо за помощь!

P.S. Как в юникоде сделать кликабельные иконки? например: на нижней панели есть значок ютуба на него нажимаешь и открывается канал на ютубе. А анси работало это:
begin
ExtractTemporaryFile('Лого.bmp')

BtnPanel:=TPanel.Create(WizardForm)
with BtnPanel do begin
Left:=562
Top:=0
Width:=78
Height:=43
Cursor:=crHand
OnClick:=@logoOnClick
Parent:=WizardForm;
end
BtnImage:=TBitmapImage.Create(WizardForm)
with BtnImage do begin
AutoSize:=True;
Enabled:=False;
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Лого.bmp')
Parent:=BtnPanel
end
end;
На юникоде этот способ не работает(
Заранее спасибо за помощь!

boss911
11-07-2014, 14:20
Nordek

Если бы это было так просто, я бы так и поступил. Мне важно запустить приложение так, как это прописано в параметре "ModifyPath" в вышеуказанной ветке реестра, а там может быть что угодно, чего я предусмотреть (нужный параметр) не могу. Сдается мне, что константа {reg} слегка убога, не умеет читать строку (значение параметра) с пробелами. Может и умеет, но я не знаю как, собственно и как по-другому пояснить эту ситуацию. Видимо без [Code] тут не обойтись.

Shkutu
11-07-2014, 14:27
El Sanchez, спасибо, похоже на то, что нужно. Но такой момент есть. Для того, чтобы узнать, что вводимый путь был корректным, его можно сравнить с тем, что получается в результате функции и кладется во 2й параметр. Однако, для корректной работы функции, надо чтобы размер второй строки был больше длины изначальной. В итоге получается, что 2 одинаковые по содержанию (текстовому) строки, по факту отличаются и сравнение не проходит. Не подскажете, что с этим можно сделать?

Dodakaedr
12-07-2014, 18:45
Kashtan007, Скрипт покажите!




© OSzone.net 2001-2012