-
Notifications
You must be signed in to change notification settings - Fork 64
Publishing your Project for Delphinus
To publish your project for Delphinus you need to
- put it on github
- it must be the "original" Repository, Repositories marked as fork are not listed to avoid flooding
- add an info.json to the repository root
- add an install.json to the repository root
- add at least one version (optional) see: Versioning your package
- add "Delphinus-Support" (without quotes) to your readme within your repository
The Info.json contains some meta-information of your package. An example can look like this:
{
"id": "{420D1B9B-86DB-4B1F-8D84-9CAE0F0EB2F6}",
"picture": "Logo.jpg",
"package_compiler_min": 22,
"package_compiler_max": 26,
"compiler_min": 23,
"compiler_max": 26,
"first_version": "name of version",
"dependencies":
[
{
"id": "{4FDE0715-83BE-4A22-BCFC-7BE307CFBC8C}",
"version_min": "v1.0"
}
]
}
id: Specifies the ID of your package. Once you have specified one, never ever change it. It's used to Identify a package. If you change this ID afterwards, it becomes incompatible to previous versions, as it's recorgnized as a different one. To generate one, use the Delphi IDE by pressing CTRL+Shift+G in a Source-Window or got to http://createguid.com/
picture: (Optional) Specifies a relative path to a jpeg file within your repository, which is presented in the Delphinus GUI for your package. Maximum and optimal size is 128*128 Pixel.
package_compiler_min: (Optional) Specifies the minimal supported compiler version, supported by your package in its current or past state. This is used do determine if the current or any of the past releases support a specific compiler and filter it out in the overview.
package_compiler_max: (Optional) Specifies the maximum supported compiler version, supported by your package in its current or past state. This is used do determine if the current or any of the past releases support a specific compiler and filter it out in the overview.
compiler_min: (Optional) Specifies the minimal supported compiler version, supported by your package in its current state. This is used to determine if a specific version of your package is compatible with a specific compiler and filter it out in the overview.
compiler_max: (Optional) Specifies the maximum supported compiler version, supported by your package in its current state. This is used to determine if a specific version of your package is compatible with a specific compiler and filter it out in the overview.
first_version: (Optional) Marks the first version, which supports Delphinus. This is usefull, if your repository contains versions, which you created before Delphinus. Those older versions are not visible to the user through Delphinus.
Info: you you do not specify a min or max compiler versions, its assumed it runs on all versions (keep in mind that Delphinus is only supported for XE and up). You don't have to specify both. Mostly simply defining (package_)compiler_min is what you want, to tell the minimum required compiler version for your package
###dependencies (not yet implemented) Describes a list of packages, and their required minimal version, which need to be installed before installing your package. If a dependencie is not installed or at a lower version than required, it is installed/updated automatically
id: The Id of the package which is required
version_min: The minimal required version of the package
Specifies steps for the installation. An example can look like this:
{
"search_pathes":
[
{
"pathes": "Core;Core\\Interfaces",
"platforms": "Win32;Win64;OSX32"
}
],
"browsing_pathes":
[
{
"pathes": "Core;Core\\Interfaces",
"platforms": "Win32;Win64;OSX32"
}
],
"source_folders":
[
{
"folder": "source",
"base": "source",
"recursive": true,
"filter": "*;*.*"
}
],
"projects":
[
{
"project": "Packages\\DelphiXE6\\Spring4D.Groupproj"
}
]
}
Specifies an array of path-entries which are added to the global Search Path in the IDE
pathes: contains the pathes, relative to the source folder(see source_folders), seperated by semicolon ";".
platforms: Specifies the platforms, to add the specified pathes to. If you do not specify this, Win32 is assumed. Currently supported values:
*Win32 *Win64 *OSX32
Mobile might follow one day(if i ever get my hands on a mobile-addon, which i doubt). The identifiers used here, are the same as from a DelphiProject-Files Platforms section.
same as search_pathes but adds the specified pathes to the global Browsing Path in the IDE
specifies the folders and their files to copy into the source-subdirectory of the installation
folder: specifies the relative path of a folder in your repository to copy into the source-subdirectory
base: specifies the base-part of your relative path, which is cut off. This is usefull if your source is already stored in a subdirectory of your repository called "source". This would lead to a targetpath like (InstallarionDirectory)\source\source, where the first "source" the the components source-folder, and the second one comes from your repository. Example to avoid this:
"folder": "source\\Core",
"base": "source"
this will copy the folder Source\Core to (InstallationDirectory)\source\core
recursive: specifies if it iterates through all subdirectories
filter: specifies a list of filters seperated by semicolon ";" to tell which files to copy. You can use stars "*
" as Wildcards, to specify simple masks, like ".pas" or ".dfm". Internally the Delphi function MatchesMask is used.
Specifies a list of projects to compile. If a project is a package, the path of the precompiled DCUs is added to the search_pathes before any other specified search_pathes. If a package includes the Designtime-Flag, it's automatically installed for the IDE. A Project is compiled for the enabled platforms in its Project-File (if no platform is specified, like for XE, Win32 is assumed)
project: specifies a path to a .dproj Project-File or a .groupproj GroupProjectfile relative to the Source-Folder of the directory the component is installed to.
Info: For all elements of search_pathes, browsing_pathes, source_folders and projects, the properties compiler_min, compiler_max (to specify a range, see info.json) and compiler (to specify a specific version) are supported. These allow you to specify specific compilers for each element which results in skipping of an element if the compiler version does not fit.