Разработка

индекс
203,40

Получение логотипа «Certified for Windows 7»

В один ясный солнечный день компанией, в которой я работаю, было принято решение о проведении работ по получению логотипа «Certified for Windows 7» для основного продукта. Надо сказать, что для компаний-парнёров Microsoft это не только абстрактное подтверждение совместимости с этой платформой, но и вполне реальные баллы по партнёрской программе. Так что причин на получение этого сертификата может быть несколько. Но основная цель топика — осветить реальные нюансы прохождения процедуры.

Сертификация начинается со страницы описания программы «Windows 7 Logo», где можно скачать документ с требованиями к ПО для успешного прохождения сертификации и тулкит для проведения тестов «Windows 7 Client Software Logo Toolkit» (WSLK). Итак,

1. Изучение требований к прохождению сертификации, оценка предстоящих работ.

Тестированию подлежала клиентская часть клиент-серверного приложения, работающего на платформе .NET, поэтому объем работ, проведенный для соблюдения всех требований может существенно отличаться от native-приложений.

После изучения документа выяснился план необходимых работ, а именно:
  1. Покупка сертификата VeriSign для цифровой подписи файлов
  2. Поддержка RestartManager API в программе
  3. Небольшие правки в инсталляторе

2. Покупка сертификата VeriSign.

Процесс заказа сертификата для цифровой подписи файлов не нуждается в специфических телодвижениях, тем более что тема уже освещалась хабраюзером crea7or в топике «Code Signing в Windows, просто и недорого» (правда, в данном случае сертификат покупался напрямую в VeriSign). Поэтому остановлюсь только на процессе получения самого сертификата.

Самый важный момент, который необходимо не упустить — загрузка и установка сертификата должна проходить на том же ПК, на котором проводился заказ и оплата сертификата. Самое поразительное, что я наблюдал в этом процессе — это отсутствие нормальной поддержки Internet Explorer 8 для загрузки сертификата. Да, оно работает, но неоднозначные ошибки Javascript и ActiveX при попытке установить сертификат меня смущали пару дней. Официально в FAQ компании написано, что загрузка должна происходить с браузера Internet Explorer 7, он, как оказалось, все решилось и без него. Замечу, что саппорт по электронке отвечает вяло и с большой задержкой, а вот online-чат с техническим специалистом компании по данному вопросу оказался решением проблемы. В итоге, после процедуры установки сертификата, он появляется в сертификатах браузера (Internet Options -> Content -> Certificates), откуда его можно экспортировать для дальнейшего применения:

Internet Explorer 8 Certificates Window

В сумме ожидания перевода денег на счёт и переписку с тех. саппортом ушло около 4-5 дней.

3. Изменения в коде программы.

Одним из нововведений в Windows Vista, поддержка которого также является обязательным условием прохождения сертификации на совместимость, является Restart Manager. А добавить необходимо две вещи:
  • Регистрация команды перезапуска приложения при вынужденном завершения процесса системой
  • Обработка сообщения WM_QUERYENDSESSION в главном окне программы с параметром ENDSESSION_CLOSEAPP
По первому пункту: поскольку в ПО используется библиотеки Windows API Code Pack, регистрация перезаупска приложения выглядит таким образом:
if (CoreHelpers.RunningOnVista)
{
   string parameters = "/restart";

   if (args.Length > 0)
      parameters = string.Format(CultureInfo.InvariantCulture, "{0} {1}", string.Join(" ", args), parameters);

   ApplicationRestartRecoveryManager.RegisterForApplicationRestart(
      new RestartSettings(parameters, RestartRestrictions.NotOnReboot));
}

Данный код регистрирует перезапуск приложения при вынужденном его рестарте с теми же параметрами, с которыми оно было запущено + параметр "/restart", который можно использовать в дальнейшем как флаг.

По второму пункту: при получении данного сообщения программа должна немедленно начать подготовку к завершению, с этим тоже особых проблем не должно быть (код для WinForms приложения).
protected override void WndProc(ref Message m)
{
   switch (m.Msg)
   {
      case NativeMethods.WM_QUERYENDSESSION:
      {
         if (m.LParam == new IntPtr(NativeMethods.LP_ENDSESSION_CLOSEAPP))
         {
            m.Result = new IntPtr(1);

            // Начало подготовки к завершению программы
         }
      }
      break;
   ...

Также для обеспечения общей совместимости программы с платформой Windows 7 был добавлен специальный манифест со следующим содержимым:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity version="1.0.0.0" name="Company.Product" processorArchitecture="msil"/>
   <description>Product description</description>
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      <security>
         <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
         </requestedPrivileges>
      </security>
   </trustInfo>
   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
      <application>
         <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
      </application>
   </compatibility>
   <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
      <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
         <dpiAware>true</dpiAware>
      </asmv3:windowsSettings>
   </asmv3:application>
</assembly>

Более подробная информация о параметрах supportedOS и dpiAware доступна по ссылкам.

4. Изменения в инсталляторе.

Инсталлятор продукта написан на WiX, поэтому здесь доработка была всего одна — запись директории, куда была установлена программа в реестр информации установки и удаления программ. Решается это одним CustomAction:
<CustomAction Id="SetInstallLocation" Property="ARPINSTALLLOCATION" Value="[APPLICATIONFOLDER]"/>
<InstallExecuteSequence>
   <Custom Action="SetInstallLocation" After="InstallValidate"/>
</InstallExecuteSequence>

5. Подготовка инсталляционного пакета к тестированию.

Фактически, остается подписать бинарные файлы программы, создать инсталлятор, подписать его тоже и всё готово. Начиная с этого момента это будут стандарные действия при выпуске версии вашего продукта. И они легко автоматизируются. Для создания цифровой подписи файлов была использоватна утилита SignTool, которая входит в состав Windows SDK for Windows 7 и Visual Studio 2008. Для подписания файла достаточно выполнить команду
signtool sign /f certificate.pfx /p PASSWORD /t http://timestamp.verisign.com/scripts/timstamp.dll FileToSign.exe

6. Создание тестового пространства.

Тестирование программы согласно документу должно проводиться на платформе Windows 7 x64. Для тестирования была установлена редакция Ultimate. Поскольку тестирование проводилось на рабочей станции под управлением Windows Vista x32, то единственным решением для создания виртуального пространства с архитектурой x64 стал VMware Player. Сразу после установки нужно создать вторую учетную запись — это будет необходимо для тестирования поддержки мультисессионности в программе. Для тестирования была создана учетная запись обычного пользователя без администраторских прав. На виртуальной системе был развёрнут вышеописанный тулкит для тестирования. VMware Tools не устанавливались для чистоты эксперимента. Кстати, замечу, поведение VMware Player было иногда слегка неадекватное и приводило виртуализированную систему, а иногда и реальную к жутким тормозом. Правда, ненадолго. Но терпения надо набраться. Я приурочил подобные фокусы к задачи виртуализации совершенно другой архитектуры, а возможно и из-за отсутствия установленных VMware Tools.

7. Тестирование.

Процесс тестирования, собственно, не представляет из себя ничего сложного. Вызывается тулкит с четкими инструкциями.
За время тестирования вам предложат в определённом порядке установить программу, запустить утилиту из состава тулкита для проверки работы с мультисессиями, запустить программу, и удалить её.

image

После этого сформируется XML-отчёт о результатах прохождения теста. Замечу, что Warnings (выделены в отчёте жёлтым цветом) означают что программа всё же прошла тест, но с замечаниями. Хотя не критичные замечания лучше исправить. В нашем случае такое замечание было одно — не было цифровых подписей в паре библиотек сторонних компаний. Испольняемый файл приложения должен быть подписан обязательно. Чесно говоря, меня несколько смутил тот факт, что я не увидел в результируючщем XML файле не каких-либо чексумм, ни цифровых подписей результатов для предотвращения представления заведомо ложных данных. А структура файла довольно проста. Но оставим это на совести ребят из Winqual.

8. Создание учётной записи на Winqual.

Следующим этапом будет создание учётной записи на портале Winqual. При создании учётной записи вас попросят подписать сертификатом вашей компании файл winqual.exe, который попросят скачать и залить после переподписи. При успешном подписании файла дальнейшие шаги тривиальны.

9. Создание заяки на сертификацию.

Выбираем в левой панели меню Windows Logo Programs -> Software -> Self Tested -> Windows 7 и попадаем на страницу управления заявками на сертификацию. Нажимаем зелёную кнопку «Create New» и попадаем в визард. Для этого визарда должны быть подготовлены логотип продукта (должен быть доступен по прямой ссылке на сайте продукта), краткое описание на английском языке, сслыки на сайт компании и страницу продукта. Также вам предстоит выбрать, к какой категории ПО относится ваш продукт.

Перед созданием заявки вам необходимо будет подписать в электронном виде пару лицензионных соглашений. Подпись производится указанием даты и имени и фамилии. Буквально через несколько секунд эти соглашения приобретают статус подписанных с обех сторон (вашей компании и компании Microsoft).

Посе успешного создания заявки происходит автоматическая проверка отчета. В нашем случае, это произошло за несколько секунд. Затем предлагается подписать ещё одно лицензионное соглашения, связанное с получением сертификата, и на заявке становится активная ссылка «Artwork Download» на архив с графкой и инструкциями по применения логотипа, а статус заявки становится «Signed» и приобретает зелёный цвет.

Сертификация пройдена


К вопросу о стоимости сертификации: сертификация пока бесплатная. На текущий момент подобная сертификация для Windows Vista стоит порядка $1000, поэтому все желающие пройти сертификацию без денежных затрат должны поторопиться — как долго сертификация будет бесплатная не известно. Валидность сертификата — 2 года.

P.S. Если все пройдет успешно, в ближайшие пару недель будет готов подобный отчёт о процедуре получении сертификата «Works with Windows Server 2008 R2».
P.P.S. Очень интересно было бы увидеть «отчёты» о получении логотипов «Citrix Ready» и «VMware Ready», если у кого-то есть уже опыт проведения данных процедур.

UPD. Получение логотипа «Works with Windows Server 2008 R2»
+63
7 марта 2010, 16:17
53

комментарии (32)

+10
plusadin #
а какие плюсы от подобной сертификации?
+3
luminous #
Размещение продукта в каталоге Microsoft продуктов, совместимых с Windows 7; партнёрские быллы для компании-партнёра. Фактически, это более-менее официальная гарантия от Microsoft, что продукт совместим с этой платформой и будет корректно на ней работать. Конечно же понятно, что эта сертификация не покрывает всех аспектов работы программы и не может гарантировать на 100% её, скажем так, безглючность на этой ОС, но основные «точки» соприкосновения с ОС проверяются.
0
crea7or #
баллы получить и потом microsoft cerifited partner. ну и как бы солидности прибавляет. msdn опять таки дешевле чем по подписке и т.д.
+9
ilBEastli #
Отсутствие вопросов со стороны ОС а ля «Данная программа не сертифицирована. Доверяете ли вы источнику/программе?».
–15
ZiZZoKo #
Это то, что первым делом отключается? :)
0
zxmd #
Ну если вы отключаете UAC то это ваше дело, но вообще нет, это не совсем то.
0
Zyava #
Ну смотря кем, программа то ваша может быть ориентирована на домохозяек или, скажем, ботаников :)
+4
naum #
Вы только что не прошли сертификацию 'Works with Windows Vista / 7'. Следующий!
–5
justrestless #
Пафосная наклеечка
0
romx #
Certified Partner и Certified Product это разные вещи.
–17
dimalogin #
И вы считаете этот пост на главной странице заслуживыет быть опубликованным?
+2
luminous #
Все аргументы против Вы вольны высказать здесь же
–17
dimalogin #
Кому это нужно?
+11
sayber #
Мне.
+7
mezastel #
Мне тоже интересно. Хоть о статусе партнера пока можно только мечтать.
+4
Antigluk #
Мне интересно.
+1
Frag #
Интересующимся людям.
0
Zerkella #
А что дают баллы партнеру?

Сколько стоил сертификат VeriSign?

Что случается с сертификатом по истечении 2-х лет?

После получения сертификата он тоже дописывается в исполняемый файл программы?
+1
luminous #
1. Как уже озвучил crea7or, баллы дают партнёру возможность повысить тип партнёрства (Certified Partner -> Gold Certified Partner и т.д.).
2. Стоимость сертификата отличается в зависимости от срока действия. На год стоит сейчас $399, по специальному коду от Microsoft в рамках программы сертификации можно купить за $99.
3. По истечении года сертификат от VeriSign просто станет не валидным. По истечению двух лет сертификат на совместимость я так понимаю просто аннулируется. Я думаю, это тесно связано с текущим циклом выхода новых версий ОС от Microsoft.
4. Не весь, только цифровая подпись и часть технической информации. Естественно без приватной части ключа. Более точно, извините, не могу сказать, так как не знаю.
+2
Discover #
Вот бы еще обзор партнерской программы.
0
WolfBespredel #
У них с вёрсткой туго или это IE 6 only? :)

0
naum #
Это у вас в чем так? Там на самом деле не особо дела с версткой, но в FF 3.6 чуток получше будет :)
0
WolfBespredel #
Странно, что чуток получше, потому что у меня тоже Firefox 3.6 :)
0
naum #
Чуток-чуток :)

