VeraCrypt MSI Silent Installer

I noticed the native installer for VeraCrypt does not have an option for silent installation so I created an MSI Installer you can download here for it (version 1.22 at the moment). The package is only for 64-bit versions of Windows for now and has been tested on Windows 10 x64 and Windows 7 x64. It should also work with distribution software like SCCM.

To install the package silently use
msiexec.exe /i VeraCrypt.msi /qb

To silently remove the package use
msiexec.exe /x {E254AA9E-A48A-4A92-AF75-E6FF77C1A915} /qb

Citrix App Layering missing drivers

Edit 3 May 2018:
A solution/workaround to this issue has been found:

Add Version to the Platform Layer, run RegEdit, and create (or modify) this key, which must be a MULTI_SZ:

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\unifltr]
“AlwaysOnBoot”

“AlwaysOnBoot” is a multi-string value with one path per line. Add these two lines to the value:

C:\Windows\Inf\
C:\Windows\System32\DriverStore\

Make sure to end these lines with a trailing backslash!

Original post:

This issue occurs on Windows 7 x64 when the Office365 layer option is selected in the image template in conjuction with Elastic Layering and logging in as a user which has an elastic layer assigned, regardless of the contents of the elastic layer.

It can be confirmed by the command “pnputil -e”; In a normal published layered image there should be more than 30 drivers but when this issue happens there will only be about 9 (the same amount as in just the OS layer).

The solution is to disable either or both of these options or migrate to a different operating system.

FischerRandom/Chess960 position generator

As a programming project I made a random generator for FischerRandom/Chess960 positions using Unity. Check it out here.

Sequencing Adobe Acrobat Pro with App-V

Built and tested on Windows 8.1 x86 and App-V 4.6 SP3, Adobe Acrobat Pro XI.
Please note that this will work for all features of Acrobat except the pdf printer as this involves a printer device which cannot be virtualised. To replace this printer I recommend physically installing Doro PDF; this free application provides options for encryption.
We’re assuming your App-V drive is Q:\ here. If it’s not, please change any references to Q:\ to your chosen drive letter.

Requirements:
– Adobe Acrobat Pro XI source software
– Any patches for Acrobat Pro in .msp format(at the time of writing 11.0.7 – AcrobatUpd11007.msp – is the most recent)
– Adobe Customization Wizard XI (I used CustWiz11003_en_US.exe)

Steps:
– Download, install and run the Adobe Customization Wizard.
– Open the AcroPro.msi (your Acrobat Pro source location)
– Click through the pages and make the desired customisations for your organization. You will likely want to change the following things:

– Personalization Options
o Fill out User Name, Organization and Serial Number
o Check “Suppress display of EULA”
o Important: set the Installation Path to the folder on Q: you will choose in the sequencer as your asset directory. In this case we’ll use Q:\ACROBTXI.001 , keeping with the recommended 8.3 structure.
– Installation Options
o Run the installation unattended and suppress any reboots
o Set the desired language
– Shortcuts
o Move/Remove any Start Menu and/or Desktop shortcuts
– Online Services and Features
o Disable product updates
o Disable registration
o Disable help > Digital Editions
o Disable product improvement program
o Disable initiating shared reviews
o Disable file storage on Adobe online services
o Disable all Adobe online services…

– Now click on Transform -> generate transform and save the file in the same folder as the Acrobat Pro installation source and give it a name like AcrobatPro.mst.
– Make sure any patches are in the same folder as the Acrobat Pro installation source as well.
– Start the sequencer and create a new default package, select custom installation and set the ASSETDIR to what you selected previously in the customization wizard. We’ll continue using our example: Q:\ACROBTXI.001. Start monitoring.
– During sequencing install Acrobat using the .mst file we previously created using the Customization Wizard and including the most recent patch. Use the following command line, replacing YourLocation with the actual location you are using:

msiexec.exe /i "YourLocation\AcroPro.msi" PATCH="YourLocation\AcrobatUpd11007.msp" TRANSFORMS="YourLocation\AcrobatPro.mst" /qb ALLUSERS=2 /l*v c:\windows\temp\AcroProXI_install.log REBOOT=ReallySuppress

– After the installation finishes copy the following files to a backup location:
All the files in the folder “%CommonProgramFiles%\Adobe\OOBE\PDApp\core\Microsoft.VC90.CRT”
All the files with the extension .manifest in the folder “%CommonProgramFiles%\Adobe\Acrobat\11.0\Linguistics\Providers\Plugins2\AdobeHunspellPlugin”
– Navigate to the installation folder and try to run Acrobat.exe. You’ll notice the application will give an error. This is because the Visual C assemblies cannot be read correctly.
– Now click “I am finished installing” in the sequencer and click next. This will build the VFS.
– The error while starting Acrobat can be resolved by copying the contents of the folder “%CommonProgramFiles%\Adobe\OOBE\PDApp\core\Microsoft.VC90.CRT” (of which you just made a backup) to the VFS location Q:\ACROBTXI.001\VFS\CSIDL_PROGRAM_FILES_COMMON\Adobe\OOBE\PDApp\core\Microsoft.VC90.CRT which should now exist. Overwrite the contents.
– Acrobat.exe should now start correctly. This should give us the opportunity to make some more changes in the application’s settings. For example, you might want to remove the checkbox in the section Edit > preferences > General for the option “Warn if Acrobat is not my default PDF application” and “Display messages when starting Acrobat” in the same section.
– Click Next and customize the package. Go to the tab “Services” in the sequencer and disable the service “Adobe Acrobat Update Service”.
– Go to the OSD tab and set LOCAL_INTERACTION_ALLOWED to TRUE.
– Go to the registry tab and navigate to the key HKLM\Software\Adobe\Acrobat\11.0\Installer. Create a new DWORD value here named DisableMaintenance and set its value to 1. This will disable the option to repair the installation from the help menu.
– Perform default cleanup to the app-v’s files and registry entries and save the package. Mine was about 1.5GB dirty and 1.0GB cleaned, so it will save you ~500MB.
– Edit the main Acrobat osd and add the following script to copy the Visual C manifest and .dll files each time the application is started:

