Как отмечалось в другом комментарии, пути важны.
Честно говоря, QtInstallerFramework не имеет очень хорошей документации, и многое из этого я выяснил методом проб и ошибок.
Это ни в коем случае не единственный способ сделать это. Надеюсь, это поможет в качестве примера. Также стоит отметить, что это будет работать и в Linux / OSX с некоторыми небольшими изменениями.
Дерево каталогов:
rootdir
installer
config
config.xml <#1 below>
packages
com.<vendor>.installer
meta
package.xml <#2 below>
com.<vendor>.<name> [This can be 1-N of these]
meta
installscript.qs <#3 below>
package.xml <#4 below>
data
<name>
<executable and dependencies here>
config.xml # 1:
Примечание: @ var @ подставляются автоматически, заполняйте текст в []
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>[Name]</Name>
<Version>[Version]</Version>
<Title>[Application Title]</Title>
<Publisher>[Publisher]</Publisher>
<StartMenuDir>[VendorName]/[Name] [Version]</StartMenuDir>
<TargetDir>@ApplicationsDir@/[Publisher]/[Name] @Version@</TargetDir>
<ProductUrl>[yoururlhere.com]</ProductUrl>
</Installer>
package.xml # 2:
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<DisplayName>Installer</DisplayName>
<Description>[Publisher] Software Installer</Description>
<Version>[1.0.0]</Version>
<ReleaseDate>[2019-11-13]</ReleaseDate>
<Name>com.[Vendor].installer</Name>
<Virtual>true</Virtual>
<UpdateText>This changed compared to the last release</UpdateText>
</Package>
installscript.qs # 3:
function Component()
{
// default constructor
}
Component.prototype.createOperations = function()
{
// This actually installs the files
component.createOperations();
if (systemInfo.productType == "windows") {
// Start menu shortcut
component.addOperation("CreateShortcut",
"@TargetDir@/[Name]/[Executable.exe]",
"@StartMenuDir@/[Name].lnk",
"workingDirectory=@TargetDir@/[Name]",
"iconPath=@TargetDir@/[Name]/[Name].ico");
// Desktop Shortcut
component.addOperation("CreateShortcut",
"@TargetDir@/[Name]/[Executable.exe]",
"@DesktopDir@/[Name] @Version@.lnk",
"workingDirectory=@TargetDir@/[Name]",
"iconPath=@TargetDir@/[Name]/[Name].ico");
}
}
package.xml # 4:
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<DisplayName>[Name]</DisplayName>
<Description>[Some description]</Description>
<Version>[Version]</Version>
<ReleaseDate>[Date]</ReleaseDate>
<Name>com.[vendor].[name]</Name>
<Script>installscript.qs</Script>
<Default>false</Default>
<ForcedInstallation>true</ForcedInstallation>
</Package>
Здесь вы создаете свое приложение и копируете двоичный файл в com. [Vendor]. [Name] / data / [name] / folder.
Если это приложение Qt, вам следует использовать windeployqt.exe для каждого приложения в каждом соответствующем целевом каталоге ([имя] / данные / [имя] / [исполняемый файл]], чтобы добавить всезависимости Qt.
Наконец, чтобы сделать пакет установщика (автономная версия) с помощью следующей команды (из корневого каталога, показанного в дереве):
binarycreator.exe --offline-only -c "installer/config/config.xml" -p "installer/packages" "$[Name]Installer_[version].exe"