Подтвердить что ты не робот

Клиенты сердиты, борются с неизвестными DLL-зависимостями

Я - шоу одного человека, разрабатывающее приложение для Windows С++ для клиента. За последние несколько месяцев мы столкнулись с теми же проблемами с отсутствием зависимостей DLL от клиентских машин. Несмотря на все мои усилия, что-то пошло не так, и мы разозлились на электронные письма. Мой босс и мой босс-босс злятся на меня, а клиенты не довольны.

Я надеюсь, что вы, ребята, можете помочь и дать предложения/идеи о том, как добиться результата в порядке. Перед некоторыми очевидными:

  • У меня нет тестовой машины. То есть я не могу реплицировать среду клиента и не пытаюсь установить приложение в "чистую" систему, чтобы поймать gotchas перед отправкой.
  • Я попытался использовать файл depend.exe для отслеживания того, из каких версий DLL-проектов зависит мой проект. Я отправляю наш код с распространяемыми экземплярами, которые мне удалось найти именно так. После этого он разозлился на ожидающую игру электронную почту.
  • У меня есть доступ к 64-битной машине и 32-разрядной машине для установки новых сборок. Он всегда работает там.
  • Я должен использовать стороннюю DLL, которая не может быть зарегистрирована (это багги, как черт.)
  • Я не должен использовать Install Shield, любой другой автоматический установщик или написать установку script.
  • Я предоставляю письменные инструкции о том, как установить приложение (распаковать, дважды щелкнуть exe файл.)

Я устал принимать тепло за это. Что мне не хватает, что я мог бы делать? Что я должен спросить с точки зрения поддержки со стороны моего работодателя? Как я могу попросить эту поддержку таким образом, чтобы они ее предоставили?

Update:

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

4b9b3361

Ответ 1

Если у вас нет тестовой машины, можете ли вы хотя бы использовать виртуальную машину с чистой установкой Windows?

Ответ 2

Вы должны выйти. В своем брошюре вы должны объяснить, почему ситуация смешна и заставляет вас и клиента за фрустрацию. Давайте рассмотрим то, что вы сказали о своей ситуации:

У меня нет тестовой машины. То есть я не могу реплицировать среду клиента или пытаться установить приложение в "чистую" систему, чтобы поймать gotchas перед отправкой.

Ни одна профессиональная фирма не выпускает продукты без тестирования. Мы очень маленькая фирма, и у нас есть многочисленная виртуальная машина, на которой мы запускаем тесты, и что мы запускаем наших установщиков.

Я попытался использовать файл depend.exe для отслеживания того, какие версии DLL, на которые зависит мой проект. Я отправляю наш код с распространяемыми экземплярами, которые мне удалось найти именно так. После этого он разозлился на ожидающую игру электронную почту.

У меня есть доступ к 64-битной машине и 32-разрядной машине для установки новых сборок. Он всегда работает там.

Это не так уж плохо или слишком странно. Странно, что вы не знаете, какую DLL вы используете, но не так много ваших работодателей могут сделать для этого, если вы не поддерживаете недокументированную унаследованную систему, - тогда это их вина за то, что они ничего не документируют.

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

Мне нужно использовать стороннюю DLL, которая не может быть зарегистрирована (это багги, как черт.)

Это происходит.

Я не должен использовать Install Shield, любой другой автоматический установщик или написать установку script.

Я предоставляю письменные инструкции о том, как установить приложение (распаковать, дважды щелкнуть exe файл.)

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

Свяжите это с первым выпуском (не имея подходящих тестовых платформ для установки), и ваш продукт наверняка потерпит неудачу. Ваши клиенты ДОЛЖНЫ быть безумными, и вы должны быть такими же. Ситуация, созданная вашими работодателями, не способствует развитию успешного продукта. Есть просто, что вы ничего не можете сделать, пока эти проблемы не будут устранены.

Ответ 3

У меня нет тестовой машины. То есть я не могу реплицировать среду клиента или пытаться установить приложение в "чистую" систему, чтобы поймать gotchas перед отправкой.

Этот тип настройки обычно никогда не заканчивается. Независимо от того, насколько вы хороши, всегда будут существенные различия между машинами-разработчиками и машинами-клиентами. Во-первых, Visual Studio имеет тенденцию включать shitload времени выполнения, на котором он может зависеть от вашего приложения, не сказав ничего. Настройка виртуальной машины не очень сложна. Я использую VMWare Workstation для эмуляции всех видов разных машин. Только требование состоит в том, что у вас есть лицензии для операционных систем и программ, которые вы хотите установить на виртуальных машинах. VMWare предлагает 30-дневную бесплатную пробную версию, и после этого я верю в 189 долларов.

