2015-07-17 6 views
0

Я пробовал десятки различных реализаций. Сложная проблема заключается в том, что диалог печати будет отображаться и работать корректно на моей машине разработки, но когда я создаю файл .msi и развертываю на другой компьютер, кнопка печати фактически ничего не делает. Он должен отображать график с информацией из соответствующего ui, и я исключил, что он использовал библиотеку qwt неправильно, потому что (хотя я, похоже, не могу правильно ее установить на любой другой машине, кроме машины dev) графики, созданные с использованием qwt-библиотек, отображаются правильно после установки программы, просто кнопка печати работает.Не удается получить QtPrintSupport для работы

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

QT += core gui sql printsupport network 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = static-control-panel 
TEMPLATE = app 

symbian: LIBS += -lftd2xx 
else:unix|win32: LIBS += -L$$quote($$PWD/lib/) -lftd2xx \ 
    -L$$quote($$PWD/lib/) -lqwt 

INCLUDEPATH += $$quote($$PWD/include) 
DEPENDPATH += $$quote($$PWD/include) 

CONFIG += qwt 

Внутри .cs файл, который имеет фактическое кнопку печати I попробовал #include <QtPrintSupport>, #include "QtPrintSupport", #include "QtPrintSupport/QPrintDialog", #include <QtPrintSupport/QPrintDialog> и любой иная возможная версия.

Я строю проект с использованием WiX и свечи и света, чтобы его построить. WiX - это простой язык разметки, который будет определять, какие файлы включать в файл .msi, а включение PrintSupport идентично любой другой включенной библиотеке.

Я также пробовал AdvancedInstaller и получил те же результаты.

Я попытался заменить файлы DLL в каталоге установки после того, как приложение было установлено на другой машине с более новыми версиями DLL-файлов и с теми же старыми версиями от dev-устройства, в случае, t превращая его в .msi. Используя старые .dlls, я получаю ту же самую кнопку без ответа. Использование новых .dll приведет к тому, что приложение сообщит, что не может найти правильную версию .dll, и это сработает, это особенно актуально, когда я заменяю qwindows.dll, я думаю, что .dlls не совместимы с обратной совместимостью?

Я ничего не вижу, указав версию DLL-файлов, которые будут включены в файл WiX, когда я его создам. Может ли это быть чем-то связанным с версиями qwt и QtPrintSupport? Любое понимание этой проблемы было бы чрезвычайно оценено, и если что-то неясно или больше примеров кода или информации, пожалуйста, не стесняйтесь спрашивать и благодарите вас за ваше рассмотрение.

ответ

0

Вы можете проверить версию файлов, которые входят в ваш пакет .msi, используя инструмент Orca. Orca является частью SDK установщика окон. Чтобы установить Orca, вам нужно будет загрузить последнюю версию Windows SDK и выбрать конкретный дополнительный компонент для установки (я не вспоминаю точный дополнительный компонент, чтобы выбрать, чтобы получить Orca, я помню, что нет необходимости устанавливать полный пакет Windows SDK)

После установки Orca откройте свой пакет msi в Orca и перейдите в таблицу «Файл». Найдите свой файл и посмотрите версию файлов.

-Другая вещь, которую я предлагаю вам сделать, это создать подробный журнал установки. Пожалуйста, обратите внимание на

http://blogs.msdn.com/b/astebner/archive/2005/03/29/help-me-help-you-if-you-have-setup-bugs.aspx

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

-Другая вещь, я бы предложил вам выяснить, есть ли все зависимости на месте.

Если вы знакомы с инструментом под названием «ProcMon» из пакета SysInternals, вы можете установить фильтры в этом инструменте для всех зависимых DLL-файлов. ProcMon может указать вам, если какая-либо из зависимостей не найдена.

-В четвертом случае, которое вы, возможно, захотите подтвердить, есть ли какие-либо специальные операции, необходимые для работы. Например, регистрация dll, создание каких-либо специальных записей в реестре и т. Д.

Посмотрите, сможете ли вы что-то выяснить, и тогда мы сможем это сделать.

+0

Вау наконец! ProcMon сделал это, спасибо, что предложил такой отличный инструмент. Он смог указать на эту простую проблему, которая преследовала меня в течение нескольких месяцев ... так же осторожно, как и я, папка установки для функции печати была поддержкой принтеров, в то время как программа искала printsupport (no 'er'), Я переименовал папку, и она мгновенно работала на машинах, на которых была установлена ​​предыдущая версия. Еще раз спасибо за предложение, и любой, у кого есть подобные проблемы в будущем, ProcMon или другие подобные инструменты должны использовать для определения недостающих проблем с dll. – JordanSchiller

+0

Я рад, что сообщество переполнения стека помогло вам. –