понедельник, 3 ноября 2014 г.

Старые программы не работают в Windows 7 - "портятся" окошки

Век живи, век учись, говорят.

Возникла проблема: старая программа, написанная, судя по всему, на Delphi, отказалась работать на новом компьютере. Такое бывает довольно часто, но вот на других новых компьютерах, с точно такими же настройками Windows 7 Pro SP1 x64 - она нормально работала! А тут - окошки портятся, контроли не работают, всё какое-то кривое. Программа, хоть и запускается, но совершенно не хочет делать некоторые вещи, например не показывает выподающие меню в некоторых важных местах.

Оказалось, что замечательная компания Microsoft в Win7 применила такой подлый трюк: если экран компьютера маленький, а разрешение - очень высокое, то по умолчанию при установке системы выбирается 125% увеличение шрифта. При этом ставятся другие растровые шрифты!

Т.е. дальше можно поменять увеличение шрифтов на 100%, или на 150%, но растровые шрифты не меняются.

Вот примеры того, как может не работать программа:

При 100% всё в порядке

При 125% нет возможности выбора директории и файла
 
При 150% всё опять появляется.

При этом если в системе поставлены растровые шрифты, принятые по умолчанию для 125% увеличения - программа не работает ни при каких параметрах!

Решение описано в статье по ссылке: http://www.rlvision.com/misc/windows_7_font_bug.asp. На всякий случай копипасчу:

WINDOWS 7 FONT SIZE BUG


As explained on this page with further information here, a "feature" in Windows 7 may cause problems for some programs in certain conditions. Basically, if you have a high resolution screen at install time, Win7 will install a larger font set (125%) by default. If you then choose go back to the standard font size (100%), Windows will keep some of the large fonts even though everything else is adjusted for standard fonts, causing programs that use these fonts to break because the text will not always fit inside the GUI.

THE SOLUTION


By editing the Windows registry you can get the original, intended fonts back:
  • Open the start menu and type regedit and then press Enter.
  • Locate the key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
  • Find the value MS Sans Serif 8,10,12,14,18,24
  • Change from SSERIFF.FON to SSERIFE.FON
  • Find MS Serif 8,10,12,14,18,24
  • Change from SERIFF.FON to SERIFE.FON
  • Finally find Courier 10,12,15
  • Change from COURF.FON to COURE.FON
  • Restart your system in order for the changes to take effect!

понедельник, 25 августа 2014 г.

Тонкие настройки Firefox

Нашёл крайне любопытные "адреса" в Firefox:

about:memory - диагностика использования памяти
about:config - мягкое брюшко браузера

Буду искать дальше...

воскресенье, 15 июня 2014 г.

Проблемы с MySQL

Столкнулся с проблемой зависания MySQL сервиса при старте: никаких сообщений в журналы не пишет, просто зависает в состоянии 'Starting'.

Решение нашлось такое: почистить %SystemRoot%\Temp - в папке скопилось несколько миллионов пустых файлов!

Вообще, полезно регулярно запускать волшебную строчку:

del /F /S /Q %SystemRoot%\Temp\*.*

понедельник, 9 июня 2014 г.

понедельник, 21 апреля 2014 г.

Борьба с Joomla! и ChronoForms

Известно, что если web-сервер работает под Windows, возникают проблемы с использованием стандартных почтовых методов из php (они все заточены на sendmail, который есть в UNIX, но который совсем даже нет в Windows).
Ниже коротенькая статья, которая помогла решить одну очень важную проблему с использованием почты в модуле ChronoForms из под Joomla!


Chronoforms - Could not instantiate mail function

Posted by on Comments (0)
 Once updated from Joomla 3.0.1 to Joomla 3.1.1 Chronoforms stopped working. The good news is that we found out a solution:
First of all you have to uninstall the existing Chronoforms extension and install the latest one. I strongly suggest to backup the existing forms so that you can easily restore them.
If you are using the SMTP mailer (with Gmail for example) you may experience the error "Could not instantiate mail function".
To fix this issue, open the file located at position JOOMLA_ROOT\administrator\components\com_chronoforms\form_actions\email\email.php, scroll to line 216 and replace
1
$JMail = new JMail();
with
1
2
//$JMail = new JMail();
$JMail = JFactory::getMailer();
Everything will work!
Hope it helps

chromoforms component version: Chronoforms_V4_stable_J3.0
chromoforms module version: Mod_Chronoforms_J3.0_V4_RC3.5.3
joomla version. 3.1.1
SMTP: gmail
Server: Windows 2008

вторник, 28 января 2014 г.

Изменение в структуре директорий в Windows 7 vs Windows XP

Очень полезная статья про то, где теперь найти всем знакомые директории: http://www.lancelhoff.com/accessing-windows-vista-documents-and-setting-folder/

К сожалению, в "семёрке" опять всё поменяли, но уже не так сильно:

XP: Documents and Settings\All Users\Application Data
W7: ProgramData

XP: Documents and Settings\All Users\Desktop W7: Users\Public\Desktop or Users\Public\Public Desktop

XP: Documents and Settings\All Users\Documents W7: Users\Public\Public Documents

XP: Documents and Settings\All Users\Favorites W7: Users\Public\Favorites

