The Windows 10 start menu can be customised in several different ways.

This TID will detail how to use an existing start menu LayoutModification.xml file to customise the start menu layout using a Provisioning package and the ENGL Deployment process.

Note: The provisioning package is applied in phase4 of the deployment process. The local administrator profile and build user profile will not show the start menu layout changes.


Requirements:

  • Build Console
  • Project configured to deploy Windows 10
  • Windows 10 ADK installed (prereq for Buildconsole) with the Windows Configuration Designer component enabled
  • A valid start menu LayoutModification.xml file


Process

  • Confirm the start menu LayoutModification.xml file works
  • Create a new provisioning package that deploys the start menu LayoutModification.xml file
  • Update build process to deploy the provisioning package
  • Update Build Process image
  • Test


Confirm start menu LayoutModification.xml file works.

It is critically important to the process that the XML file used in the provisioning package works as expected.

Configuring this XML file is beyond the scope of this TID. 

Useful information on the settings can be found here: https://docs.microsoft.com/en-us/windows/configuration/start-layout-xml-desktop


This example file has been tested.

<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification" xmlns:taskbar="http://schemas.microsoft.com/Start/2014/TaskbarLayout">
  <LayoutOptions StartTileGroupCellWidth="6" />
  <DefaultLayoutOverride>
    <StartLayoutCollection>
      <defaultlayout:StartLayout GroupCellWidth="6">
        <start:Group Name="ENGL Apps">
          <start:DesktopApplicationTile Size="2x2" Row="0" Column="0" DesktopApplicationID="Microsoft.InternetExplorer.Default" />
          <start:DesktopApplicationTile Size="2x2" Row="0" Column="2" DesktopApplicationID="Microsoft.SkyDrive.Desktop" />
          <start:DesktopApplicationTile Size="2x2" Row="0" Column="4" DesktopApplicationID="Microsoft.Windows.ControlPanel" />
          <start:DesktopApplicationTile Size="2x2" Row="2" Column="0" DesktopApplicationID="Microsoft.Windows.Explorer" />
          <start:DesktopApplicationTile Size="2x2" Row="2" Column="2" DesktopApplicationID="Microsoft.Windows.MediaPlayer32" />
          <start:DesktopApplicationTile Size="2x2" Row="2" Column="4" DesktopApplicationID="Microsoft.Windows.RemoteDesktop" />
          <start:DesktopApplicationTile Size="2x2" Row="4" Column="0" DesktopApplicationID="Microsoft.Windows.Shell.RunDialog" />
          <start:DesktopApplicationTile Size="2x2" Row="4" Column="2" DesktopApplicationID="{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\cmd.exe" />
          <start:DesktopApplicationTile Size="2x2" Row="4" Column="4" DesktopApplicationID="{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\SnippingTool.exe" />
        </start:Group>
      </defaultlayout:StartLayout>
    </StartLayoutCollection>
  </DefaultLayoutOverride>
<CustomTaskbarLayoutCollection PinListPlacement="Replace">
    <defaultlayout:TaskbarLayout>
      <taskbar:TaskbarPinList>
                <taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk" />
		<taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System tools\File Explorer.lnk" />
      </taskbar:TaskbarPinList>
    </defaultlayout:TaskbarLayout>
  </CustomTaskbarLayoutCollection>
</LayoutModificationTemplate>


This sets up an ENGL Apps start menu group containing IE, Desktop, Control panel, Windows Explorer, Media player, RDP, Run, Command prompt and the Snipping tool. The taskbar replaces default apps with IE and File Explorer.


Test the start menu LayoutModification.xml file

To test the start menu LayoutModification.xml use the local group policy option to force the machine to use the custom layout.


Once the start menu LayoutModification.xml file has been set up copy it to a folder on the workstation that you want to test.

  • On the test computer, press the Windows key, type gpedit, and then select Edit group policy (Control panel)
  • Go to User Configuration or Computer Configuration > Administrative Templates >Start Menu and Taskbar
  • Right-click Start Layout in the right pane, and click Edit
  • This opens the Start Layout policy settings
  • Enter the following settings, and then click OK:
    • Select Enabled
    • Under Options, specify the path to the .xml file that contains the Start and taskbar layout. For example, type C:\engl\layoutModification.xml
    • Optionally, enter a comment to identify the Start and taskbar layout
  • Exit the Group Policy editor
  • Log off the machine 
  • Log in

