Jump to content




anyweb

How can I deploy a customized Windows 10 start menu using System Center 2012 R2 SP1 Configuration Manager ?



Recommended Posts

Introduction

In previous posts I showed you how you can upgrade to System Center 2012 R2 SP1 Configuration Manager and how to Deploy Windows 10 x64 Enterprise. In this post I'll explain how you can customize the Windows 10 start menu for use during a task sequence deployment using an MDT 2013 update 1 integrated task sequence. You could use active directory Group Policy (Administrative Templates\Start Menu and Taskbar\Start Menu Layout) or other methods to do this however this method works very nicely and is easy to implement. I'll cover customizing the taskbar in a separate post.

 

Note: I've noticed that Internet Explorer doesn't show up even though pinned to start. Perhaps it's a way of discouraging usage of same in favor of Microsoft Edge.

 

Step 1. Review a standard Windows 10 start menu

Using a Windows 10 virtual machine that was previously built (with apps you intend to use in your organization), log in and review the start menu before any customization's are performed. In the screenshot below there are three columns in the start menu. The left column is where Windows informs you about things it thinks you should know such as recently installed applications or most used apps. In addition you have some standard actions available. The second and third columns contain tiles (boxes) which can be live or not. Live tiles update themselves with (for example) photos, or news snippets depending on the application. Tiles can be resized as

  • small
  • medium
  • wide
  • large

but those resize options can vary depending on what type of tile it is. In addition to the columns there group names so that you can group tiles of similar nature together (for example Microsoft Office) and give them an appropriate group name (Office 365).

 

menu before customization.png

 

Step 2. Customize the Windows 10 start menu

Now that you have familiarized yourself with the Windows 10 start menu it's time to make it look the way you want but before you do understand what is allowed or not.

 

On Windows 10 for desktop editions, the customized Start works by:

  • The OS performs level checks to determine the chosen base default layout, such as the desktop edition and whether Cortana is supported for the country/region.

  • The OS reads the LayoutModification.xml file and only allows groups to be appended to Start. The groups have the following constraints:

    • 2 groups that are 6 columns wide, or equivalent to the width of 3 medium tiles.
    • 2 medium-sized tile rows in height. The OS ignores any tiles that are pinned beyond the second row.
    • No limit to the number of apps that can be pinned. There is a theoretical limit of 24 tiles per group (4 small tiles per medium square x 3 columns x 2 rows).

Remove some tiles

To customize the start menu, logon as a user with administrative credentials on that machine. You can begin by removing any tiles that you do not want appearing in the finished menu. To do that, right click on a tile you want to remove and choose Unpin from Start. Repeat as necessary until you've removed all the tiles you do not want to appear in your finished start menu.

 

unpin from start.png

 

After removing a bunch of tiles your start menu can look totally empty or at least different to the way it looked in the beginning. In my screenshot below I've removed all tiles from the start menu so it is effectively a blank slate.

 

blank menu.png

 

Add some Tiles

Next, it's time to add back some colour to your start menu, start with a bunch of apps you'll be using in your organization and try and group the tiles in a way that you think your users will use often.

 

To add a tile, click on All Apps in the bottom left corner to see all the applications installed on this computer. Keep in mind that you need to install whatever apps you intend to offer in your organization prior to this customization.

 

all apps.png

 

In the list of applications browse to the group that interests you and select an app, right click the app and choose Pin to Start.

 

pin to start.png

 

Once done, the application will appear in it's own tile in the first available column.

 

tile added.png

 

Repeat as necessary adding a bunch of apps that you want made into a group.

 

tiles added to group.png

 

Reposition tiles

Next grab a tile (by selecting a tile, left clicking and holding the mouse button down) that you want to move and move it to the location you want it to appear, when happy, release the mouse button.

 

reposition tiles.png

 

Resize tiles

Once you are happy with the order you might want to resize one or more tiles, to do so, right click a tile and choose from the sizes available. Repeat as necessary.

 

resize tile.png

 

Name groups of tiles

Now that you've created a group of tiles, give the group a name. To name a group simply point the mouse cursor to the top of a group of tiles and Name Group (or a previous group name) will appear, click anywhere in the text to enter in a new group name.

 

name group.png

 

After naming a group, you can see the results immediately.

 

office 365 group.png

 

And after you are done customizing the start menu you can review your work. Awesome.

 

the customized start menu two column.png

 

