Instructions XML for File Packages
- Updated2026-07-23
- 9 minute(s) read
The optional Instructions XML file you create provides Package Manager with instructions for customized execution of package installation.
- <targetAttributes>
- <customDirectories>
- <shortcuts>
- <returnCodeConventions>
- <customExecutes>
- <osUninstallEntry>
Name the instructions XML file instructions, omit the file extension, and place it in the root of the data directory of a File package.
The following text is an example instructions file for a File package.
<instructions>
<targetAttributes readOnly="allReadOnly"/>
<customDirectories>
<customDirectory name="customDir1" path="D:\subdir"/>
<customDirectory name="customDir2" path="\\myserver\subdir"/>
</customDirectories>
<shortcuts>
<shortcut>
<destination root="ProgramMenu" path="Test\Shortcut.lnk">
<localizedDestination root="ProgramMenu" path="Test\Verknüpfung.lnk" language="de"/>
<localizedDestination root="ProgramMenu" path="Test\Raccourci.lnk" language="fr"/>
<localizedDestination root="ProgramMenu" path="Test\ショートカット.lnk" language="ja"/>
<localizedDestination root="ProgramMenu" path="Test\바로가기.lnk" language="ko"/>
<localizedDestination root="ProgramMenu" path="Test\快捷方式.lnk" language="zh-CN"/>
</destination>
<target root="Program Files" path="Shortcuts\executable.exe"/>
</shortcut>
</shortcuts>
<customExecutes>
<customExecute root="Documents" exeName="executable.exe"/>
</customExecutes>
</instructions>
<targetAttributes> Element
The <targetAttributes> element provides optional instructions regarding locations where Package Manager installs files on the target system.
<targetAttributes> is an empty element, meaning that it has attributes, but does not contain elements or text content. It has the following attributes:
| Attribute Name | Type | Possible Values | Details | Examples |
|---|---|---|---|---|
| readOnly | Enum |
|
|
<targetAttributes readOnly="allReadOnly"/> |
<customDirectories> Element
The <customDirectories> element provides a list of absolute path locations to which Package Manager installs files on the target system.
<customDirectories> contains the <customDirectory> child element.
<customDirectory> Element
The <customDirectory> element defines one absolute or network path to which Package Manager installs files on the target system.
You can have multiple instances of <customDirectory> in the Instructions file.
| Attribute Name | Type | Value | Examples |
|---|---|---|---|
| name | String |
Characters that are valid for a Windows directory name:
|
<customDirectory name="examplename1" path="D:\bin"/> |
| path | String | An absolute or network path on the target system | <customDirectory name="examplename2" path="\\servername\sharename\subdir"/> |
<shortcuts> Element
The <shortcuts> element provides a list of shortcuts that Package Manager creates during installation.
<shortcuts> contains the <shortcut> child element.
<shortcut> Element
The <shortcut> element defines one shortcut that Package Manager creates during installation.
- <destination>
- <target>
<destination> Element
The <destination> element specifies the location where Package Manger creates a shortcut file.
<destination> is required and can have one or more optional <localizedDestination> child elements. It has the following attributes:
| Attribute Name | Type | Value | Examples |
|---|---|---|---|
| root | String | A supported target root. Packages with a windows_all architecture cannot use 64-bit specific target roots, such as ProgramFiles_64 or LV2017DIR64. | <destination root="Startup" path="testShortcut.lnk"/> |
| path | String | The path and file name appended to the root target. Refer to XML Syntax Rules for Quotation Marks for syntax requirements. | <destination root="ProgramFiles" path="Shortcuts\test.exe"/> |
<localizedDestination> Element
The <localizedDestination> element specifies an alternate localized path to use for the shortcut file when installing the file package in a given language.
<localizedDestination> is an empty element, meaning that it has attributes, but does not contain elements or text content. It has the following attributes:
| Attribute Name | Type | Value | Examples |
|---|---|---|---|
| root | String | A supported target root. Packages with a windows_all architecture cannot use 64-bit specific target roots, such as ProgramFiles_64 or LV2017DIR64. | <localizedDestination root="ProgramMenu"/> |
| path | String | The path and file name appended to the root target. | <localizedDestination root="ProgramMenu" path="Test\Verknüpfung.lnk" /> |
| language | String |
Language code of the localized path. Possible values:
|
<localizedDestination root="ProgramMenu" path="Test\Verknüpfung.lnk" language="de"/> |
<target> Element
The <target> element specifies the location of the file for which Package Manager creates a shortcut.
<target> is an empty element, meaning that it has attributes, but does not contain elements or text content. It has the following attributes:
| Attribute Name | Type | Value | Examples |
|---|---|---|---|
| root | String | A supported target root. Packages with a windows_all architecture cannot use 64-bit specific target roots, such as ProgramFiles_64 or LV2017DIR64. | <target root="Startup" path="testShortcut.lnk"/> |
| path | String | The path and file name appended to the root target after it is resolved. Refer to XML Syntax Rules for Quotation Marks for syntax requirements. | <target root="ProgramFiles" path="Shortcuts\test.exe"/> |
| arguments | String | Optional arguments passed to the target file. Refer to XML Syntax Rules for Quotation Marks for syntax requirements. | <target root="ProgramFiles" path="Shortcuts\test.exe" arguments="--argument1"/> |
<customExecutes> Element
The <customExecutes> element provides a list of custom actions for Package Manager to perform on the package.
<customExecutes> contains the <customExecute> child element.
<customExecute> Element
The <customExecute> element defines one custom action Package Manager performs on the package.
The <customExecute> element is optional in the Instructions file, but you can include as many as needed for your package. <customExecute> is an empty element, meaning that it has attributes, but does not contain elements or text content. This element has the following attributes.
| Attribute Name | Type | Required | Value | Description | Examples |
|---|---|---|---|---|---|
| root | String | Yes | The root path to the executable. Packages with a windows_all architecture cannot use 64-bit specific target roots, such as ProgramFiles_64 or LV2017DIR64. | Specifies the root path to the executable. A supported target root. For a list of target roots, refer to Installation Target Roots. Note To run an
executable, you must first install the package that includes the executable. You
can configure a package to temporarily install the executable. Set the target root
path to NIPkgMgrTempUnique and set the schedule attribute to post. Package Manager then installs the package to the NIPkgMgrTempUnique directory to run the executable.
Then Package Manager deletes the files in the directory. |
<customExecute root="Documents" exeName="executable.exe"/> |
| exeName | String | Yes | The file name of the executable. | Specifies the file name of the executable. Can include a path relative to the root. Refer to XML Syntax Rules for Quotation Marks for syntax requirements. |
<customExecute root="ProgramData" exeName="actions\executable.exe"/> |
| arguments | String | No | Command line arguments to pass to the executable. | Specifies command line arguments for Package Manager to pass to
the executable. You can include a supported target root along with the following
arguments: Note The arguments are
case insensitive. For syntax requirements, refer to XML Syntax Rules for
Quotation Marks. |
|
| step | Enum | No |
|
Specifies the transaction step during which Package Manager runs
the executable.
Note If you set the value of
step to uninstall, set the value of ignoreErrors to y. Setting this
value during the development of a package prevents Package Manager from removing
a package from the target system.
|
<customExecute step="uninstall" root="ProgramData" ignoreErros="y" exeName="actions\executable.exe"/> |
| schedule | Enum | No |
|
Specifies the relative point within the transaction steps when
Package Manager runs the executable. If you omit this attribute, Package Manager uses its default value. |
<customExecute step="install" schedule="post" root="ProgramData" exeName="executable.exe"/> |
| wait | Boolean | No |
|
Specifies whether the custom action is synchronous or
asynchronous. When synchronous, Package Manager waits for the custom
action to finish before continuing. When asynchronous, Package Manager
does not wait. If you omit this attribute, Package Manager uses its default value. |
<customExecute root="ProgramData" exeName="executable.exe" wait="n"/> |
| ignoreErrors | Boolean | No |
|
Specifies whether Package Manager reports an error if it cannot
run the executable or the executable returns a value other than 0.
|
<customExecute root="ProgramData" exeName="executable.exe" wait="y" ignoreErrors="y"/> |
| hideConsoleWindow | Boolean | No |
|
Specifies whether to hide the console window for console applications.
|
<customExecute root="ProgramData" exeName="executable.exe" hideConsoleWindow="y"/> |
| ignoreLaunchErrors | Boolean | No |
|
Specifies whether Package Manager reports an error if it cannot run or cannot find the executable. You cannot use this attribute in combination with ignoreErrors. | <customExecute root="ProgramData" exeName="executable.exe" ignoreLaunchErrors="y"/> |
| returnCodeConvention | String | No | Must match the name of a predefined convention or a <returnCodeConvention> element that this package
defines. The following predefined conventions are available:
|
Indicates how to interpret the return codes the executable
returns.
|
<customExecute root="ProgramData" exeName="executable.exe" returnCodeConvention="installer"/> |
XML Syntax Rules for Quotation Marks
Review the XML syntax rules for quotation marks to adhere to Microsoft's conditional statement syntax and to enclose paths with spaces within quotation marks.
You must enclose literal text within quotation marks to adhere to Microsoft's conditional statement syntax. The Instructions XML syntax provides two ways of adhering to this requirement:
- Use single quotation marks to delimit the XML string. This allows the use of double
quotation marks inside the string. For
example:
<customExecute condition='IEDETECTED~="Yes" AND VersionNT64 = 601 AND NIRUNNINGINSILENTMODE'/>
- Use the XML escape character for double quotation marks, ", to delimit the literal text in the XML string. With the XML escape
character, you can use double quotation marks or single quotation marks to delimit the XML
string. For
example:
<customExecute condition="IEDETECTED~="Yes" AND VersionNT64 = 601 AND NIRUNNINGINSILENTMODE"/>
You must enclose paths with spaces within quotation marks. Single quotation marks are not allowed in the path:
- Use the XML escape character for double quotation marks, ", to enclose path in the XML string. For
example:
<customExecute exeName=""VC RunTime Installer.exe"" arguments="/q /norestart" inPackage="y"/>
Custom Execute Examples
The following invokes a PowerShell script that the package could have installed and passes two arguments after installation.
<customExecute root="BootVolume" exeName="Windows\System32\WindowsPowerShell\v1.0\powershell.exe" arguments="-File "%ProgramData%\My App Name\MyInstallScript.ps1" "argument 1" "argument 2"" step="install" schedule="post" wait="y" ignoreErrors="n" hideConsoleWindow="y" />
<osUninstallEntry> Element
The <osUninstallEntry> element provides optional instructions for the package to appear in the Add/Remove Programs interface.
<osUninstallEntry> is an empty element. That is, it has attributes but does not contain elements or text content. <osUninstallEntry> has the following attributes:
| Attribute Name | Type | Possible Values | Details | Examples |
|---|---|---|---|---|
| ux | Enum |
|
For third-party packages, the oem value allows the package to appear as a first-class item in the list of installed applications. When performing modify and uninstall operations, the Add/Remove Programs interface only refers to the named package. | <osUninstallEntry ux="oem"/> |
Related Information
- Installation Target Roots for File Packages
The directories you create inside the data folder inform Package Manager where to install the files when you build packages.