<SCRIPT EVENT="LAUNCH" TIMING="PRE" PROTECT="TRUE" WAIT="TRUE">
<SCRIPTBODY>
Copy \\\\YourBackupLocation\\Microsoft.VC90.CRT\\*.* "Q:\\ACROBTXI.001\\VFS\\CSIDL_PROGRAM_FILES_COMMON\\Adobe\\OOBE\\PDApp\\core\\Microsoft.VC90.CRT\\" /y \n
</SCRIPTBODY>
</SCRIPT>

Note that you need to change YouBackupLocation to the location where you copies the files in a previous step. Also note you need to double each backslash used to escape them. \n is used at the end of each line.
– While editing the .osd, also add the following to the <POLICIES> section:

<VIRTUAL_FILE_SYSTEM_PASS_THROUGH>TRUE</VIRTUAL_FILE_SYSTEM_PASS_THROUGH>
<VIRTUAL_REGISTRY_PASS_THROUGH>TRUE</VIRTUAL_REGISTRY_PASS_THROUGH>
<ENFORCE_ACLS_ON_VREG_MODIFY>TRUE</ENFORCE_ACLS_ON_VREG_MODIFY>

– Save the .osd.

Your package should now work except for the linguistics part. You can check this by clicking the “Spelling” menu in Edit > Preferences. If Acrobat crashes while clicking this, the correct files are not yet legible by your physical file system. To solve this, you will need to copy the two manifest files you backed up earlier from “%CommonProgramFiles%\Adobe\Acrobat\11.0\Linguistics\Providers\Plugins2\AdobeHunspellPlugin” to the physical location of “%CommonProgramFiles%\Adobe\Acrobat\11.0\Linguistics\Providers\Plugins2\AdobeHunspellPlugin”. Unfortunately this is how the application works in combination with the side-by-side assemblies. The process running that needs to be able to read the .manifest files cannot read them in the Virtual File System. We can solve this by using a small script that runs pre-launch or, if this is not possible, perhaps on login. We solved it by running a pre-luanch script using RES Workspace Manager and checking the box to make it run outside the virtual environment. The script looks like this:

md "%CommonProgramFiles%\Adobe\Acrobat\11.0\Linguistics\Providers\Plugins2\AdobeHunspellPlugin"
copy "\\YourBackupLocation\*.manifest" "%CommonProgramFiles%\Adobe\Acrobat\11.0\Linguistics\Providers\Plugins2\AdobeHunspellPlugin" /y

This should also be possible using another script within the .osd file, but the user will need permissions to write to the physical %CommonProgramFiles% for that to work.

This should leave you with a stable App-V of Acrobat Pro XI that does not produce any errors in the Windows Event Viewer logs.

Chinese characters in Thinapp applications’ title bar.

Does your virtualised application look like this when testing it on a clean system?

chinchars

I’ve found that often when this happens the application will also display strange behaviour; it will just not work correctly.

The solution is to build the application using an older version of Thinapp. In my experience when applications show this behaviour when built with version 4.7.2 or 4.7.3 you can solve it by building it using version 4.7.0.

Local Sandbox

When your environment is configured to store the application’s sandbox on a network location you might also need to change the sandbox to be on the system’s local drive. You can achieve this without overwriting any globally set values for the %thinstall_sanbox_dir% variable by using the following application specific command:

setx AppInventoryName_sandbox_dir c:\temp\AppInventoryNameSandbox

Where in the above example AppInventoryName is the application’s inventory name as found in the package.ini after the InventoryName= setting. the setx command will set the variable globally for the system.

Setting modify permissions for users on a folder using icacls

The following is an example of how to set permissions on a folder using icacls, which is included with every Windows distrubution:

icacls "%ProgramFiles%\Application Folder" /grant Users:(OI)(CI)M

This will grant the group Users “modify” permissions to the folder C:\Program Files\Application Folder.

Explanation:

The format is as follows:

icacls "target folder" /grant Account:options /option

where the indivudual parts represent:

icacls – calls the program icacls

“target folder” – first parameter is the destination folder

/grant – signifies the function to perform, in this case to grant permissions. /deny and /remove are also options.

Account followed by a colon – this is the account for which you want to grant, deny or remove ACLs.

options – (OI)(CI)M means modify permissions “(M)” plus inheritance (IO) for this folder, subfolders and files (CI)

/options – you can use /inheritance:r here for example, signifying to block inheritance of ACLs from underlying folders.

For more options and a complete list of commands open a command prompt (cmd.exe) and type icacls /?.