Ответ 4

Другие люди дали вам большой ответ; вот несколько меньших предложений, которые могут оказаться полезными в случае, если вы не сможете предпринять больше действий:

  • укажите, на какие DLL файлы зависит ваше приложение. Если вы не знаете, от чего зависит ваше приложение, как вы можете обеспечить доступность зависимостей?
  • Напишите утилиту, которая ищет и регистрирует любой экземпляр этих DLL в системе, а также версию DLL и системный путь. Если у пользователя возникают проблемы, эта утилита может пройти долгий путь, чтобы помочь вам устранить эту проблему, поскольку вы упомянули, что у вас нет физического или сетевого доступа к машинам, которые обнаруживают проблему.
  • напишите утилиту, которая ничего не делает, кроме LoadLibrary() ваших зависимостей. Ошибки могут быть зарегистрированы и, по крайней мере, у вас будет простой способ определить, что не так на машине клиентов.

Надеемся, что общие проблемы будут выяснены быстро и исправлены, чтобы они перестали быть общими проблемами, и вам будет все меньше и меньше нужно использовать эти инструменты. Но пока вы не справитесь с проблемами, они могут оказаться полезными.

Кроме того, в одном комментарии вы упомянули, что проблема вызвана системными DLL файлами Windows - они обычно вызывают несколько проблем с "DLL-адом" на современных системах, поскольку стороннее программное обеспечение (в том числе ваше), как правило, не может их заменить. Все системы Windows должны получить то, что предоставляет MS, а MS - довольно неплохо (хотя и не обязательно идеально), чтобы сделать новые совместимыми. Если это вызывает проблемы, вы можете отправить информацию о том, какие DLL файлы они (и, возможно, версии), чтобы люди могли отвечать с большей спецификой, например, что может потребоваться настроить для обеспечения установки Windows для установки DLL.

Ответ 5

Представьте это своему боссу следующим образом:
Машина для тестирования установок намного дешевле, чем раздраженный клиент или даже ваше ВРЕМЯ в отслеживании проблем.

Ответ 6

Могут ли некоторые из ваших зависимостей быть статически связаны?

Ответ 7

Включаете ли вы конкретные DLL в свою установку?

Если это так, это неправильный путь. Вместо этого вы должны включить распространяемый пакет MS для своего компилятора. Например, если вы скомпилируете MSVC 8.0 SP1, вы получите этот пакет и установите его с помощью своего приложения:

Распространяемый пакет Microsoft Visual С++ 2008 с пакетом обновления 1 (x86)

Каждая версия MSCV (включая уровень SP) имеет свой собственный пакет redist. Убедитесь, что вы выбрали правильный для своего компилятора.

После того, как вы выпустите огонь, сядьте со своим боссом и убедите их, что если вы собираетесь делать вид, что являетесь софтверной компанией, вы должны действовать как один. Получите реальную производственную среду. Это не школьный клуб программирования, это ваша жизнь.

РЕДАКТИРОВАТЬ: просто чтобы быть ясным. Как только вы получите переиздание, не распаковывайте его на свой компьютер, а затем включите в свою установку библиотеки DLL. Вместо этого включите весь установщик переименования в качестве подэтапа вашей установки. Сначала установите переделку, затем установите код.

Ответ 9

Вы можете спросить клиента о доступе к VPN или о чем-то подобном, чтобы вы могли использовать свою среду.

Ответ 10

Если вы пройдете полный абсолютный путь до LoadLibrary(), он будет смотреть только в том точном месте для DLL. Вы можете использовать это, чтобы обойти некоторые из ваших проблем. Пакет всех DLL-приложений, которые требуется вашему приложению в папке "lib", и включите его в zip файл с вашей программой. Пока папка "lib" находится в той же папке, что и .exe, вы можете использовать GetCurrentDirectory для создания абсолютных путей к этим библиотекам и обеспечения того, чтобы загружаемые библиотеки были теми же, что вы использовали, когда вы тестировали программного обеспечения. Однако, если вы используете библиотеку, в которой у вас нет прав на перераспределение, этот метод не очень помогает.

Ответ 11

Я бы посмотрел VMWare. Это довольно крутая виртуальная машина, и вы, вероятно, могли бы имитировать клиентскую среду.

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

Ответ 12

Вы уверены, что версия и пакет обновления для Windows, которые вы разрабатываете, "похожи" на машину клиентов? Если нет, попробуйте с этим. Иногда различные игровые автоматы являются виновниками игры.

Вы можете использовать виртуальные машины, как сообщали все, или вы можете иметь (Norton) изображения Ghost различных версий и SP, но затем ваше предприятие должно нести стоимость машины.