- 1. Ergebnisse
Abschließend bereiten wir die bei der Kompilierung erhaltenen Dateien für die Verteilung vor. Es spielt keine Rolle, ob das Projekt lokal ist. Es ist bequemer, für alle Fälle einen Installateur zur Hand zu haben. Damit können Sie beispielsweise die Registrierung automatisch bereinigen, wenn Sie ein Programm von einer Festplatte entfernen.
Aber beginnen wir damit, dass wir die ausführbare Datei wie in anderen Anwendungen zuweisen: Wir setzen die Versionsnummer, den Produktnamen, das Copyright und das Symbol der ausführbaren Datei.
Dazu erstellen wir eine rc-Datei und fügen sie der entsprechenden Direktive der Profildatei hinzu.
# ICTrackerServer.rc IDI_ICON1 ICON "images/ICTracker.ico" #include <windows.h> #define VER_FILEVERSION 0,1 #define VER_FILEVERSION_STR "0.1\1" #define VER_PRODUCTVERSION 0,1 #define VER_PRODUCTVERSION_STR "0.1\1" #define VER_FILEDESCRIPTION_STR "ICTrackerServer" #define VER_INTERNALNAME_STR "ICTrackerServer" #define VER_LEGALCOPYRIGHT_STR "Copyright (C) 2019, Iscander Che" #define VER_ORIGINALFILENAME_STR "ICTrackerServer.exe" #define VER_PRODUCTNAME_STR "ICTrackerServer" VS_VERSION_INFO VERSIONINFO FILEVERSION VER_FILEVERSION PRODUCTVERSION VER_PRODUCTVERSION BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904E4" BEGIN VALUE "FileDescription", VER_FILEDESCRIPTION_STR VALUE "FileVersion", VER_FILEVERSION_STR VALUE "InternalName", VER_INTERNALNAME_STR VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR VALUE "ProductName", VER_PRODUCTNAME_STR VALUE "ProductVersion", VER_PRODUCTVERSION_STR END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x0419, 1252 END END
# ICTrackerServer.pro RC_FILE = ICTrackerServer.rc
Wir werden das gleiche für den Kunden tun.
Um DLL-Dateien für den eigenständigen Betrieb der ausführbaren Datei zu sammeln, verwenden wir das Dienstprogramm windeployqt.
windeployqt %путь_к_папке_с_исполняемым_файлом%\ICTrakerServer.exe
Wir werden das gleiche für den Kunden tun.
Lassen Sie uns nun die Distribution erstellen. Dazu verwenden wir das Inno Setup-Programm.
Lassen Sie uns ein Build-Skript in Inno Setup selbst erstellen. Sie können dies mit dem Assistenten tun, aber Sie können die Vorlage unten auch manuell anpassen. Ich habe mal eine Vorlage aus einem Beispiel aus dem Netz geschrieben.
;------------------------------------------------------------------------------ ; ; Установочный скрипт для Inno Setup 5.6.1 ; для ПО ICTracker ; (c) Iscander Che, 26.07.2019 ; ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ; Определяем некоторые константы ;------------------------------------------------------------------------------ ; Имя приложения #define Name "ICTracker" ; Версия приложения #define Version "0.1" ; Фирма-разработчик #define Publisher "Iscander Che" ; Сафт фирмы разработчика #define URL "iscander.che@gmail.com" ; Имя исполняемого модуля #define ExeName "ICTracker.exe" ; Имя папки по умолчанию #define DirName "ICTracker" ; Корневой путь по умолчанию #define RootDir "G:\repos_wc" ;------------------------------------------------------------------------------ ; Параметры установки ;------------------------------------------------------------------------------ [Setup] ; Уникальный идентификатор приложения, ;сгенерированный через Tools -> Generate GUID AppId={{C73A79D0-8EDD-4AEE-9F14-4720AFF94765} ; Прочая информация, отображаемая при установке AppName={#Name} AppVersion={#Version} AppPublisher={#Publisher} AppPublisherURL={#URL} AppSupportURL={#URL} AppUpdatesURL={#URL} ; Путь установки по-умолчанию DefaultDirName={pf}\{#DirName} ; Имя группы в меню "Пуск" DefaultGroupName={#Name} ; Каталог, куда будет записан собранный setup и имя исполняемого файла OutputDir={#RootDir}\{#DirName}\bin OutputBaseFileName={#Name}_v.{#Version}_setup ; Файл иконки SetupIconFile={#RootDir}\{#DirName}\ICTrackerServer\images\ICTracker.ico ; Параметры сжатия Compression=lzma SolidCompression=yes ;------------------------------------------------------------------------------ ; Устанавливаем языки для процесса установки ;------------------------------------------------------------------------------ [Languages] Name: "english"; MessagesFile: "compiler:Default.isl"; LicenseFile: "License_ENG.txt" Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"; LicenseFile: "License_RUS.txt" ;------------------------------------------------------------------------------ ; Опционально - некоторые задачи, которые надо выполнить при установке ;------------------------------------------------------------------------------ [Tasks] ; Создание иконки на рабочем столе Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked ;------------------------------------------------------------------------------ ; Файлы, которые надо включить в пакет установщика ;------------------------------------------------------------------------------ [Files] ; Исполняемый файл Source: "{#RootDir}\{#DirName}\build\release\{#Name}Server.exe"; DestDir: "{app}"; Flags: ignoreversion ; Прилагающиеся ресурсы Source: "{#RootDir}\{#DirName}\build\release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ;------------------------------------------------------------------------------ ; Указываем установщику, что иконки он должен взять из исполняемого файла ;------------------------------------------------------------------------------ [Icons] Name: "{group}\{#Name}"; Filename: "{app}\{#ExeName}" Name: "{commondesktop}\{#Name}"; Filename: "{app}\{#ExeName}"; Tasks: desktopicon ;------------------------------------------------------------------------------ ; Удаление ключей реестра при деинсталляции приложения ;------------------------------------------------------------------------------ [Registry] Root: HKCU; Subkey: "Software\ICTracker\Settings"; Flags: uninsdeletekey
Sie können die Assembly manuell über Inno Setup ausführen. Dies ist praktisch beim Testen der Baugruppe, weil. Fehler beim Verfassen von Anweisungen werden sofort angezeigt. Und Sie können dies über die Befehlszeile (aus einer bat-Datei) tun. Wir werden die zweite Methode verwenden, denn vor dem Erstellen der Distribution:
1) Sie müssen die Testdateien Test_DataBase.exe (Datenbanktests), Test_Data.exe (Generierung einer Testdatenbank für GUI-Tests) und Test_Server.exe (Testclient zum Testen des Empfangs der Tasknummer und Revisionsnummer durch die Server); in Inno Setup gibt es die Möglichkeit, Dateien von der Verteilung auszuschließen, aber ich konnte sie aufgrund eines unvollständigen Verständnisses der Syntax der Inno Setup-Anweisungen nicht verwenden;
2) Fügen Sie den Lizenztext dem Satz von Distributionsdateien hinzu.
rem makebin.bat del /q build\release\Test_*.* copy license\LICENSE_GPL.txt build\release "%path_to_soft%\InnoSetup5\iscc" setup.iss
Alles, die Montage ist einsatzbereit. Jetzt bleiben nur noch Funktionstests und die Einführung in den Probebetrieb.
Ergebnisse
Funktionale Anforderungen sind erfüllt, die Architektur wurde nicht verändert.
Aufgrund der Schwierigkeit, mit einer einzelnen Dropdown-Liste des Aufgabenstatus zu interagieren, wurden kleine Änderungen am Erscheinungsbild des Trackers vorgenommen. Die Form des Projekterstellungsdialogs wurde vereinfacht, sodass nur noch Projekte ohne VCS-Unterstützung übrig bleiben. Projekte mit VCS-Unterstützung werden automatisch angebunden und archiviert. Die Namen von bereits archivierten Projekten sind nicht mit dem Buchstaben „(A)“ gekennzeichnet, da beim Extrahieren aus dem Archiv das Projekt automatisch aktiv wird.
Die Hauptschwierigkeiten lagen in der Entwicklung der Datenbank: Zwei Tabellen wurden aus der Datenbank entfernt, in einer Tabelle wurde eine Spalte hinzugefügt. Für die Zukunft sollte dies berücksichtigt werden und ein gründlicherer Ansatz für die Bildung der Datenbankstruktur (falls erforderlich, ihre Verfügbarkeit).
Vielen Dank für Ihre Aufmerksamkeit. Damit ist das Simple Tracker-Projekt abgeschlossen. Interessante Projekte!
А не думали попробовать использовать Qt Installer Framework для сборки дистрибутива?
Насколько я понял из доков, его надо собирать статической сборкой Qt, а я с этим не в ладах...
Нет, ничего подобного. В статье без статической сборки сделано.
Я имею ввиду, сам фреймворк, перед тем, как его использовать, надо собрать из исходников статическим Qt.
нет. Его можно установить из Maintenance Tool, как и Qt Creator
У меня с Maintenance Tool засада. При открытии тула он требует логин-пароль Qtшного аккаунта, я ввожу то, что надо,а он не принимает его. И на этом всё. Я даже не могу установить другую версию Qt с того же аккаунта, приходится новый заводить.
Вообще, можно всё установить и без аккаунта, он не очень-то и обязателен, если использовать Community Edition
В смысле? Я смотрю на странице https://www.qt.io/download, там только два варианта: Commercial и Open Source. Использую вторую.
Open Source и есть Community ))
Так вот она и требует аккаунта.
Ну это уже другой вопрос, что она требует аккаунта. У меня есть аккаунт и он работает ))
Поразбирался на досуге с QtIFW, вроде бы нормально. Спасибо за совет. Напрягает только, что на Windows 7 кнопка "Снять отметки выбора со всех компонентов" криво отображается, только часть текста видна. На Windows 10 всё в порядке с отображением текста.