Conda: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
mNo edit summary
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{PageAuthor|Faph}}
{{PageAuthor|Faph}}


The [http://conda.pydata.org conda package and environment manager] can be used to install NSIS, plugins and header files.
== What is Conda? ==


There are two possible approaches:
[http://conda.pydata.org Conda] is a cross-language package and environment manager. It can be used to install NSIS itself and various plugins and header files.
 
== Why use Conda for building NSIS installers? ==
 
Conda is particularly good at managing packages and installing required packages and its dependencies. NSIS plugins and macro header files can be distributed as conda packages. A repository of NSIS conda packages is available at [https://anaconda.org/nsis the anaconda.org NSIS channel].
 
Conda typically runs scripts in isolated environments. Configuring continuous integration or build servers is straightforward.
 
== How to use Conda ==
 
There are two possible approaches for building NSIS installers with conda:


# Using 'conda execute'
# Using 'conda execute'
# Creating conda environments manually
# Creating conda environments manually


== Using conda execute ==
=== Option 1: Using conda execute ===


Add this to the top of an NSIS source file:
Add this to the top of an NSIS source file:
Line 15: Line 25:
# conda execute
# conda execute
# env:
# env:
#  - nsis
#  - nsis 3.*
#  - plugin1
#  - plugin1
#  - plugin2
#  - plugin2
#  - ...
# channels:
# channels:
#  - nsis
#  - nsis
# run_with: makensis
# run_with: makensis
; NSIS source as usual ...
</highlight-nsis>
</highlight-nsis>


Line 29: Line 42:
This will create a temporary isolated conda environment with NSIS and the listed plugins installed. You don't need to have NSIS installed first! Then it simply runs <code>makensis</code> as usual.
This will create a temporary isolated conda environment with NSIS and the listed plugins installed. You don't need to have NSIS installed first! Then it simply runs <code>makensis</code> as usual.


You will need to install [http://conda.pydata.org/miniconda.html miniconda] (or the full blown [https://www.continuum.io/anaconda anaconda] first and then [https://anaconda.org/conda-forge/conda-execute conda execute].
Install [http://conda.pydata.org/miniconda.html miniconda] and [https://anaconda.org/conda-forge/conda-execute conda execute] first.
 
=== Option 2: Creating conda environments manually ===
 
Create a permanent NSIS environment like this:
 
<pre>conda create --name nsisenv --channel nsis  nsis=3.* plugin1 plugin2 ...</pre>
 
Then run <code>makensis</code> within that environment to compile an NSIS source file.
 
This only requires [http://conda.pydata.org/miniconda.html miniconda].
 
== Creating Conda packages for NSIS plugins ==


== Creating conda environments manually ==
It’s quite simple to create a "conda recipe" to build packages for NSIS plugins or header files. Just have a look at the examples in [https://github.com/faph/NSIS-Conda-Recipes this GitHub repo] and create a pull request with a new recipe. Once merged into the repo, the recipe will be built and the package published in the [https://anaconda.org/nsis anaconda.org NSIS channel].


TODO
Alternatively, raise a GitHub issue and someone may be willing to create a recipe.


[[Category:Development Environments]]
[[Category:Development Environments]]

Latest revision as of 10:05, 23 October 2015

Author: Faph (talk, contrib)


What is Conda?

Conda is a cross-language package and environment manager. It can be used to install NSIS itself and various plugins and header files.

Why use Conda for building NSIS installers?

Conda is particularly good at managing packages and installing required packages and its dependencies. NSIS plugins and macro header files can be distributed as conda packages. A repository of NSIS conda packages is available at the anaconda.org NSIS channel.

Conda typically runs scripts in isolated environments. Configuring continuous integration or build servers is straightforward.

How to use Conda

There are two possible approaches for building NSIS installers with conda:

  1. Using 'conda execute'
  2. Creating conda environments manually

Option 1: Using conda execute

Add this to the top of an NSIS source file:

# conda execute
# env:
#  - nsis 3.*
#  - plugin1
#  - plugin2
#  - ...
# channels:
#  - nsis
# run_with: makensis
 
; NSIS source as usual ...

Then compile the file like this:

conda execute yourinstaller.nsi

This will create a temporary isolated conda environment with NSIS and the listed plugins installed. You don't need to have NSIS installed first! Then it simply runs makensis as usual.

Install miniconda and conda execute first.

Option 2: Creating conda environments manually

Create a permanent NSIS environment like this:

conda create --name nsisenv --channel nsis  nsis=3.* plugin1 plugin2 ...

Then run makensis within that environment to compile an NSIS source file.

This only requires miniconda.

Creating Conda packages for NSIS plugins

It’s quite simple to create a "conda recipe" to build packages for NSIS plugins or header files. Just have a look at the examples in this GitHub repo and create a pull request with a new recipe. Once merged into the repo, the recipe will be built and the package published in the anaconda.org NSIS channel.

Alternatively, raise a GitHub issue and someone may be willing to create a recipe.