Step 3. Export the custom menu using PowerShell

Now you are ready to capture the customizations using PowerShell. To do so fire up an Administrative cmd prompt and type the following command to store our custom xml files.

mkdir C:\Temp

mkdir c temp.png

 

Next we need to start PowerShell, do so by typing the following command

powershell

powershell.png

 

At the PowerShell cmd prompt, type the following

Export-StartLayout -Path C:\Temp\LayoutModification.xml

exportstartlayout.png

 

Tip: If you get access denied errors, make sure you are logged in as a user with Administrative permissions on the computer (not just an administrative command prompt), or specify a folder that you have appropriate access to.

 

Step 4. Copy the XML file to ConfigMgr sources

Using an account that has permissions adequate to write a file to your Configmgr sources structure, on the Windows 10 machine with the custom start menu browse to the C:\Temp folder, select the LayoutModification.xml file and choose copy.

 

copy to source.png

 

Paste the file into your ConfigMgr sources into a suitably named folder structure (eg: \\sccm\sources\os\Windows 10\Start Menu) such as below

 

copied to sccm.png

 

Step 5. Download a PowerShell script

Download the following PowerShell script (in a ZIP archive)

 

ApplyCustomMenu.zip

 

extract it and copy the extracted script into the folder structure created above.

copy the extracted script.png

 

Step 6. Create a Package

To deploy the changes to new Windows 10 machines during OSD, you need to make the file above available via a package. In the Configuration Manager console, select software library then applications and right click on Packages. Choose Create Package.

 

create package.png

 

give the package a suitable name such as Windows 10 start screen customizations and point the data source to the folder where you copied the xml file above

 

package details.png

 

Choose Do not create a program and continue through the rest of the wizard until completion.

 

package created.png

 

Step 7. Distribute the package

To distribute this package right click and choose Distribute Content this will make the content available to computers being imaged from selected distribution points.

 

distribute content.png

 

On the content destination screen, click add then select any distribution points you want to make this available to.

 

add distribution points.png

 

continue through the wizard until completion.

 

Step 8. Edit a Deploy Windows 10 task sequence

In a previous post you learned how to deploy Windows 10, in this guide you will edit that task sequence to include the custom start menu. In the Configuration Manager console browse to Software Library, Operating Systems and select Task Sequences, locate your Windows 10 task sequence, right click it and choose edit.

edit task sequence.png

 

Scroll down to a section that occurs after Set Status 4, select Add, select New Group and give it a name like Windows 10 Start Screen Customizations.

 

after set status 4.png

 

Next select the Add dropdown, select General and choose Run Command Line, paste in the following command.

cmd.exe /c copy LayoutModification.xml C:\Windows\Temp  & %deployroot%\tools\x64\ServiceUI.exe -process:TSProgressUI.exe %SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe  -NoProfile -ExecutionPolicy bypass -File "ApplyCustomMenu.ps1"

give the step a suitable name like Import Customized start menu

 

and make sure to select the previously created W‌indows 10 Start Screen customizations package so that it can reference the content correctly as shown here

 

import customized start menu step.png

 

Apply the changes and close the task sequence editor.

 

Step 9. Deploy a new Windows 10 machine

To review the changes, deploy a new Windows 10 computer

 

osd in progress.png

 

Once it is complete, logon and you'll see the customized start menu in action. Job done ! Yes I know the Internet Explorer icon is missing, see the note at the top of the page.

 

start menu done.png

 

Note that the customized xml file above is copied to the default profile path listed below:

C:\Users\Default\AppData\Local\Microsoft\Windows\Shell

Remember that your newly deployed Windows 10 machines start menu will only show pinned tiles that are installed.

 

Recommended Reading

Well that's all, until next time,

 

cheers

niall

  • Like 1

Share this post


Link to post
Share on other sites


Seems a bit more complicated than needed (the serviceui part). From memory IE shortcut is missing because it's created for that user during login.

 

 

1. Copy the shortcut to ProgramData\Microsoft\Windows\Start Menu\Programs then pin it.

2. copy that shortcut to your startlayout package.

3. In the start layout package have a powershell script:

Copy-Item '.\Internet Explorer.lnk' -Destination "$env:ProgramData\Microsoft\Windows\Start Menu\Programs"
Import-StartLayout -LayoutPath .\Startlayout.xml -MountPath $env:SystemDrive\
4. In task sequence use 'Run powershell script' with setting bypass and reference your package.

