IscanderChe
IscanderChe2. August 2019 02:37

Einfaches Tracker-Projekt. Teil 8: Verteilungsbildung und Ergebnisse

Inhalt

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!

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

Evgenii Legotckoi
  • 5. August 2019 05:00

А не думали попробовать использовать Qt Installer Framework для сборки дистрибутива?

IscanderChe
  • 5. August 2019 06:02

Насколько я понял из доков, его надо собирать статической сборкой Qt, а я с этим не в ладах...

Evgenii Legotckoi
  • 5. August 2019 06:06

Нет, ничего подобного. В статье без статической сборки сделано.

IscanderChe
  • 5. August 2019 06:16

Я имею ввиду, сам фреймворк, перед тем, как его использовать, надо собрать из исходников статическим Qt.

Evgenii Legotckoi
  • 5. August 2019 06:17

нет. Его можно установить из Maintenance Tool, как и Qt Creator

IscanderChe
  • 5. August 2019 06:23

У меня с Maintenance Tool засада. При открытии тула он требует логин-пароль Qtшного аккаунта, я ввожу то, что надо,а он не принимает его. И на этом всё. Я даже не могу установить другую версию Qt с того же аккаунта, приходится новый заводить.

Evgenii Legotckoi
  • 5. August 2019 06:26

Вообще, можно всё установить и без аккаунта, он не очень-то и обязателен, если использовать Community Edition

IscanderChe
  • 5. August 2019 06:59

В смысле? Я смотрю на странице https://www.qt.io/download, там только два варианта: Commercial и Open Source. Использую вторую.

Evgenii Legotckoi
  • 5. August 2019 07:01

Open Source и есть Community ))

IscanderChe
  • 5. August 2019 07:05

Так вот она и требует аккаунта.

Evgenii Legotckoi
  • 5. August 2019 07:34

Ну это уже другой вопрос, что она требует аккаунта. У меня есть аккаунт и он работает ))

IscanderChe
  • 25. Dezember 2019 14:04

Поразбирался на досуге с QtIFW, вроде бы нормально. Спасибо за совет. Напрягает только, что на Windows 7 кнопка "Снять отметки выбора со всех компонентов" криво отображается, только часть текста видна. На Windows 10 всё в порядке с отображением текста.

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25. Dezember 2023 10:30
Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken