The question of how to properly build and bundle the client has come up more than once recently. Here's a short guide on how a project bundles the client for a release:
The clients need to be bundled in a special way to work properly, there are 3 components:
1) The patched Blender, packed in a zip but using a special layout
2) Glue executable
3) Zip/Unzip libraries
(1) Blender needs to be packed in a certain way so that it unpacks correctly on the client machine.
- First of all it must be packed into the root of the zip, not a subdirectory as the packer does by default. That means that blender.exe is unpacked into the current directory when you unpack the zip file rather than a subdir with a random name.
- The .blender and plugin folders must be included as subdirs. Otherwise Blender will not start.
- (Linux) Executable files must be marked executable for the client to be able to execute them
- (Windows) Any dependency .dlls must be included in the root of the zip - for instance msvcr71.dll if you happen to use that... Not all systems have this pre-installed.
- The zip file must be named blender_X.YY_windows_intelx86.exe.zip where X and YY are the project-local version numbers (Not the Blender ones!) for the client.
(2) Glue is what binds BURP and Blender together. It is a small launcher which unpacks, monitors and controls Blender and provides the status to BOINC. Glue is a single executable file that has the exact same name as the Blender zip but without the .zip extension. Example: blender_4.74_windows_intelx86.exe
You can either compile Glue yourself or use the Glue from the previous client (if there are no changes).
(3) Zip/Unzip libraries. We rely on InfoZip for our file compression and extraction. So you must include the zip and unzip files along with the (text) license. The files must be named "windows_unzip.exe" and "windows_zip.exe" on Windows and "linux_unzip"/"linux_zip" on linux. Again you can get these from the previous client or from the InfoZip website.
Once you have all 3 components ready, try to place them in an empty directory together with a .blend file. Rename the .blend file to just "in" (no file extension). Now run the following command from a prompt to check that everything is working as expected:
blender_X.YY_windows_intelx86.exe blender "-y -b" "-F PNG -t 1 -f 0 0 0 1 1"
It should produce a file called "out". You can rename it to "out.zip" and extract the image inside to check if it rendered correctly.