我尝试了很多不同的实现。棘手的问题是打印对话框将在我的开发机器上显示并正常工作,但是当我构建.msi文件并部署到另一台机器时,打印按钮实际上什么都不做。它应该使用来自相应ui的信息呈现图形,并且我已经排除它正在使用qwt库不正确,因为(尽管我似乎无法在除了以外的任何其他机器上正确安装它dev machine)在安装程序后,使用qwt库生成的图表可以正常渲染,只需打印按钮即可。
以下是我的.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文件中,我尝试过#include <QtPrintSupport>
,#include "QtPrintSupport"
,#include "QtPrintSupport/QPrintDialog"
,#include <QtPrintSupport/QPrintDialog>
以及任何其他可能的变体。
我正在使用WiX和蜡烛和灯来构建项目。 WiX是一种简单的标记语言,它将指定要包含在.msi文件中的文件,并且PrintSupport包含与任何其他包含的库相同。
我也尝试过AdvancedInstaller并收到了相同的结果。
我已经尝试在安装了更新版本的.dll文件的另一台计算机上安装应用程序之后替换安装目录中的.dll文件,并且尝试使用dev计算机中的相同旧版本,以防它们不是&#39进入.msi。使用旧的.dll我得到相同的无响应按钮。使用新的.dll会导致应用程序抱怨它无法找到.dll的正确版本并且崩溃,这在我更换qwindows.dll时特别相关,我想.dll不向后兼容?
我没有看到任何指定在构建它时将包含在WiX文件中的.dll文件的版本。它可能与qwt和QtPrintSupport的版本控制有关吗?对此问题的任何见解都将非常感激,如果有任何不清楚或需要更多代码示例或信息,请不要犹豫,并感谢您的考虑。
答案 0 :(得分:0)
您可以使用名为Orca的工具检查.msi包中包含的文件版本。 Orca是Windows安装程序SDK的一部分。要安装Orca,您必须下载最新的Windows SDK并选择要安装的特定可选组件(我不记得确切的可选组件来选择获得Orca,我记得没有必要安装完整的Windows SDK) / p>
安装Orca后,在Orca中打开msi软件包并导航到“文件”表。搜索您的特定文件并查看所包含文件的版本。
- 我建议你做的另一件事是生成详细的安装程序日志。 请看一下
http://blogs.msdn.com/b/astebner/archive/2005/03/29/help-me-help-you-if-you-have-setup-bugs.aspx
日志将为您提供有关文件是否被复制的信息以及可能对您有所帮助的任何其他信息。
- 第三件事,我建议你弄清楚是否所有依赖都已到位。
如果您熟悉SysInternals套件中名为“ProcMon”的工具,则可以在此工具中为所有相关dll文件设置过滤器。然后,ProcMon可以指示您是否找不到任何依赖项。
- 您可能要确认的第四件事是,是否需要执行任何特殊操作才能使其正常工作。比如注册dll,创建任何特殊的注册表项等。
看看你是否可以找出一些东西,然后我们可以把它推进去。