XP: Documents and Settings\All Users\Start Menu W7: ProgramData\Microsoft\Windows\Start Menu

XP: Documents and Settings\All Users\Templates W7: ProgramData\Microsoft\Windows\Templates

пятница, 10 января 2014 г.

How to Inject Drivers into Windows PE 3.0 .WIM in 5 Minutes

Крайне полезная статья о том, как можно добавить дополнительные драйверы в автоинсталляцию Windows:
http://www.commodore.ca/windows/inject_drivers_pe_3_0_windows_7/inject_drivers_winpe.htm

How to Inject Drivers into Windows PE 3.0 .WIM in 5 Minutes(or into a Windows 7 or 2008 R2 Image)
Prepared by Ian Matthews June 23, 2010
This is the followup to how to add drivers to a Windows PE 2.0 (Vista) .WIM file.  Today I needed to add a network driver to a Windows 7 PE 3.0 Boot Image I had in my Windows Deplopyement Services (WDS) 2008 Server.  After two hours of banging though half baked explainations a blogs I figured out the process. 
The nut of the problem is that the old Vista tools (WAIK and Deployment Workbench) have been updates with REQUIRED new tools.  Basically the PEIMG has been replaced with DISM.  In fact, as you will see, DISM will even do the work of IMAGEX.  In case you are wondering DISM stands for Deployment Image Servicing and Management tool... really great name... I suppose it would have made it too easy if they had just updated IMAGEX and PEIMG with new commands... but I digress.
The first thing you have to do is source the Deployment Workbench 2010 (yes, that is new and the old version with NOT work.  You can read/watch THIS if you have no idea how to get that started; the only thing to pay attention to is at the 1 minute mark in the video where it tells you how to source the WAIK (Windows Automated Installation Kit.)  Once you have this you are good to go.
  1. Get your .WIM file copied to your PC. file either:
    •  from the Windows 7 DVD (boot.wim or image.wim in the sources directory) or
    • pull it out of your WDS Server (if you have one, by right clicking on the image in question and selecting EXPORT)
  2. Create a folder called C:\TEMP.  Then create two subfolders; one called DRIVERS and the other called MOUNT
  3. Move your .WIM file to C:\TEMP\ and rename it CUSTOMBOOT.WIM
    • the rename is not required but I find it keeps everything straight in my head
  4. Download the drivers you need and put them in their own subfolder under C:\TEMP\DRIVERS (i.e. C:\TEMP\DRIVERS\ETHERNET\ and C:\TEMP\DRIVERS\SOUND\ ) . 
    • Don't put the driver .EXE file into that folder, you need to expand that .EXE and get the driver files out of it.
    • WinRAR and WinZIP work well for extracting .EXE files containing drivers.  For WinZip you simply drag the .EXE with the RIGHT MOUSE a few pixels and you will see WINZIP, EXTRACT TO... in the context menu.
    • Make sure you do not change the folder structure your driver .EXE file may have created. 
    • Use Windows 7, Vista (or at least WinXP drivers); DOS drivers will NOT work. 
  5. Click Start. Microsoft Windows AIK, Deployment Tools Command Prompt.
    • This will set a pile of software (i.e. DISM) in your "PATH" so you won't have to search for it.
  6.  Dism.exe /mount-wim /wimfile:C:\temp\customboot.wim /index:2 /mountdir:C:\teMount (i.e. expand) CUSTOMBOOT.WIM with the following command:
    • Dism.exe /mount-wim /wimfile:C:\temp\customboot.wim /index:2 /mountdir:C:\temp\mount
    • NOTE: if you are working with a Win 7 image (i.e. not PE3.0) then change the number to from a 2 to a 1
  7. Inject your drivers using the following command:
    • dism /image:"C:\Temp\mount" /add-driver  /driver:"C:\temp\drivers\nic\rt64win7.inf"dism /image:"C:\Temp\mount" /add-driver  /driver:"C:\temp\drivers\network\re
    • be sure to replace the word "nic\rt64win7.inf" with the name and path to your driver.
      • Dism.exe /mount-wim /wimfile:"C:\temp\customboot.wim" /index:2 /mountdir:"C:  Error: 123 The filename, directory name, or volume label syntax is incorrect.You will receive the following error if you do not enter the correct path and I personally found that the command just did not like the quotations:
         Error: 123 The filename, directory name, or volume label syntax is incorrect.
  8.  Dism /unmount-wim /Mountdir:C:\Temp\mount /commitCommit your update and recompress your updated image using the following command:
    • Dism /unmount-wim /Mountdir:C:\Temp\mount /commit
  9. Congratulations you are done!  If you want to push this to a Windows Deployment Services (WDS) Server read on.
  10. Start your WDS Console, right click on the boot image you wish to update, and select DISABLE
  11. Right Click on that same boot image and select REPLACE IMAGE.  The browse to wherever you have your CUSTOMBOOT.WIM and select it.
    • in my case I copied CUSTOMBOOT.WIM across the network from the VM I created it on to my W2003 WDS server prior to the REPLACE IMAGE STEP
    • this process will update the existing BOOT.WIM and REENABLE it.  There is no need restart services
    • You could delete your CUSTOMBOOT.WIM but I keep mine in case I want to add more drivers in the future.
I found THIS and THIS article to be useful, in case you have any other questions.