This README describes how to generate:
These files are needed for mini_installer_unittest and unpack_archive_unittest
On a windows machine, generate a new build directory, for this example:
gn args out\Default
When prompted, set the build arguments to the following:
is_component_build = false target_cpu = "x86" is_debug = false # Required to build mini_installer_uncompressed: enable_uncompressed_archive=true
Next, build the mini_installer and the mini_installer_uncompressed targets, to produce a release build of mini_installer.exe and mini_installer_uncompressed.exe:
autoninja -C out/Default mini_installer mini_installer_uncompressed
This will also build the mini_installer_archive target, which produces the uncompressed chrome.7z and the compressed chrome.packed.7z contained in the mini_installer binaries.
In order to reduce the size of the test files stored in the repository, replace the files contained in chrome.7z with a file to verify the archives are unpacked as expected, regardless of contents.
This can be done by opening a blank text file, and pasting the following string as is without any new lines, null terminator, or preceding or trailing whitespace:
fakechromiumdata
Save this file as test_data.txt to a path you will use later.
Run the following commands to modify the archives using the 7zip commandline utility 7za.exe provided in the repository:
:: Delete all the files within chrome.7z
"{chromium source dir}\third_party\lzma_sdk\bin\host_platform\7za.exe" d ^
"{chromium source dir}\out\Default\chrome.7z" * -r
:: Delete all the files within chrome.packed.7z
"{chromium source dir}\third_party\lzma_sdk\bin\host_platform\7za.exe" d ^
"{chromium source dir}\out\Default\chrome.packed.7z" * -r
:: Add the test_data.txt to the chrome.7z
"{chromium source dir}\third_party\lzma_sdk\bin\host_platform\7za.exe" a ^
"{chromium source dir}\out\Default\chrome.7z" "{path}\{to}\test_data.txt"
:: Add the chrome.7z to the chrome.packed.7z
"{chromium source dir}\third_party\lzma_sdk\bin\host_platform\7za.exe" a ^
"{chromium source dir}\out\Default\chrome.packed.7z" ^
"{chromium source dir}\out\Default\chrome.7z"
Retain the modified chrome.7z and chrome.packed.7z for later.
Next, create a fake SETUP.EXE. This can be done by opening a blank text file, and pasting the following string as is without any new lines, null terminator, or preceding or trailing whitespace:
fakesetupdata
Save this file as SETUP.EXE.
Take the fake SETUP.EXE and use it to produce the fake compressed SETUP.EX_ cab using windows makecab tool:
makecab "{input}\{path}\SETUP.EXE" "{output}\{path}\SETUP.EX_"
Save the fake, compressed SETUP.EX_ for later.
Next, open a blank text file and paste the following string as is without any new lines, null terminator, or preceding or trailing whitespace:
fakebddata
Save the file as bdresources.txt for later.
Next, open Visual Studio, and create a new project/solution.
NOTE: This project won‘t actually be needed after modifying the resources, but it’s important to note that if mini_installer.exe is opened as a project/solution, it does not give provide the opportunity to modify the resources.
Select File > Open > File... and select the out\Default\mini_installer.exe that was built above, which will present visual studio's resource viewer. This allows for a developer edit the existing resources.
To finish producing the fake mini_installers, a developer will need to replace and add a few resources in order to prepare these fake mini_installers for testing.
For example, for the mini_installer.exe, the developer will need to replace the resource located at mini_installer.exe/"B7"/CHROME.PACKED.7Z with the fake CHROME.PACKED.7Z produced above.
This can be done by right-clicking anywhere on the mini_installer.exe resource directory view, and then selecting Add Resource from the drop-down menu.
In the menu that appears, click the Import... button which will open a file explorer. In the file explorer menu, make sure that All Files (*.*) filter is selected, as the default Bitmaps will filter out the relevant files.
Navigate to the file that will be imported--in this case, the fake chrome.packed.7z archive--select it and click the Open button.
In the Custom Resource Type type in the desired resource type with quotes ("B7" for LZMA compressed resources, "BL" for LZC compressed resources, "BN" for uncompressed resources, or "BD" for component resources), in this case "B7", and click OK.
This opens the file in visual studio as an *.RCDATA file. hit Ctrl + S or manually save this file to create the resource and return to the mini_installer.exe tab to see the resource has been created, but with a resource name set to some integer, let's assume 101.
If a resource is being added, which should be the case for "BD" resources for component builds, simply continue on to the next step. If a resource is being replaced, take a note of the exact name of the original resource ID for the resource to be replaced, right-click and select Delete for the resource being replaced.
Click on the new resource, in this case 101, and look for the ID field in the Custom Editor panel on the right side of visual studio. If this is a resource addition, replace this numerical ID with the original filename for the file you imported surrounded by quotes. If this is a resource replacement, replace the assigned numerical ID with the original name of the resource that was noted above, surrounded by quotes. In this case, that would be "CHROME.PACKED.7Z".
NOTE: If the encapsulating quotes are not provided, visual studio will report that this resource ID contains illegal characters and will refused to modify it.
For each executable, replace and add the resources as outlined below:
Replace `mini_installer.exe\"B7"\"CHROME.PACKED.7Z"` with the modified `chrome.packed.7z` produced above. Replace `mini_installer.exe\"BL"\"SETUP.EX_"` with the newly compressed cab `SETUP.EX_`. Add `mini_installer.exe\"BD"\"bdresource.txt"`
Replace `mini_installer_uncompressed.exe\"BN"\"CHROME.7Z"` with the modified `chrome.7z` produced above. Replace `mini_installer_uncompressed.exe\"BN"\"SETUP.EXE"` with the uncompressed `SETUP.EXE` from above. Add `mini_installer.exe\"BD"\"bdresource.txt"`
Now that all of the files are created, the last step is to move them to this folder, chrome\test\data\installer, renaming the files as described below.
`mini_installer.exe` -> `mini_installer.exe.test` `mini_installer_uncompressed.exe` -> `mini_installer_uncompressed.exe.test` `chrome.7z` -> `test_chrome.7z` `chrome.packed.7z` -> `test_chrome.packed.7z`
All other files created along the way to produce the above 4 packages can be deleted as they are no longer needed.