Skip to content

Installation and Deployment

Your Qt just doesn't want to build? Your compiler can't find the libs? Here's where you find comfort and understanding. And help.
9.7k Topics 51.1k Posts
  • Building Qt Creator for windows 10

    Unsolved
    16
    0 Votes
    16 Posts
    3k Views
    jsulmJ
    @fryn3 You're copying Qt libraries from MinGW Qt you used to build QtCreator, right? Also, did you check where "*make install" installed QtCreator? You can use this tool to deploy your QtCreator: http://doc.qt.io/qt-5/windows-deployment.html
  • error android kit

    Solved
    4
    0 Votes
    4 Posts
    619 Views
    K
    @Joao-Alysson Best is to follow those guidelines. Especially it is also important to stay with the recommended versions (e.g. NDK)
  • compilation error

    Solved
    2
    0 Votes
    2 Posts
    380 Views
    sierdzioS
    Well, run verbose mode as it says (go to Projects -> Android build settings and check the checkbox). Also, don't use Ant, it's not supported anymore. And don't use spaces in paths on Windows - that might quickly get you in trouble.
  • customize InstallScript.qs file

    Unsolved
    2
    0 Votes
    2 Posts
    1k Views
    sierdzioS
    Check the docs https://doc.qt.io/qtinstallerframework/ Also: Example 1 https://doc.qt.io/qtinstallerframework/qt-installer-framework-changeuserinterface-example.html Example 2 https://doc.qt.io/qtinstallerframework/qt-installer-framework-dynamicpage-example.html Docs on controller scripting https://doc.qt.io/qtinstallerframework/noninteractive.html Sorry for raw links, I'm in a hurry.
  • Qt does not see the UWP device for running applications (Qt 5.12.0-beta2)

    Unsolved
    1
    0 Votes
    1 Posts
    381 Views
    No one has replied
  • 0 Votes
    3 Posts
    898 Views
    K
    I'm sorry about I barely can provide only control script( other installer source files contains our product's information). It may be hard to use for reproduce, but for your information, attached is (almost) unmodified control script. [0_1540106552771_control.js](Uploading 100%) (I could not upload the file, so I embed script...and, sorry about Japanese texts..) function Controller() { // installer.setDefaultPageVisible(QInstaller.Introduction, false); // installer.setDefaultPageVisible(QInstaller.TargetDirectory, false); // installer.setDefaultPageVisible(QInstaller.ComponentSelection, false); // installer.setDefaultPageVisible(QInstaller.LicenseCheck, false); // if (systemInfo.productType === "windows") // installer.setDefaultPageVisible(QInstaller.StartMenuSelection, false); // installer.setDefaultPageVisible(QInstaller.ReadyForInstallation, false); // installer.setDefaultPageVisible(QInstaller.PerformInstallation, false); // installer.setDefaultPageVisible(QInstaller.InstallationFinished, false); // console.log('Controller()'); this.numUpdates = 0; this.componentVersion = ""; // 自動アップデートの際、終了時にダイアログを表示しておく場合は true にする。 // (表示が現状見苦しい形になっているので、一旦 false にしておく // Button関連の制御が可能になったら考える) Controller.keepDialogOnUpdate = false; // installer.autoAcceptMessageBoxes(); installer.componentAdded.connect(this, Controller.prototype.componentAdded); installer.finishUpdaterComponentsReset.connect(this, Controller.prototype.finishUpdaterComponentsReset); installer.updaterComponentsAdded.connect(this, Controller.prototype.updaterComponentsAdded); installer.statusChanged.connect(this, Controller.prototype.statusChanged); installer.installationFinished.connect(this, Controller.prototype.installationFinished); installer.updateFinished.connect(this, Controller.prototype.updateFinished); // for all users. installer.setValue("AllUsers", "true"); // Windows版のインストール場所を修正 if (installer.value("os") === "win") { // console.log("os is win, setting TargetDir to ApplicationDirX64"); // installer.setValue("TargetDir", installer.value("ApplicationsDirX64") + "\\" + installer.value("ProductName")); console.log("new TargetDir: " + installer.value("TargetDir")); } else { installer.setValue("TargetDir", "/Applications/@ProductName@"); } } Controller.prototype.statusChanged = function(status) { console.log("statusChanged: "); console.log(status); if (installer.isUpdater() && installer.value("silent") === "true") { // エラーのとき終了 if (status === 1) { console.log("Error, quit immediately."); gui.reject(); } } }; function getAppPid(apppath) { var pss = installer.execute("/bin/ps", [ "-ax" ]); if (pss.length > 1) { var lines = pss[0].split("\n"); for (var i in lines) { var m = /[ \t]*([0-9]+)[^\/]+(\/.+)$/.exec(lines[i]); if (m) { if (m[2].indexOf(apppath) == 0) { return parseInt(m[1], 10); } } } } return -1; } function killPid (pid) { var r = installer.execute("/bin/kill", [ "" + pid ]); } function toVersionNumber(versionString) { var versions = ["0", "0", "0" ]; try { versions = versionString.split("."); } catch (e) {} var versionNum = parseInt(versions[0]) * 100 + parseInt(versions[1]) * 10 + parseInt(versions[2]); return versionNum; } Controller.prototype.updaterComponentsAdded = function(component) { console.log("updaterComponentsAdded"); Controller.componentVersion = component.value("Version"); console.log(" component.Version: " + Controller.componentVersion); this.numUpdates++; }; Controller.prototype.finishUpdaterComponentsReset = function(componentsWithUpdates) { console.log("finishUpdaterComponentsReset " + this.numUpdates); if (this.numUpdates === 0) { if (installer.value("silent") === "true") { } else { QMessageBox.information("updator.finishing", "アップデート", "アップデートはありません", QMessageBox.OK); } gui.reject(); } }; Controller.prototype.componentAdded = function (c) { console.log("ComponentAdded"); console.log(c); Controller.componentVersion = c.value("Version"); console.log(" version: " + Controller.componentVersion); this.numUpdates ++; }; Controller.prototype.installerLoaded = function() { }; Controller.prototype.IntroductionPageCallback = function() { if (installer.isInstaller()) { console.log("IntroductionPageCallback"); // console.log("testvalue: " + installer.value("testvalue")); // build.sh から呼び出された場合(配布用zipを作成中) // var tgtdir = installer.value('BuildTargetDir'); // console.log("BuildTargetDir: " + tgtdir); // installer.setValue('TargetDir', tgtdir); if (systemInfo.productType === "windows") { var maintenanceToolPath = installer.value("TargetDir") + "\\" + installer.value("ProductName") +"MaintenanceTool.exe"; if (installer.fileExists(maintenanceToolPath)) { console.log(maintenanceToolPath + " already exists"); // var programExecutable = installer.value("TargetDir") + "\\" + installer.value("ProductName") +".exe"; if (installer.fileExists(programExecutable)) { // check version of executable var arrResult = installer.execute(programExecutable, [ "-v" ]); console.log("version number of executable: " + arrResult[0]); var versionNum = toVersionNumber(arrResult[0]); // check minimum version number that has registry function. console.log("versionNum=" + versionNum); if (versionNum > 25) { console.log("can run registry function from application executable"); arrResult = installer.execute(programExecutable, [ "-c" ]); console.log("result: " + arrResult[0]); if (arrResult[0] == "no") { console.log("No proper Resistry found though already installed"); installer.gainAdminRights(); installer.execute(programExecutable, [ "-i" ]); } } // 起動中のアプリ終了 installer.killProcess(programExecutable); } installer.gainAdminRights(); // maintenanceTool起動 installer.execute(maintenanceToolPath, ["--updater", "silent=true"]); gui.clickButton(buttons.CancelButton); return; } else { console.log(maintenanceToolPath + " not exists."); } } if (systemInfo.productType === "osx") { var programExecutable = installer.value("TargetDir") + "/" + installer.value("ProductName") +".app/Contents/MacOS/" + installer.value("ProductName"); // 起動中のアプリ終了 // macosでは installer.killProcessは機能しない(実装が空)。 var pid = getAppPid(programExecutable); console.log("pid(" + programExecutable + "): " + pid); if (pid > 0) { killPid(pid); } console.log("programExecutable: " + programExecutable); } // 強制的に「次へ」ボタンを押す gui.clickButton(buttons.NextButton); } else if (installer.isUpdater()) { // アプリケーションから自動アップデート機能として起動された if (installer.value("silent") === "true") { gui.clickButton(buttons.NextButton); } } }; Controller.prototype.TargetDirectoryPageCallback = function() { console.log("ProductVersion: " + installer.value("ProductVersion")); console.log("TargetDirectoryPageCallback"); console.log("InstallDirPath: " + installer.value("InstallerDirPath")); console.log("TargetDir: " + installer.value("TargetDir")); console.log("ApplicationsDir: " + installer.value("ApplicationsDir")); console.log("ApplicationsDirX86: " + installer.value("ApplicationsDirX86")); console.log("ApplicationsDirX64: " + installer.value("ApplicationsDirX64")); }; Controller.prototype.ComponentSelectionPageCallback = function() { console.log("InstallDirPath: " + installer.value("InstallerDirPath")); console.log("ComponentSelectionPageCallback"); }; Controller.prototype.ReadyForInstallationPageCallback = function() { console.log("ReadyForInstallationPageCallback"); }; Controller.prototype.PerformInstallationPageCallback = function() { console.log("PerformInstallationPageCallback"); }; Controller.prototype.FinishedPageCallback = function() { console.log("FinishedPageCallback"); console.log("version: " + Controller.componentVersion); var widget = gui.currentPageWidget(); // デバッグコード // for (var key in widget) { // console.log(key); // } if (installer.isInstaller()) { if (widget != null) { widget.title = installer.value("ProductName") + "のインストールが終了しました。"; widget.MessageLabel.setText(installer.value("ProductName") + " " + Controller.componentVersion + ".\n" + "\"終了\"をクリックしてウィンドウを閉じてください。"); //  <ー 『 のウィザードを終了するには"終了"をクリックしてください。』 } // インストール終了時にウィンドウを残し、インストール終了をユーザに知らせる場合は下をコメントアウト // // 強制的に「終了」ボタンを押す // gui.clickButton(buttons.FinishButton); // // デバッグコード var arr = gui.findChildren(widget, "*Button"); console.log("length: " + arr.length); for (var k in arr) { console.log(arr[k]); } } else if (installer.isUpdater()) { if (widget != null) { widget.title = installer.value("ProductName") + "のアップデートが終了しました。"; widget.MessageLabel.setText(installer.value("ProductName") + " " + installer.value("Version") + ".\n" + "\"終了\"をクリックしてウィンドウを閉じてください。"); if (Controller.keepDialogOnUpdate) { QMessageBox.information("updator.finishing", "アップデート", "アップデートが終了しました。\nバージョン " + Controller.componentVersion, QMessageBox.OK); gui.clickButton(buttons.FinishButton); } else { if (installer.value("silent") != "true") { QMessageBox.information("updator.finishing", "アップデート", "アップデートが終了しました。\nバージョン " + Controller.componentVersion, QMessageBox.OK); gui.clickButton(buttons.FinishButton); } else { gui.clickButton(buttons.FinishButton); } } } } }; Controller.prototype.LicenseAgreementPageCallback = function() { }; Controller.prototype.RestartPageCallback = function() { console.log("RestartPageCallback"); }; Controller.prototype.installationFinished = function() { console.log("installationFinished"); if (installer.isInstaller()) { } else if (installer.isUpdater()) { console.log(" isUpdater"); if (installer.value("silent") != "true") { gui.clickButton(buttons.NextButton); } } }; Controller.prototype.updateFinished = function() { console.log("updateFinished"); };
  • Compilation problem con Qt creator 4.7.2 and Qt 5.11.2 (Windows)

    Unsolved
    5
    0 Votes
    5 Posts
    708 Views
    aha_1980A
    @Francky033 Ok, so Creator 4.7.0 detected your MSVC compiler automatically correctly? I.e. you did not have to add it manually?
  • Qt Creator 15.11.2 : MacOS Mojave

    Unsolved
    1
    0 Votes
    1 Posts
    281 Views
    No one has replied
  • Problem while building qtbase

    Unsolved
    7
    0 Votes
    7 Posts
    999 Views
    aha_1980A
    @br_developer said in Problem while building qtbase: I need to use a library What do you actually want to do with this library? called qthttp (which is almost impossible to find online, so I'm using a legacy version I have) You are aware of the problems that can occur when using legacy code (and I'd call Qt 5.4 legacy too) in security-relevant environments? but it does not get recognized by the Qt project. Can you elaborate on this? "does not get recognized" is a bit vague and most likely technically incorrect. So: what did you actually do? what did you expect to happen? what did happen instead? Regards
  • 0 Votes
    8 Posts
    2k Views
    ivandI
    Hi, Did you succeed to compile the PostgreSQL plugin for android?
  • static qt for mips: Can't find matching LO16 reloc against

    Unsolved
    2
    0 Votes
    2 Posts
    459 Views
    SGaistS
    Hi, Looks like a binutils bug See: https://lists.gnu.org/archive/html/bug-binutils/2016-09/msg00134.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=884821
  • problem with font after deploys

    Solved
    12
    0 Votes
    12 Posts
    2k Views
    SGaistS
    You're welcome ! Since you have it working now, please mark the thread as solved using the "Topic Tools" button so that other forum users may know a solution has been found :)
  • access directly to I/O ports on PC hardware in ubuntu give segmentation fault

    Solved
    4
    0 Votes
    4 Posts
    762 Views
    jsulmJ
    @anil_arise Please read https://linux.die.net/man/2/inl Especially: "You use ioperm(2) or alternatively iopl(2) to tell the kernel to allow the user space application to access the I/O ports in question. Failure to do this will cause the application to receive a segmentation fault."
  • IFW: there Is no way to get updater's version.

    Solved
    2
    0 Votes
    2 Posts
    376 Views
    K
    @kuro I solved this by myself. I checked IFW's source code, then I found Components have value "Version"(not "version"). I could receive updater's version like: Controller.prototype.componentAdded = function (c) { console.log(c.value("Version")); }; Controller.prototype.updaterComponentsAdded = function(component) { console.log(component.value("Version")); }; Update of this post: I forgot to describe. Need to 'connect' the functions above be called like : function Controller() { installer.componentAdded.connect(this, Controller.prototype.componentAdded); installer.updaterComponentsAdded.connect(this, Controller.prototype.updaterComponentsAdded); }
  • Qt Creator - No valid kits found

    Unsolved
    6
    0 Votes
    6 Posts
    2k Views
    SGaistS
    No, they are independent. But you can use your brew installed Qt. Add that Qt version to Qt Creator and make a Kit using it.
  • How to built MySQL driver on Ubuntu 18

    Unsolved
    6
    0 Votes
    6 Posts
    2k Views
    SGaistS
    Hi, You didn't install the version you built.
  • Examples located in a write-protected location

    Unsolved
    3
    0 Votes
    3 Posts
    419 Views
    L
    Thank's for the answer, i think i solve the problem but still having some issues, dosn't matter anyways.
  • Configure Qt for Android - error

    Solved
    4
    0 Votes
    4 Posts
    548 Views
    K
    @fjoneus You are welcome. Most of us went through this experience. Please mark your post as solved then under "Topic Tools".
  • Build APK in QT 5.8 [error /ant/build.xml:649]

    Solved
    2
    0 Votes
    2 Posts
    638 Views
    CaktozzC
    Its solved, try to change the android target in Projects > Android Build SDK or update your API in SDK tools, thanks Qt :*
  • MinGW 5.11.2 install with empty dll files

    Unsolved installation mingw32 5.11.2
    1
    0 Votes
    1 Posts
    609 Views
    No one has replied