Share this post


Link to post
Share on other sites

Good writeup.

I have just deployed this last week but with a far simpler script - you only need to copy the LayoutModification.xml to the defult profile

copy /y "%~dp0LayoutModification.xml" "C:\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml"

Havent had any issues with this method - give it a try!

 

 

*whoops, i see you mentioned the path - does the longer command do anything additional?

  • Like 1

Share this post


Link to post
Share on other sites

Hi Niall

 

Great post as usual. So how does this differ to using the Windows Imaging and Configuration Designer supplied in the ADK10? Is this not a tool we should be using to for this purpose now?

 

Thanks

Con

Share this post


Link to post
Share on other sites

Hi Niall

 

Great post as usual. So how does this differ to using the Windows Imaging and Configuration Designer supplied in the ADK10? Is this not a tool we should be using to for this purpose now?

 

Thanks

Con

 

hi Con

I havn't tried it using the ICD yet, if i do and if i see a need i'll post an update here

 

cheers

niall

Share this post


Link to post
Share on other sites

Good writeup.

I have just deployed this last week but with a far simpler script - you only need to copy the LayoutModification.xml to the defult profile

copy /y "%~dp0LayoutModification.xml" "C:\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml"

Havent had any issues with this method - give it a try!

 

 

*whoops, i see you mentioned the path - does the longer command do anything additional?

 

hi

yes it just copies the file, however the script does use the 'proper' powershell cmdlet for doing so, so in that respect you could say it's supported, but it's entirely up to you which way to use :)

Share this post


Link to post
Share on other sites

 

Seems a bit more complicated than needed (the serviceui part). From memory IE shortcut is missing because it's created for that user during login.

 

 

1. Copy the shortcut to ProgramData\Microsoft\Windows\Start Menu\Programs then pin it.

2. copy that shortcut to your startlayout package.

3. In the start layout package have a powershell script:

Copy-Item '.\Internet Explorer.lnk' -Destination "$env:ProgramData\Microsoft\Windows\Start Menu\Programs"
Import-StartLayout -LayoutPath .\Startlayout.xml -MountPath $env:SystemDrive\
4. In task sequence use 'Run powershell script' with setting bypass and reference your package.

 

 

I just reused a previous serviceUI.exe step so yes if you want to call it overly complex, you can, and yes it can be simplified, however, it does work and that's the point :-) I'll take a look at the IE shortcut suggestions,

 

cheers

Share this post


Link to post
Share on other sites

Hello Guys,

 

I'm trying to customize the Task Sequence for the inplace Upgrade to Windows 10. Adding the step "Import Customized start menu" does not work in the upgrade method. Any ideas why?

I used this method for the OSD and it works.

 

Thanks!

Share this post


Link to post
Share on other sites

what does your smsts.log file tell you about the step ?

Share this post


Link to post
Share on other sites

Thanks for the article. I have setup a nice layout but lose Internet Explorer when applied so I'm interested to read Jay's post above. Surely IE is per system rather than per-user - is there an easy way round this ?

Share this post


Link to post
Share on other sites

what does your smsts.log file tell you about the step ?

I executed the step like this:

 

ProgramName = 'cmd.exe /c copy LayoutModification.xml C:\Windows\Temp & powershell.exe -NoProfile -ExecutionPolicy bypass -File "ApplyCustomMenu.ps1"'

 

and the smsts.log says:

 

Capture.png
Thanks!

Share this post


Link to post
Share on other sites

first line shows that it's complaining about your xml file, have you tried importing the same XML file on that computer using the powershell cmd, if so what happens ?

Share this post


Link to post
Share on other sites

first line shows that it's complaining about your xml file, have you tried importing the same XML file on that computer using the powershell cmd, if so what happens ?

 

Hello, sorry for the late reply.

 

Manually running the script works ok. Adding the script to the upgrade TS returns the above error.

 

PS: I also tried exporting and importing the layout files as .bin (same error)

Share this post


Link to post
Share on other sites

can you attach the layout file from C:\Windows\Temp please ?

Share this post


Link to post
Share on other sites

can you attach the layout file from C:\Windows\Temp please ?

 

The file has the following content (it only has the calendar on it - i wanted to test if it works before making it more complex):