If the XML file was correct then the start menu (and optional taskbar) customisations should have been successful.


Once the XML file has been tested successfully the group policy settings can be revoked.


Create a new provisioning package that deploys the start menu LayoutModification.xml file

This is done using the Imaging and Configuration Designer (ICD) component of the windows 10 ADK.

  • Open Windows Imaging and Configuration Designer (by default, %systemdrive%\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Imaging and Configuration Designer\x86\ICD.exe)
  • Choose Advanced provisioning
  • Name your project, and click Next
  • Choose All Windows desktop editions and click Next
  • Skip the "import a provisioning package" option then Click Finish
  • The workspace for your package opens
  • Set the view option to "Common IT Pro settings"
  • Expand Runtime settings > Start, and click StartLayout
  • Browse to the xml file tested in the previous step
  • On the File menu, select Save
  • On the Export menu, select Provisioning package
  • Change Owner to IT Admin, which will set the precedence of this provisioning package higher than provisioning packages applied to this device from other sources, and then select Next
  • Optional. In the Provisioning package security window, you can choose to encrypt the package and enable package signing
    • Enable package encryption - If you select this option, an auto-generated password will be shown on the screen
    • Enable package signing - If you select this option, you must select a valid certificate to use for signing the package. You can specify the certificate by clicking Browse and choosing the certificate you want to use to sign the package
  • Click Next to specify the output location where you want the provisioning package to go when it's built. By default, Windows Imaging and Configuration Designer (ICD) uses the project folder as the output location
  • Click Next
  • Click Build to start building the package
  • Make a note of the package path once complete as this will be needed in a later step


Update build process to deploy the provisioning package.

The project needs to be adjusted to run the provisioning package in phase4 using a phase4-before.ps1 file. 


Add provisioning package to project

  • Launch Build console
  • Open the Windows 10 Project that will deploy the provisioning package
  • Select the Expert View
  • Select Customisation > Custom Files
  • Right click in the properties window
  • Select Add
  • Browse to the provisioning package created previously. Select the .ppkg file and .cat file and add to the custom files.
  • Confirm the files are now listed in the Properties view.  


Create phase4-before.ps1 powershell script

  • Open Notepad on the BuildConsole machine
  • Paste in the following powershell script sample
    #
    # TID 201904 Powershell script to install start menu customisation via a provisioning package in phase4
    #
    $Utils = new-object -comobject "ENGL.Ztoolkit.Utils"
    $ProvisioningPackage = "C:\ztoolkit\UseXML.ppkg"
    # Append a string to the Ztoolkit log file
    [void] $Utils.AppendLog("Setting up Start Menu using provisioning package. $ProvisioningPackage")
    Install-ProvisioningPackage -PackagePath $ProvisioningPackage -quietinstall -LogsDirectoryPath c:\ztoolkit
    [void] $Utils.AppendLog("Script completed.")
    
    

Note : Update the $ProvisioningPackage to match the filename of the provisioning package.

  • Save the file as phase4-before.ps1


Add Powershell script to project 

  • Launch Build console
  • Open the Windows 10 Project that will deploy the start menu layout
  • Select the Expert View
  • Select Customisation > Custom Files
  • Right click in the properties window
  • Select Add
  • Browse to the phase4-before.ps1 file and add to the custom files
  • Confirm the file is now listed in the Properties view

   

Update Build Process image

The project has changes so the build process image (ztoolkit) needs to be recreated.


  • Select Tools > Deployment Wizard then click Next
  • Select Build process creation then click Next
  • De-select Novell components if selected
  • Select Build process (ztoolkit.zmg/wim) then click Next
  • Accept any further prompts
  • A new ztoolkit image will be created. This will contain the provisioning package
  • Copy this file to the appropriate folder on the imaging server


Test.

  • PXE boot a machine to the configured imaging environment
  • Once the zim menu has loaded select the Restore Menu then the project that has been updated with the provisioning package
  • Deploy the project to the machine and let it build
  • Once the machine has built successfully log in and confirm that the start menu (and/or taskbar) has been customised as per the provisioning package / start menu LayoutModification.xml file