# chore(microdrop): build release with joypad control <!-- omit in toc -->
- [x] Clone [`microdrop-exe`][md-exe]
- [ ] Add joypad control plugin to [`microdrop-exe`][md-exe] `environment.yaml`
- [ ] Push `environment.yaml` update to `microdrop-exe` with new tag
- [ ] Use [`microdrop-squirrel`][md-squirrel] to create new release
[md-exe]: https://github.com/sci-bots/microdrop-exe
[md-squirrel]: https://github.com/sci-bots/microdrop-squirrel
## Issues: <!-- omit in toc -->
- [Dependency conflicts caused by configobj](#dependency-conflicts-caused-by-configobj)
- [Workaround](#workaround)
- [py2exe_helpers dependency mising](#py2exehelpers-dependency-mising)
- [Workaround](#workaround-1)
- [jsonpickle dependency mising](#jsonpickle-dependency-mising)
- [Workaround](#workaround-2)
- [NETFramework assemblies missing](#netframework-assemblies-missing)
## Dependency conflicts caused by `configobj`
- MicroDrop required `configobj<5.0`
- as of 5.0, it put `_version.py` into `site-packages` root
- Existing workaround was to use version less than 5.0, but there's no longer a conda package available online
### Workaround
- build a conda package for `configobj=4.7.2` and host it on the sci-bots conda channel
- modify [recipe for `configobj` on `conda-forge`][configobj]
[configobj]: http://anaconda.org/conda-forge/configobj
## py2exe_helpers dependency mising
```shell=cmd
>python .\setup.py py2exe
Traceback (most recent call last):
File ".\setup.py", line 7, in <module>
from py2exe_helpers import (conda_collector, get_excludes, get_dll_excludes,
ImportError: No module named py2exe_helpers
```
### Workaround
Manually install the dependency. **@christian Should this be a requirement of microdrop-exe?**
```shell=cmd
conda install -c sci-bots py2exe_helpers
```
## jsonpickle dependency mising
```shell=cmd
>python .\setup.py py2exe
...
ImportError: No module named jsonpickle
```
### Workaround
Manually install the dependency. **@christian Should this be a requirement of microdrop-exe?**
```shell=cmd
conda install -c conda-forge jsonpickle
```
## NETFramework assemblies missing
```shell=cmd
(microdrop-exe) C:\Users\Ryan\Documents\dev\python\microdrop-squirrel>python build.py ..\microdrop-exe\dist 2.35.0-rc1
[2019-12-13 01:22:00] Build MicroDrop launcher executable
Microsoft (R) Build Engine version 15.9.21+g9802d43bc3 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
Build started 2019-12-13 1:22:02 AM.
Project "C:\Users\Ryan\Documents\dev\python\microdrop-squirrel\launcher\MicroDrop.
sln" on node 1 (default targets).
ValidateSolutionConfiguration:
Building solution configuration "Release|Any CPU".
Project "C:\Users\Ryan\Documents\dev\python\microdrop-squirrel\launcher\MicroDrop.
sln" (1) is building "C:\Users\Ryan\Documents\dev\python\microdrop-squirrel\launch
er\MicroDrop.csproj" (2) on node 1 (default targets).
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Mi
crosoft.Common.CurrentVersion.targets(1179,5): error MSB3644: The reference assemb
lies for framework ".NETFramework,Version=v4.5" were not found. To resolve this, i
nstall the SDK or Targeting Pack for this framework version or retarget your appli
cation to a version of the framework for which you have the SDK or Targeting Pack
installed. Note that assemblies will be resolved from the Global Assembly Cache (G
AC) and will be used in place of reference assemblies. Therefore your assembly may
not be correctly targeted for the framework you intend. [C:\Users\Ryan\Documents\
dev\python\microdrop-squirrel\launcher\MicroDrop.csproj]
_CleanRecordFileWrites:
Creating directory "obj\Release\".
Done Building Project "C:\Users\Ryan\Documents\dev\python\microdrop-squirrel\launc
her\MicroDrop.csproj" (default targets) -- FAILED.
Done Building Project "C:\Users\Ryan\Documents\dev\python\microdrop-squirrel\launc
her\MicroDrop.sln" (default targets) -- FAILED.
Build FAILED.
"C:\Users\Ryan\Documents\dev\python\microdrop-squirrel\launcher\MicroDrop.sln" (de
fault target) (1) ->
"C:\Users\Ryan\Documents\dev\python\microdrop-squirrel\launcher\MicroDrop.csproj"
(default target) (2) ->
(GetReferenceAssemblyPaths target) ->
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\
Microsoft.Common.CurrentVersion.targets(1179,5): error MSB3644: The reference asse
mblies for framework ".NETFramework,Version=v4.5" were not found. To resolve this,
install the SDK or Targeting Pack for this framework version or retarget your app
lication to a version of the framework for which you have the SDK or Targeting Pac
k installed. Note that assemblies will be resolved from the Global Assembly Cache
(GAC) and will be used in place of reference assemblies. Therefore your assembly m
ay not be correctly targeted for the framework you intend. [C:\Users\Ryan\Document
s\dev\python\microdrop-squirrel\launcher\MicroDrop.csproj]
0 Warning(s)
1 Error(s)
Time Elapsed 00:00:02.20
Traceback (most recent call last):
File "build.py", line 119, in <module>
build(squirrel_version=args.version, delta=not args.no_delta)
File "build.py", line 19, in build
sp.check_call('msbuild.bat')
File "C:\Users\Ryan\Miniconda2\envs\microdrop-exe\lib\subprocess.py", line 186, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'msbuild.bat' returned non-zero exit status 1
```
**@christian Ideas for a fix?**