'Create the executable template.
Args:
output_file: string filename where we will write the template.
The client is build in two phases. First an executable template is created
with the client binaries contained inside a zip file. Then the installation
package is created by appending the SFX extractor to this template and
writing a config file into the zip file.
This technique allows the client build to be carried out once on the
supported platform (e.g. windows with MSVS), but the deployable installer
can be build on any platform which supports python.
Subclasses for each OS do the actual work, we just make sure the output
directory is set up correctly here.'

def MakeExecutableTemplate(self, output_file=None):

    self.template_file = (output_file or config.CONFIG.Get('ClientBuilder.template_path', context=self.context))
    utils.EnsureDirExists(os.path.dirname(self.template_file))