<LayoutModificationTemplate Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
  <DefaultLayoutOverride>
    <StartLayoutCollection>
      <defaultlayout:StartLayout GroupCellWidth="6" xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout">
        <start:Group Name="Life at a glance" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
          <start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.calendar" />
        </start:Group>
      </defaultlayout:StartLayout>
    </StartLayoutCollection>
  </DefaultLayoutOverride>
</LayoutModificationTemplate>

I also attached the file here:

http://we.tl/aZaUUf0GrO

 

Thank you for the help!

Share this post


Link to post
Share on other sites

hmm looks ok, and this is the file that you verified was copied into C:\Windows\Temp before the next bit (importing it...), i.e. did you verify the file is present in C:\Windows\Temp and it's the one above ?

Share this post


Link to post
Share on other sites

hmm looks ok, and this is the file that you verified was copied into C:\Windows\Temp before the next bit (importing it...), i.e. did you verify the file is present in C:\Windows\Temp and it's the one above ?

 

It copies the file correctly, it just returns that error, even if I access it directly from the package.

Running it manually works.

Adding the step in the win10 installation from scratch works ok.

 

I fixed the problem by changing the default layout xml directly in the wim, using DISM.

 

Thank you for your support!

Best regards!

 

PS: Looking forward for your guide with the taskbar customization

Share this post


Link to post
Share on other sites

what version of Windows 10 media are you using ? i'll do the taskbar post when I get it working the way I want...

Share this post


Link to post
Share on other sites

Is there any reason this Import-Layout would not work if you are using CopyProfile in the unattend? The reason I ask is because the Import works on a new windows 10 install, but is not working on an imaged VM with CopyProfile.

Share this post


Link to post
Share on other sites

I'm not using copyprofile, however have you checked for the file mentioned in the post to see if it's in the C:\Users\Default\AppData\Local\Microsoft\Windows\Shell location after logging in ?

Share this post


Link to post
Share on other sites

I've got this working well other than the width shows 12 columns when I customized and exported the xml with 6 columns so the items fitted exactly.

It now shows a blank grey space next to the actual icons, has anyone else encountered this, is there a way to manually modify the xml to only show the required 6 columns.

Share this post


Link to post
Share on other sites

can you show screenshots of what you are seeing (before/after)

Share this post


Link to post
Share on other sites

This is the xml structure of my start menu

 

<LayoutModificationTemplate Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
<DefaultLayoutOverride>
<StartLayoutCollection>
<defaultlayout:StartLayout GroupCellWidth="6" xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout">
<start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
<start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\WINWORD.EXE" />
<start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Microsoft.Office.OUTLOOK.EXE.15" />
<start:DesktopApplicationTile Size="2x2" Column="4" Row="2" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\lync.exe" />
<start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\EXCEL.EXE" />
<start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.InternetExplorer.Default" />
<start:DesktopApplicationTile Size="2x2" Column="4" Row="4" DesktopApplicationID="Microsoft.Windows.Computer" />
<start:DesktopApplicationTile Size="2x2" Column="0" Row="4" DesktopApplicationID="Microsoft.SoftwareCenter.DesktopToasts" />
<start:DesktopApplicationTile Size="2x2" Column="2" Row="4" DesktopApplicationID="Microsoft.Windows.ControlPanel" />
<start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\ONENOTE.EXE" />
<start:DesktopApplicationTile Size="2x2" Column="0" Row="6" DesktopApplicationID="Microsoft.Windows.Shell.RunDialog" />
<start:DesktopApplicationTile Size="2x2" Column="2" Row="6" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\VideoLAN\VLC\vlc.exe" />
<start:DesktopApplicationTile Size="2x2" Column="4" Row="6" DesktopApplicationID="{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\cmd.exe" />
</start:Group>
</defaultlayout:StartLayout>
</StartLayoutCollection>
</DefaultLayoutOverride>
</LayoutModificationTemplate>
This is the source menu
post-31395-0-80505700-1443307566.jpg
The result of the import give this menu
post-31395-0-95783600-1443307733.jpg
That the default is 2 columns unless I specify a layout element such as

<LayoutOptions

StartTileGroupsColumnCount="1" ?

Thanks for reviewing.

Share this post


Link to post
Share on other sites

I just confirmed that my LayoutModification.xml file is in C:\Users\Default\AppData\Local\Microsoft\Windows\Shell after importing, but all I get is a blank start menu from clearing it out before capturing my image and using Copy Profile.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×