четверг, 27 января 2011 г.

Debug Visual C++ Redistributable Package своими руками

Довольно частое явление когда у клиента девственно чистый компьютер - в смысле без Visual Studio, а вам необходимо запустить debug версию вашего приложения на C++ для отладки например. Если ваша сборка использует динамическую линковку системных DLL, то почти наверняка ваше приложение не загрузится. Скорее всего причина кроется в том, что у клиента не установлен Visual C++ Redistributable Package. На сайте Microsoft лежат такие package, но только для release, для debug вы их там не найдете:

Microsoft Visual C++ 2005 Redistributable Package (x86)
Microsoft Visual C++ 2005 Redistributable Package (x64)
Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)
Microsoft Visual C++ 2005 SP1 Redistributable Package (x64)
Microsoft Visual C++ 2008 Redistributable Package (x86)
Microsoft Visual C++ 2008 Redistributable Package (x64)
Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)
Microsoft Visual C++ 2008 SP1 Redistributable Package (x64)


Так как же быть? Создадим такой package сами. Открываем Visual Studio, создаем новый solution. В диалоге выбора типа проекта выбираем Other Project Typoes
Setup Project. Потом добавляем необходимые merge module в проект и компилируем. Учтите, что для каждой платформы будь то x86 или x64 необходимо создать свой project в solution. Не забываем добавлять соответствующие policy. В х64 вариант обьязательно добавляем merge module для x86. Ниже приведен список необходимых merge module для:

Visual Studion 2005 (DebugCRT x86)
Microsoft_VC80_DebugCRT_x86.msm
policy_8_0_Microsoft_VC80_DebugCRT_x86.msm
Visual Studion 2005 (DebugCRT x64)
Microsoft_VC80_DebugCRT_x86.msm
Microsoft_VC80_DebugCRT_x86_x64.msm
policy_8_0_Microsoft_VC80_DebugCRT_x86.msm
policy_8_0_Microsoft_VC80_DebugCRT_x86_x64.msm
Visual Studion 2008 (DebugCRT x86)
Microsoft_VC90_DebugCRT_x86.msm
policy_9_0_Microsoft_VC90_DebugCRT_x86.msm
Visual Studion 2008 (DebugCRT x64)
Microsoft_VC90_DebugCRT_x86.msm
Microsoft_VC90_DebugCRT_x86_x64.msm
policy_9_0_Microsoft_VC90_DebugCRT_x86.msm
policy_9_0_Microsoft_VC90_DebugCRT_x86_x64.msm

Если вы используете MFC, то дополнительно добовляете MFC merge module в соответствующий проект по аналогии - имена должны содержать DebugMFC.

Остается только скомпилировать ваш solution и в результате вы получите msi для установки на компьютере клиента. Рекомендую также правильно и солидно назвать исталляцию и сменить имя msi файла, чтобы на стороне клиента это все не выглядело поделкой на коленке.

P.S. Стиль когда нужные сисетмные DLL кладутся в проект рядом с вашим приложением на мой взгляд является анахронизмом, хоть и работает. С другой стороны мне несложно придумать конфигурацию, когда такой фокус уже не прокатит. Самый простой пример: ваше приложение для x86 и для x64 лежат в одном каталоге.

P.P.S Все доступные merge module хрянятся в "%CommonProgramFiles%\Merge Modules".


Cсылка на источник: http://workblog.pilin.name/2009/02/debug-visual-c-redistributable-package.html

Автору огромный Респект!

Апгрейд Windows XP Home до Professional без переустановки

Сегодня я расскажу вам о способе, который позволяет без переустановки проапгрейдить Windows XP Home до Professional. Официально, это невозможно, а значит способ этот не совсем легитимный, хотя может использоваться и на вполне законных основаниях. Под законными основаниями я подразумеваю, что Вы каким-то образом раздобыли лицензию для XP Pro - купили, украли, нашли...неважно. Если у Вас есть лицензия, Microsoft не будет против. Другое дело, если лицензии у Вас нет, то есть, фактически, вы злобно хачите Windows, лишая мелкомягких своих кровных. В таком случае, Microsoft наказывает. Жестоко наказывает! А именно, Вы лишаетесь и той лицензии, которой обладаете, то есть Ваша Windows становиться пиратской. Хотя кому я это говорю - в стране, где 99% софта тупо тырится, этим никого не проймёшь.

Довольно слов, перейдем к делу
  1. Откройте редактор реестра - выполните команду "regedit"
  2. В редакторе откройте раздел HKEY_LOCAL_MACHINE/SYSTEM/ControlSet00X/Control/ProductOptions, где X - самое большое число.
  3. Удалите ключ ProductSuite
  4. Создайте новый ключ типа DWORD с именем Brand
  5. Назначьте созданному ключу значение 0
  6. Перезагрузите систему
  7. При перезагрузке, после появления экрана BIOS, нажмите F8, чтобы попасть в меню загрузки Windows
  8. Выбирите раздел Last Known Goog Configuration(LNG) и нажмите Enter
После выполнения этих инструкций система загрузится как Windows XP Professional Edition.

ЗЫ Прочтите следующую информацию, дабы избежать недоразумений при выполнении 2-го пункта инструкций.

Для дублирования настроек Windows важной информации по драйверам, сервисам и т.д. в ветвях реестра — появились ветви реестра


HKEY_LOCAL_MACHINE\SYSTEM\CONTROLSET001, HKEY_LOCAL_MACHINE\SYSTEM\CONTROLSET002 и так далее

Каждая из этих ветвей содержит в себе конфигурацию системы в разные моменты времени, а ветвь реестра HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET является лишь ссылкой на один из приведенных подразделов реестра Windows которая загружена в тек.момент.

В ветви HKEY_LOCAL_MACHINE\SYSTEM\SELECT есть параметры.

Default - определяет какая копия раздела CONTROLSET будет загружена при нормальной загрузке системы
Current - определяет номер текущей копии раздела CONTROLSET, на которую ссылается подраздел CURRENTCONTROLSET.
LastKnownGood - параметр копии раздела COTROLSET, при использовании альтернативной загрузки ЗАГРУЗКА ПОСЛЕДНЕЙ УДАЧНОЙ КОНФИГУРАЦИИ
Failed - параметра определяет раздел COTROLSET, при предыдущей загрузке которого произошел какой-то сбой, и загрузка была прервана.


Ссылка на источник: http://www.mydigitallife.info/2008/06/13/convert-and-upgrade-windows-xp-home-to-professional-without-reinstalling/