VM-Packages
VM-Packages copied to clipboard
Enable Param Passing to Dependencies
Overview
Currently, dependencies install using default everything. However, chocolatey allows passing parameters to dependencies by coupling two command-line arguments: --params-global
and --params
(syntax --params '/PARAM1:value1 /PARAMFLAG'
).
As an example, say fake-package.vm
had a dependency that could be configured to use a specific port, installation path, and verbosity flag, we would pass these parameters as below:
choco install fake-package.vm --params-global --params '/Port:82 /InstallationPath:""C:\blah\folder with space"" /DEBUG'
To enable this, we need to do the following:
- [ ] Update
config.xml
with dependency parameters- E.g.,
<package name="cygwin.vm" params="/InstallDir:%RAW_TOOLS_DIR%\Cygwin"/>
- E.g.,
- [ ] Update
flarevm.installer.vm
to check theconfig.xml
for parameters and pass them accordingly during the install call - [ ] Update each package that uses dependency parameters (mainly aimed at metapackages) to use
Get-PackageParameters
and handle any parameters as necessary (e.g., installing to a non-default dependency location specified by the "shim path" we have users provide)
Resources
- https://docs.chocolatey.org/en-us/guides/create/parse-packageparameters-argument
- https://docs.chocolatey.org/en-us/create/functions/get-packageparameters
Also need to consider --install-arguments
, which differs from "package" specific parameters -- it's used to instruct native installers.
There is also the concept of "Install Arguments", or silent arguments you can pass through transparently to the native installer. This is more of a way for a package consumer to override the default silent arguments that are passed to the native installer.
Is there a concrete package for which you would like to use this feature @MalwareMechanic? Otherwise I think we shouldn't implement this feature.