<commit_before>---
title: Changing Windows Stacks
owner:
  - Buildpacks
  - Windows
---


This topic explains how to restage apps on a new Windows stack. It also provides a description of stacks and lists the supported Windows stacks on <%= vars.current_major_version ? "#{vars.windows_runtime_full} v#{vars.current_major_version}" : vars.windows_runtime_full %>.

To restage a Windows app on a new Linux stack, see [Changing Stacks](./stacks.html).

<% if vars.platform_code.include? "CF" %>
You can also use the Stack Auditor plugin for the Cloud Foundry Command Line Interface (cf CLI) when changing stacks. See [Using the Stack Auditor Plugin](../../adminguide/stack-auditor.html).
<% else %>
<% end %>

## <a id='overview'></a> Overview ##

A stack is a prebuilt root file system (rootfs) that supports a specific operating system. For example, Linux-based systems need `/usr` and `/bin` directories at their root and Windows needs `/windows`. The stack works in tandem with a buildpack to support apps running in compartments. Under Diego architecture, cell VMs can support multiple stacks.

<p class="note"><strong>Note:</strong> Docker apps do not use stacks.</p>

## <a id='available-stacks'></a> Available Stacks

If you push your <%= vars.windows_runtime %> <%= vars.current_major_version ? "v#{vars.current_major_version}" : "" %> app to a Windows stack, you must use `windows`.
The `windows2016` stack is not supported on <%= vars.windows_runtime %>.

## <a id='cli-commands'></a> Restaging Apps on a New Stack

For security, stacks receive regular updates to address Common Vulnerabilities and Exposures ([CVEs](http://www.ubuntu.com/usn/)). Apps pick up on these stack changes through new releases of <%= vars.windows_runtime %>. However, if your app links statically to a library provided in the rootfs, you may have to manually restage it to pick up the changes.

It can be difficult to know what libraries an app statically links to, and it depends on the languages you are using. One example is an app that uses a Ruby or Python binary, and links out to part of the C standard library. If the C library requires an update, you may need to recompile the app and restage it.

To restage an app on a new stack, do the following:

1. Use the `cf stacks` command to list the stacks available in a deployment.<commit_msg>[#171373200] fix var ref<commit_after>---
title: Changing Windows Stacks
owner:
  - Buildpacks
  - Windows
---


This topic explains how to restage apps on a new Windows stack. It also provides a description of stacks and lists the supported Windows stacks on <%= vars.current_major_version ? "#{vars.windows_runtime_full} v#{vars.current_major_version}" : vars.windows_runtime_full %>.

To restage a Windows app on a new Linux stack, see [Changing Stacks](./stacks.html).

<% if vars.platform_code.include? "CF" %>
You can also use the Stack Auditor plugin for the Cloud Foundry Command Line Interface (cf CLI) when changing stacks. See [Using the Stack Auditor Plugin](../../adminguide/stack-auditor.html).
<% else %>
<% end %>

## <a id='overview'></a> Overview ##

A stack is a prebuilt root file system (rootfs) that supports a specific operating system. For example, Linux-based systems need `/usr` and `/bin` directories at their root and Windows needs `/windows`. The stack works in tandem with a buildpack to support apps running in compartments. Under Diego architecture, cell VMs can support multiple stacks.

<p class="note"><strong>Note:</strong> Docker apps do not use stacks.</p>

## <a id='available-stacks'></a> Available Stacks

If you push your <%= vars.windows_runtime_abbr %> <%= vars.current_major_version ? "v#{vars.current_major_version}" : "" %> app to a Windows stack, you must use `windows`.
The `windows2016` stack is not supported on <%= vars.windows_runtime_abbr %>.

## <a id='cli-commands'></a> Restaging Apps on a New Stack

For security, stacks receive regular updates to address Common Vulnerabilities and Exposures ([CVEs](http://www.ubuntu.com/usn/)). Apps pick up on these stack changes through new releases of <%= vars.windows_runtime_abbr %>. However, if your app links statically to a library provided in the rootfs, you may have to manually restage it to pick up the changes.

It can be difficult to know what libraries an app statically links to, and it depends on the languages you are using. One example is an app that uses a Ruby or Python binary, and links out to part of the C standard library. If the C library requires an update, you may need to recompile the app and restage it.

To restage an app on a new stack, do the following:

1. Use the `cf stacks` command to list the stacks available in a deployment.
{'fraction_non_alphanumeric': 0.09267149552620367, 'fraction_numerical': 0.004047720494247976, 'mean_word_length': 4.408986175115207, 'pattern_counts': {'":': 0, '<': 39, '<?xml version=': 0, '>': 39, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1544137', 'n_tokens_mistral': 1345, 'n_tokens_neox': 1246, 'n_words': 640}