(Назад к списку заданий eCo Labs)

Название: AppMan.dll
Заказчик: eCo Software


Срок: -
Вознаграждение: -

Добавки 2011

  • Очень сложно найти WarpIn и стартануть его. ВЫВОД: Можно добавить такую функцию в библиотеку. ГдеWarpIn(), ВызовWarpin(), ВызовWarpin(путь_к_пакету.wpi)
  • Также были предложения: СтартУстановку(.wpi), Generate_XCD(.wpi), СтартУстановку_CID(.wpi, .xcd),

Исходное задание (2010)

Назначение:

  • получать информацию об установленных программах
  • подробности про программу X: номер версии, где установлена
  • 1 стандартный API для получения инфо из БД WarpIn, RPM, ..

Какие функции можно сделать:

  • FindApp(char *name)
    где name - это WarpIn префиксная строчка: "Joerg Schilling\CDRTools\CDRTools" или просто "CDRTools"
  • QueryApp(char *name, VERSION)
    - запрос номера версии
  • QueryApp(char *name, DIRECTORY)
    - запрос каталога, где установлена программа
  • CheckApp(char *name)
    - проверка, жива ли программа? просто проверить наличие .exe ?
  • FindWarpIn() -- Где лежит WarpIN? Где его база? закомментировано в этом html

Уже сделаны функции:

typedef struct _APPSTATUS
{
  ULONG cb;
  CHAR  szTargetPath[CCHMAXPATH];
  ULONG ulMajor;
  ULONG ulMinor;
  ULONG ulRevision;
  ULONG ulFixLevel;

} APPSTATUS;

BOOL EXPENTRY AppQueryInfo( PCSZ pszAppName, PAPPSTATUS pAppStatus );

Замечания

  • важно понимать, что сейчас это работа с БД WarpIN, но потом нужно будет поддерживать и RPM.

Обработка ошибок

  • 0 баз, из которых что-то можно получить (не установлен WarpIn)
  • нет инфо о приложении
  • ...


 

cat, 20110709 e-co: Давайте сегодня обсудим, какие еще функции надо добавить в эту dll? какие аргументы и структуры?

cat: У меня на данный момент сделаны функции:

* поиск приложения в БД warpin (отличается от приведённого в 
     DLL "жизненным циклом" init-search-...-search-done, при 
     этом init грузит всю БД в память, так что при N-кратном 
     поиске приложений файл БД не читается N раз - для Маркета, 
     понятное дело, N раз не годится)
* напускание warpin.exe на файл *.wpi 


и планировал сделать на будущее:
- генерация файла ответов и установка *.wpi "молча"
- поиск отдельных DLL-ек и определение их версий (пока не понятно, надо ли)
- отображение списка приложений (на входе - список ID, на выходе - окно, 
     аналогичное правой половине окна Маркета)

e-co: ОК, т.е. убытков у нас нет.

* Glassman сделал функцию Pick, быстрой проверки.
* У тебя есть код для Cached метода. Три функции? Load список. Query данные, Free список.
Glassman, 20110710
> "жизненным циклом" init-search-...-search-done, при этом init грузит всю
> БД в память, так что при N-кратном поиске приложений файл БД не читается
> N раз - для Маркета, понятное дело, N раз не годится)

Вообще то, здесь есть некоторое заблуждение. Т.е. либа, нужная всем - это одно,
а либа, нужная конкретно для маркета - это другое. Большинству приложений не 
нужны сложности - все что им нужно - это получить инфу об одном или нескольких 
установленных приложениях.

Т.е. цикл init-search-...-search-done реализовать можно, но все равно нужна 
также и просто search функция, которая внутри себя сама сделает init и done.

Плюс, хотелось бы уточнить, как именно сделан init? Просто список приложений 
засасывается в память? Я бы предложил сделать какой-то набор функций для 
перечисления (enum), тогда, при желании, можно получив этот список, 
отсортировать его, к примеру, или захэшировать... И отдавать элементы 
списка можно теми же структурами APPSTATUS, что может еще более ускорить 
процесс.

> - напускание warpin.exe на файл *.wpi
> и планировал сделать на будущее:
> - генерация файла ответов и установка *.wpi "молча"
> - поиск отдельных DLL-ек и определение их версий (пока не понятно, надо ли)
> - отображение списка приложений (на входе - список ID, на выходе - окно,
> аналогичное правой половине окна Маркета)
>

А вот это пока вообще не стоит выносить в dll, как мне кажется. Т.е. опять 
неразбериха, что делается: dll с функциями для работы с warpin, или некоторый 
уровень абстракции по доступу к установленным приложениям?