From DSL Wiki

A shell wrapper, or wrapper script, or just plain old wrapper, is a program or script (usually a shell script) which sets up your environment in preparation to run an application that needs certain changes in order for it to function properly.

The most common situation where such a wrapper is needed is with programs that are installed in non-standard locations, such as in the case of *.uci and *.tar.gz MyDSL packages. Linux programs are typically installed into directories where their support libraries can easily be found automatically, but if you have a self-contained program installed into /opt/something, the system will not know where to look for these support files. The wrapper tells the system where to look, and then executes your program.

As an example, suppose you have a program which includes libraries installed to /opt/my_app/lib, and suppose the program includes several executable files in /opt/bin, and calls these executables without a full path. In this case you would need to tell the system where all of these files are located before the program can function. For the libraries you can use the environment variable LD_LIBRARY_PATH, and for the executables the PATH variable. These two variables would need to be exported before the application can run, like this:

       export LD_LIBRARY_PATH PATH
       exec my_app

When building a MyDSL package that includes an icon and/or menu item, the command included in those objects should be the wrapper script rather than the actual program.