Кстати, в самом IE8 также хреново


Вообще меня удивляет то, что Partner Network и сопутствующие порталы / разделы очень хреново выглядят. Как в плане скорости, наличия ошибок, кривых переходов и кривой верстки — так и в плане информационного наполнения. Очень расстраивать.
0
randoom #
«Выбираем в левой панели меню Windows Logo Programs -> Software -> Self Tested -> Windows 7 и попадаем на страницу управления заявками на сертификацию. Нажимаем зелёную кнопку «Create New» и попадаем в визард»

Ничего кроме Windows Logo License Agreement for Software v1.4 на странице нет, подскажите что не так.
Ну и заодно — как связать сие счастье с partners.microsoft.com?
+1
randoom #
Решение:
1.
Log on to the Winqual Web site using an account with administrator permissions.
2.
On the main menu, click Member Services.
3.
On the Member Services page, click Users.
4.
On the Permissions tab, find your name and select the Sign Master Legal Agreements check box.
5.
Save the changes.
0
luminous #
Всё верно, необходимы права для подписи соглашения, изначально их, кажется, нет.
На партнёрском портале в компатенции ISV вы должны добавить ID заявки на сертификацию с сайта Winqual и название продукта. Лучше всего это сделать на следующий день, так как сразу данные еще не доступны. При успешном добавлении (в крайнем случае — через пару дней) начислятся парнёрские баллы.
+1
randoom #
Стоит ждать письма от WinQual, я так понимаю? Поскольку в партнерской программе написано об ID полученном в письме.
Или пытаться добавлять именно ID заявки?
0
luminous #
В нашем случае никакого подтверждающего письма от WinQual об успешной сертификации не было, добавляли ID самой заявки на сертификацию.
0
randoom #
Спасибо, будем пробовать, ждать и снова пробовать )
0
randoom #
пошел четвертый день, все еще пишет:
Идентификатор протестированного продукта и имя протестированного продукта не соответствуют учетным данным. И что, мол убедитесь что ввели именно так как было написано в письме которого не было ;(
что делать — непонятно…
0
randoom #
Проблема решилась сегодня утром (видать прогрузилась база от winqual в партнерскую программу) — вводом (согласно давнишней рекомендации от MSSupport) названия приложения вопросиками.

в нашем случае — вот так: "?????????-?????? ?????????? ??????????? ?????"

;)))))))))))))
итог — плюс 30 баллов за 2 недели нервов и обзвона MS )

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.