[QGIS-Developer] Using environment variables in QGIS.ini
Bo Victor Thomsen
bo.victor.thomsen at gmail.com
Mon Jul 12 00:32:35 PDT 2021
Hi Thomas -
Your suggestion is actually pretty close to the solution I made -
* Standard installation of QGIS with /standard/ .msi package.
* After the QGIS installation and before QGIS is started the user do a
one-time run a Python script from et central network drive - using
the Python interpreter installed together with QGIS which:
o Unzip a complete profile with specific plugins and customized
parameters from a central network based repository. This profile
replaces the standard "default" profile.
o Search/replace a couple of "tokenized" values in QGIS.ini with
actual values based on username
The profile and tokenized QGIS.ini is prepared by the GIS administrator
The Python script is packaged in a .cmd file which is started by the user.
Not a perfect solution, but doable:
* The It department is happy: No work doing specialized installations
* The GIS administrator is happy. It's a one-time piece of work for
each QGIS version to prepare the profile and tokenize the QGIS.ini
* The user is - somewhat - happy. To finish the installation is simply
to double-click once on a file placed in a "highly visible" location.
* Any subsequent mistakes made by the user (Installation of dodgy
plugins, strange changes in setups ....) is easily repaired by
running the Python script again.
Med venlig hilsen / Kind regards
Bo Victor Thomsen
Den 12-07-2021 kl. 03:14 skrev Thomas Gratier:
> Hi,
>
> I'm not aware QSettings provided by Qt can do it. Your %APPDATA% is
> not portable as would only work on Windows
>
> You can always try generate the QGIS.ini file using a templating system
>
> File QGIS.ini.j2 with following content
>
> Configuration\MODELS_FOLDER={{APPDATA}}\\QGIS\\QGIS3\\profiles\\default\\processing\\models
> Configuration\SCRIPTS_FOLDERS={{APPDATA}}\\QGIS\\QGIS3\\profiles\\default\\processing\\scripts
>
>
> File generate_ini.py with following content
>
> import os
> import jinja2
>
> templateLoader = jinja2.FileSystemLoader(searchpath="./")
> templateEnv = jinja2.Environment(loader=templateLoader)
> TEMPLATE_FILE = "QGIS.ini.j2"
> template = templateEnv.get_template(TEMPLATE_FILE)
> mydict = {
> "APPDATA": os.environ.get("APPDATA")
> }
> outputText = template.render(**mydict)
> with open('QGIS.ini', 'w') as outputfile:
> outputfile.write(outputText)
>
> Then, to write your QGIS.ini file, do
>
>
> python3 generate_ini.py
>
>
> The possible deal breakers with this approach are:
> - you depend from jinja2, a third party Python library,
> - you can't later reuse the mechanism if for instance QGIS changes the
> QGIS.ini file later on
>
>
> Regards
>
> Thomas
>
>
> Le mar. 6 juil. 2021 à 09:18, Bo Victor Thomsen
> <bo.victor.thomsen at gmail.com <mailto:bo.victor.thomsen at gmail.com>> a
> écrit :
>
> To the list -
>
> Is there a method to use OS (Linux, Windows...) environment
> variables in the QGIS.ini setup file ?
>
> I had a number of customers asking for a method to "generalize"
> QGIS.ini, so it doesn't contain any "user" specific file and
> directory references, i.e
>
> (From qgis.ini)
>
> Configuration\MODELS_FOLDER=*C:\\Users\\Bo Victor
> Thomsen\\AppData\\Roaming*\\QGIS\\QGIS3\\profiles\\default\\processing\\models
> Configuration\SCRIPTS_FOLDERS=*C:\\Users\\Bo Victor
> Thomsen\\AppData\\Roaming*\\QGIS\\QGIS3\\profiles\\default\\processing\\scripts
>
> could be:
>
> Configuration\MODELS_FOLDER=*%APPDATA%*\\QGIS\\QGIS3\\profiles\\default\\processing\\models
> Configuration\SCRIPTS_FOLDERS=*%APPDATA%*\\QGIS\\QGIS3\\profiles\\default\\processing\\scripts
>
> or likewise.
>
> The ultimate reason is to have a method to distribute a "standard"
> setup for QGIS, complete with plugins and specialized setup
> parameters. This can be done by making a standard QGIS
> installation (which the IT departments love, especially with the
> new .msi package) and afterwards replace the "default" profile
> directory with at directory specific for the organisation.
> However, the process of making the new profile will place a lot of
> file/directory references in QGIS.ini that is specific for the
> super-user developing the new profile.
>
> --
> Med venlig hilsen / Kind regards
>
> Bo Victor Thomsen
>
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer at lists.osgeo.org <mailto:QGIS-Developer at lists.osgeo.org>
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> <https://lists.osgeo.org/mailman/listinfo/qgis-developer>
> Unsubscribe:
> https://lists.osgeo.org/mailman/listinfo/qgis-developer
> <https://lists.osgeo.org/mailman/listinfo/qgis-developer>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20210712/24982656/attachment-0001.html>
More information about the QGIS-Developer
mailing list