Inno Setup Тестирование внешнего шрифта

ARS_23

R.I.P
Проверенный
у меня раньше стояла сборка Win7 x64, так на ней все работало нормально
сейчас на лицензионной версии запускаться отказывается
 

South

Знаток
Проверенный
Вот, чего бывает, если поленится перезапустить систему http://ifolder.ru/28081837
есть смутные подозрения, что если написать в твоем скрипте
Код:
procedure InitializeWizard;
begin
  WizardForm.Font.Name:='';
end;
а все остальное стереть, то эффект будет такой же.
так что, скорее всего, установка "левого" шрифта никакого отношения к глюкам в твоей системе не имеет :)
 

Edison007

Ветеран
Модератор
скорее всего, установка "левого" шрифта никакого отношения к глюкам в твоей системе не имеет
хм... так у меня же было тоже самое... и опытным путём было определено, что ошибка из-за установки "левого" шрифта
 

South

Знаток
Проверенный
упс, я невнимательно видео посмотрел. поэтому сорри
но в любом случае
1. я не видел как все это выполняется в пошаговом режиме. из видео видно, что повисло где-то там...
2. установка шрифта это всего лишь AddFontResource и ничего более, а он писал про оповещение, т.е SendMessage?
3.1 если виснет на SendMessage, то один из вариантов - наличие хуков в системе, т.е какая-то софтина поймала сообщение (посылается оно всем окнам), а обработать нормально не смогла
3.2 кто-то блочит бродкастовые запросы. не знаю насколько это возможно и к чему может привести
4. замени SendMessage на PostMessage, потом поставь Sleep(3000) для верности и посмотри что получится
5. изначальный пример установки шрифта выглядел немного не так :), хотя и здесь никакого криминала я не вижу
6. можно сделать тоже самое, но немножко по-другому :)

Добавлено через 1 минуту
как видишь не имеет :)
 
Последнее редактирование:

YURSHAT

Тех. админ
Администратор
3.1 если виснет на SendMessage, то один из вариантов - наличие хуков в системе, т.е какая-то софтина поймала сообщение (посылается оно всем окнам), а обработать нормально не смогла
Скорее всего. Я когда-то ловил этот же глюк но после переустановки системы, все стало нормально. Из-за какого софта это происходило - х.з.

изначальный пример установки шрифта выглядел немного не так , хотя и здесь никакого криминала я не вижу
С изначальным то же самое. Так, что ты прав - никакого криминала нет :)
 

LexBell

Борода
Супер модератор
замени SendMessage на PostMessage,
пробовал уже. и раскладывал, чтобы точно было. виснет именно на сообщении. уж почему - точно не знаю, но не я один такой счастливый - это абсолютно точно.
а он писал про оповещение, т.е SendMessage?
все встает на этом оповещении. если его не писать, то инсталл без шрифтов, и тп, в общем видели. тоже самое у меня если при закрытии с ошибкой запустить еще раз, не перезагрузившись.
как видишь не имеет
Пока не вижу :)
в прямом смысли, конечно не имеет. но засада вылезает, пока именно на шрифтах. может, просто больше нигде не используются оповещательные сообщения.
можно сделать тоже самое, но немножко по-другому
Можно подробнее?

Добавлено через 1 минуту
но после переустановки системы,
Начисто тоже пробовал - раз в месяц систему ставлю заново, дабы пиратскими кряками ее не активировать :)
 

South

Знаток
Проверенный
Можно подробнее?
ПодробнееPS еще один из возможных косяков - компилятор юникод, а используемые функции анси


 

LexBell

Борода
Супер модератор
Ждем результатов Гнома.
Ну, хотя-бы инсталл теперь запускается - уже какой-то результат :)
http://rghost.net/35897251

еще один из возможных косяков - компилятор юникод, а используемые функции анси
Обнаружил засаду, когда на Анси сидел. Понятно, что на юникоде вызова переделать нужно было, но не думаю, что это даст результат.
 

South

Знаток
Проверенный
Gnom, не качается
ЗЫ скинь шрифт, который пытаешься использовать
 
Последнее редактирование:

LexBell

Борода
Супер модератор
Вот шрифт. Но это не имеет значения особого, я разные шрифты пробовал, безрезультатно.
Интересное дело. Почемуто сработала подмена способа оповещения на PostMessage. Я точно помню, что в прошлый раз не прокатывало, но в прошлый раз я делал на Анси, нужно попробовать.
Код:
#define Font "Alterna.ttf"
#define FontName "Alterna"

[Setup]
AppName=SetTemporaryFont
AppVerName=SetTemporaryFont
DefaultDirName={pf}\SetTemporaryFont
OutputBaseFilename=setup

[Files]
Source: {#Font}; Flags: dontcopy

[Code]
#ifdef UNICODE
  #define A "W"
#else
  #define A "A"
#endif

var
  IsCustomFontInstalled: boolean;
  FontName: string;

function AddFontResource(FileName: PAnsiChar): Integer; external 'AddFontResourceA@gdi32.dll stdcall';
function RemoveFontResource(FileName: PAnsiChar): BOOL; external 'RemoveFontResourceA@gdi32.dll stdcall';

function InitializeSetup: boolean;
begin
  FontName:='Tahoma';
  ExtractTemporaryFile('{#Font}');
  IsCustomFontInstalled:=AddFontResource(ExpandConstant('{tmp}')+'\{#Font}')>0;
  if IsCustomFontInstalled then PostMessage(HWND_BROADCAST,$1D,0,0);
  if FontExists('{#FontName}') then FontName:='{#FontName}' else FontName:='Arial';
  if IsCustomFontInstalled then FontName:='{#FontName}';
  Result:=True;
end;

procedure InitializeWizard;
begin
  WizardForm.Font.Name:=FontName;
end;

procedure DeinitializeSetup;
begin
  WizardForm.Free
  if IsCustomFontInstalled then
  if RemoveFontResource(ExpandConstant('{tmp}')+'\{#Font}') then PostMessage(HWND_BROADCAST,$1D,0,0);
end;
 

South

Знаток
Проверенный
Gnom, сейчас скачал. я увидел свой пример в видео, но FontName остался block, тогда как Font стал Alterna.ttf (а это, звиняйте батенька ересь), соответственно подмена произошла на "ближайший" шрифт
+ есть еще одна засада (возможно), но я пока помолчу, надо разобраться с первым вопросом

ЗЫ Gnom, надеюсь не утомил, просто заинтересовал этот глюк, и надеюсь ты не откажешся от дальнейших тестов (без переустановки ситсемы. ну поставь кряк на какое-то время, не умрешь же :-[ надеюсь. и компу твоему здравствовать . . .) может лучше все это в личку перенести

ЗЗЫ часто отписываться, наверное, не смогу, но прошу не удалять пока этот флуд. если конечно главный тестер (Gnom) не откажется от дальнейшего ковыряния своей системы :)
 

YURSHAT

Тех. админ
Администратор
South, тема ведь "Тестирование", а опыты со шрифтом тоже тестирование :). Никакого флуда здесь нет. Если что, потом почистим. Мне тоже интересен исход этих манипуляций :). Жаль только с тестами не могу помочь, так как к сожалению у меня все работает :)
 
Сверху