<?xml version="1.0" encoding="utf-8"?>
<nvi name="Update.Core" title="${{Title}}" version="${{Version}}" versionText="${{Version}}" timestamp="2018-03-05T00:25:31" disposition="demand" hidden="true" installerMin="2.1002.207.1848">
	<filter name="minVista" min="6.0"/>
	<filter name="XP" min="5.1" max="5"/>
	<strings>
		<string name="Version" value="31.1.10.0"/>
		<string name="Title" value="NVIDIA Update Core"/>
		<string name="BackendDllName" value="NvBackend.dll"/>
		<string name="BackendExeName" value="NvBackend.exe"/>
		<string name="BackendApiDllNameX86" value="NvBackendAPI32.dll"/>
		<string name="BackendApiDllNameX64" value="NvBackendAPI64.dll"/>
		<string name="NvUpdatusRegistryPath" value="${{NvidiaSoftwareKey}}\Global\NvUpdatus"/>
		<string name="NvBackendRegistryPath" value="${{NvidiaSoftwareKey}}\Global\NvBackend"/>
		<string name="NvContainerRegistryPath" value="${{NvidiaSoftwareKey}}\NvContainer"/>
		<string name="UpdateCorePath" value="${{NvidiaProgramFiles}}\Update Core"/>
		<string name="UpdateCoreX86Path" value="${{NvidiaProgramFilesX86}}\Update Core"/>
		<string name="NVTrayProcessName" value="nvtray.exe"/>
		<string name="NvDisplayDirPath" value="${{NvidiaProgramFiles}}\Display"/>
		<string name="NvTrayExePath" value="${{NvDisplayDirPath}}\${{NVTrayProcessName}}"/>
		<string name="NvUpdtPath" value="${{UpdateCorePath}}\NvUpdt.dll"/>
		<string name="NvUpdtRegKey" value="0_nvupdt.dll"/>
		<string name="NvGFTrayPluginPath" value="${{UpdateCorePath}}\NvGFTrayPlugin.dll"/>
		<string name="NvuidllPath" value="${{NvDisplayDirPath}}\nvui.dll"/>
		<string name="MinNvtrayVersionForVer2Restart" value="310.19"/>
		<string name="CPLPackageIdentifier" value="Display.ControlPanel"/>
		<string name="BackendEventSourceName" value="${{Title}} Service"/>
		<string name="SystemIdentifierRegValue" value="link"/>
		<string name="ContainerPluginFolderName" value="${{NvidiaProgramFilesX86}}\NvContainer\plugins\User"/>
		<string name="NvContainerLSName" value="NvContainerLocalSystem"/>
		<string name="NvContainerNSName" value="NvContainerNetworkService"/>
		<string name="RegistryKey" value="${{NvidiaSoftwareKey}}\NvContainer\NvContainerLocalSystem"/>
		<string name="serviceStopMaxTimeout" value="30000"/>
		<string name="ContainerBinaryName" value="nvcontainer.exe"/>
		<string name="ContainerPluginFolderName" value="${{NvidiaProgramFilesX86}}\NvContainer\plugins\User"/>
	</strings>
	<constraints>
		<reject tests="SAFEMODE" level="silent" text="${{InstallSafeModeBlockedMessage}}"/>
	</constraints>
	<dependencies>
		<package type="uninstalls" package="NVIDIA.Update"/>
		<package type="uninstalls" package="Update.Core.iCafe"/>
		<package type="requires" package="NvTelemetry"/>
	</dependencies>
	<extensions>
		<extension file="UpdateCoreExt.dll"/>
	</extensions>
	<properties>
		<bool name="IsiCafeUpdateInstalled" value="false"/>
		<bool name="FixedInstallLocation" value="true"/>
		<string name="InstallLocation" value="${{UpdateCoreX86Path}}"/>
		<bool name="IsInternational" value="false"/>
		<bool name="IsGFExperienceComponent" value="true"/>
		<bool name="IsQuadroExperienceComponent" value="false"/>
		<bool name="IsUpdateComponent" value="true"/>
		<string name="UpdatusRegistryPath" value="${{NvUpdatusRegistryPath}}"/>
		<string name="SystemIdentifierRegValue" value="${{SystemIdentifierRegValue}}"/>
		<string name="BackendAPI32BitDll" value="${{BackendApiDllNameX86}}"/>
		<string name="BackendAPI32BitDllPath" value="${{UpdateCoreX86Path}}\${{BackendApiDllNameX86}}"/>
		<string name="UpdateType" value="GFExperience"/>
		<bool name="IsGameMonitorRunning" value="false"/>
		<bool name="IsNvBackendRunning" value="false"/>
		<bool name="ServiceAutoStart" value="false"/>
		<bool name="NvContainerUnloaded" value="true"/>
		<bool name="UsesNvContainer" value="true"/>
		<bool name="UsesNvTelemetry" value="true"/>
		<bool name="DeletePluginFiles" value="false"/>
	</properties>
	<manifest>
		<file name="UpdateCore.nvi"/>
		<file name="UpdateCoreExt.dll"/>
		<file name="NvSHIM.exe"/>
		<file name="NvProfileUpdater32.exe"/>
		<file name="NvProfileUpdater64.exe"/>
		<file name="NvTmMon.exe"/>
		<file name="NvTmRep.exe"/>
	</manifest>
	<phases>
		<setPropertyIf phase="setPropertyIfNvBackendDllExists" onError="ignore" platform="x86" boolProperty="NvBackendDllExists" value="true" when="install">
			<file name="${{ContainerPluginFolderName}}\${{BackendDllName}}" check="exists"/>
		</setPropertyIf>
		<standard phase="stopNvContainerLSService" when="install" onError="ignore" condition="DeletePluginFiles &amp;&amp; NvBackendDllExists">
			<stopService name="${{NvContainerLSName}}" timeOut="${{serviceStopMaxTimeout}}"/>
		</standard>
		<standard phase="stopNvContainerNSService" when="install" onError="ignore" condition="DeletePluginFiles &amp;&amp; NvBackendDllExists">
			<stopService name="${{NvContainerNSName}}" timeOut="${{serviceStopMaxTimeout}}"/>
		</standard>
		<exe phase="killNvContainers" name="${{SystemDirectory}}\taskkill.exe" when="install" onError="ignore" condition="DeletePluginFiles &amp;&amp; NvBackendDllExists">
			<arg value="/f /im ${{ContainerBinaryName}}" quote="none"/>
		</exe>
		<setPropertyIf phase="checkIfNvContainerUnloaded" boolProperty="NvContainerUnloaded" value="false" when="install" condition="DeletePluginFiles &amp;&amp; NvBackendDllExists">
			<process name="${{ContainerBinaryName}}" check="exists"/>
		</setPropertyIf>
		<confirm phase="Confirm-NvContainerUnload" when="install" condition="DeletePluginFiles &amp;&amp; NvBackendDllExists">
			<propertyTrue name="NvContainerUnloaded"/>
		</confirm>
		<setPropertyIf phase="setPropertyIfGameMonitorRunning" boolProperty="IsGameMonitorRunning" value="true" when="install">
			<process name="NVGameMonitor.exe" check="exists"/>
		</setPropertyIf>
		<exe phase="stopNvGameMonitorInstance" name="${{NvidiaProgramFiles}}\GameMonitor\NVGameMonitor.exe" when="install" progress="15" autoTick="100" condition="IsGameMonitorRunning">
			<arg value="--shutdown"/>
			<success value="0"/>
		</exe>
		<standard phase="deleteNvGameMonitorRunKey" when="install" condition="IsGameMonitorRunning" onError="ignore">
			<deleteRegistry keyName="HKLM\Software\Microsoft\Windows\CurrentVersion\Run" valueName="NvGameMonitor"/>
		</standard>
		<standard phase="deleteNvBackendExeRunKey">
			<deleteRegistry keyName="HKLM\Software\Microsoft\Windows\CurrentVersion\Run" valueName="NvBackend"/>
		</standard>
		<setPropertyIf phase="setPropertyIfNvBackendRunning" boolProperty="IsNvBackendRunning" value="true" when="install">
			<process name="${{BackendExeName}}" check="exists"/>
		</setPropertyIf>
		<exe phase="stopNvBackendInstance" name="${{InstallLocation}}\${{BackendExeName}}" when="install" condition="IsNvBackendRunning">
			<arg value="--shutdown"/>
			<success value="0"/>
		</exe>
		<standard phase="deletePluginDataX86" platform="x86" when="install" onError="ignore" condition="DeletePluginFiles &amp;&amp; NvBackendDllExists">
			<deleteFile target="${{UpdateCoreX86Path}}\detoured.dll"/>
			<deleteFile target="${{UpdateCoreX86Path}}\${{BackendApiDllNameX86}}"/>
			<deleteFile target="${{ContainerPluginFolderName}}\${{BackendDllName}}"/>
		</standard>
		<standard phase="deletePluginDataAmd64" platform="amd64" condition="DeletePluginFiles &amp;&amp; NvBackendDllExists">
			<deleteFile target="${{UpdateCorePath}}\${{BackendApiDllNameX64}}"/>
		</standard>
		<standard phase="deleteData" when="uninstall" onError="ignore">
			<deleteDirectoryTree target="${{LocalUserAppData}}\NVIDIA Corporation\NvProfileUpdater"/>
			<deleteDirectoryTree target="${{LocalUserAppData}}\NVIDIA Corporation\NvTmMon"/>
			<deleteDirectoryTree target="${{LocalUserAppData}}\NVIDIA Corporation\NvTmRep"/>
			<deleteDirectory target="${{LocalUserAppData}}\NVIDIA Corporation"/>
		</standard>
		<standard phase="createUpdateCoreDirectory" platform="amd64">
			<createDirectory target="${{UpdateCorePath}}"/>
		</standard>
		<standard phase="createUpdateCoreX86Directory">
			<createDirectory target="${{UpdateCoreX86Path}}"/>
		</standard>
		<standard phase="cleanUpHistoricBinaries" onError="ignore" when="install">
			<deleteFile target="${{UpdateCoreX86Path}}\Oaremote_plugin.dll"/>
			<deleteFile target="${{UpdateCorePath}}\WLMerger.exe"/>
			<deleteFile target="${{UpdateCoreX86Path}}\${{BackendExeName}}"/>
		</standard>
		<standard phase="copyx86BackendBinaries" platform="x86">
			<copyFile target="NvSHIM.exe"/>
			<copyFile target="NvTmMon.exe"/>
			<copyFile target="NvTmRep.exe"/>
		</standard>
		<standard phase="copyx86BackendBinariesForx86Only" platform="x86only">
			<copyFile target="NvProfileUpdater32.exe"/>
		</standard>
		<standard phase="copyAmd64BackendBinaries" platform="amd64">
			<copyFile target="${{UpdateCorePath}}\NvProfileUpdater64.exe" source="NvProfileUpdater64.exe"/>
		</standard>
		<standard phase="scheduleProfileUpdater" platform="x86only">
			<scheduleTask action="create" taskName="NvProfileUpdaterOnLogon" delayTaskUpto="2" triggerType="logon" author="NVIDIA Corporation" description="NVIDIA Profile Updater" processPath="${{InstallLocation}}\NvProfileUpdater32.exe"/>
			<scheduleTask action="create" taskName="NvProfileUpdaterDaily" triggerType="daily" author="NVIDIA Corporation" description="NVIDIA Profile Updater" processPath="${{InstallLocation}}\NvProfileUpdater32.exe" triggerTime="12:25"/>
		</standard>
		<standard phase="scheduleProfileUpdaterOnX64" platform="amd64">
			<scheduleTask action="create" taskName="NvProfileUpdaterOnLogon" delayTaskUpto="2" triggerType="logon" author="NVIDIA Corporation" description="NVIDIA Profile Updater" processPath="${{UpdateCorePath}}\NvProfileUpdater64.exe"/>
			<scheduleTask action="create" taskName="NvProfileUpdaterDaily" triggerType="daily" author="NVIDIA Corporation" description="NVIDIA Profile Updater" processPath="${{UpdateCorePath}}\NvProfileUpdater64.exe" triggerTime="12:25"/>
		</standard>
		<standard phase="scheduleNvTmMon">
			<scheduleTask action="create" taskName="NvTmMon" delayTaskUpto="2" triggerType="logon" reRunAfter="60" author="NVIDIA Corporation" description="NVIDIA telemetry monitor" processPath="${{InstallLocation}}\NvTmMon.exe"/>
		</standard>
		<standard phase="scheduleNvTmRep">
			<scheduleTask action="create" taskName="NvTmRep" triggerType="daily" triggerTime="12:25" author="NVIDIA Corporation" description="NVIDIA crash and telemetry reporter" processPath="${{InstallLocation}}\NvTmRep.exe"/>
		</standard>
		<standard phase="deleteNvTmRepOnLogon" when="install" onError="ignore">
			<scheduleTask action="delete" taskName="NvTmRepOnLogon"/>
		</standard>
		<custom phase="deleteBackendEventSource" action="DeleteBackendEventSource" when="install" onError="ignore">
			<properties>
				<string name="EventSourceName" value="${{BackendEventSourceName}}"/>
			</properties>
		</custom>
		<if filter="minVista">
			<standard phase="deletenNvUpdtRegKeysForVistaPlusOnly" when="install">
				<deleteRegistry keyName="${{NvidiaSoftwareKey}}\Global\NvTray\${{NvUpdtRegKey}}" valueName="FullPath"/>
				<deleteRegistryKey keyName="${{NvidiaSoftwareKey}}\NvTray\${{NvUpdtRegKey}}"/>
			</standard>
			<else>
				<standard phase="deleteNvUpdtRegKeysForXPOnly" when="install">
					<deleteRegistry keyName="${{NvidiaSoftwareKey}}\Global\MediaCenterTray\${{NvUpdtRegKey}}" valueName="FullPath"/>
					<deleteRegistryKey keyName="${{NvidiaSoftwareKey}}\Global\MediaCenterTray\${{NvUpdtRegKey}}"/>
				</standard>
			</else>
		</if>
		<standard phase="deleteX86NvUpdt" platform="x86only" when="install" OnError="Ignore">
			<deleteFile target="${{UpdateCorePath}}\NvUpdt.dll"/>
			<deleteFile target="${{UpdateCorePath}}\NvUpdtr.dll"/>
		</standard>
		<standard phase="deleteX64NvUpdt" platform="amd64" when="install" OnError="Ignore">
			<deleteFile target="${{UpdateCorePath}}\NvUpdt.dll"/>
			<deleteFile target="${{UpdateCorePath}}\NvUpdtr.dll"/>
		</standard>
		<custom phase="setSystemIdentifier" action="SetSystemIdentifier" when="install">
			<properties>
				<string name="Path" value="${{NvBackendRegistryPath}}"/>
				<string name="ValueName" value="${{SystemIdentifierRegValue}}"/>
			</properties>
		</custom>
		<standard phase="RemoveBackendData" when="uninstall">
			<deleteDirectoryTree target="${{LocalUserAppData}}\NVIDIA\NvBackend"/>
			<deleteDirectory target="${{LocalUserAppData}}\NVIDIA"/>
		</standard>
		<standard phase="deleteCoreRedirectedKeysOnlyOnUninstall" when="uninstall" platform="x86" onError="ignore" condition="!Global:CleanInstall">
			<deleteRegistryKeyTree keyName="${{NvBackendRegistryPath}}"/>
			<deleteRegistryKeyTree keyName="${{NvUpdatusRegistryPath}}"/>
			<deleteRegistryKey keyName="${{NvidiaSoftwareKey}}\Global"/>
			<deleteRegistryKey keyName="${{NvidiaSoftwareKey}}"/>
		</standard>
		<standard phase="deleteCoreKeysOnlyOnUninstall" when="uninstall" onError="ignore" condition="!Global:CleanInstall">
			<deleteRegistryKeyTree keyName="${{NvUpdatusRegistryPath}}"/>
			<deleteRegistryKey keyName="${{NvidiaSoftwareKey}}\Global"/>
			<deleteRegistryKey keyName="${{NvidiaSoftwareKey}}"/>
			<deleteRegistryKeyTree keyName="${{NvidiaPerUserSoftwareKey}}\NvBackend"/>
			<deleteRegistryKey keyName="${{NvidiaPerUserSoftwareKey}}"/>
		</standard>
		<if filter="minVista">
			<standard phase="removeRegKeysForVistaPlusOnly" when="uninstall">
				<deleteRegistryKey keyName="${{NvidiaSoftwareKey}}\NvTray\${{NvUpdtRegKey}}"/>
				<deleteRegistryKey keyName="${{NvidiaSoftwareKey}}\NvTray"/>
			</standard>
			<else>
				<standard phase="removeRegKeysForXPOnly" when="uninstall">
					<deleteRegistryKey keyName="${{NvidiaSoftwareKey}}\Global\MediaCenterTray\${{NvUpdtRegKey}}"/>
					<deleteRegistryKey keyName="${{NvidiaSoftwareKey}}\Global\MediaCenterTray"/>
				</standard>
			</else>
		</if>
	</phases>
	<strings>
		<localized locale="0x0409">
			<string name="NotAnUpgradeMessage" value="A newer or a same version is present."/>
			<string name="InstallSafeModeBlockedMessage" value="${{Title}} cannot be installed in safe mode."/>
		</localized>
		<localized locale="0x0401">
			<string name="NotAnUpgradeMessage" value="يوجد إصدار أحدث أو نفس الإصدار."/>
		</localized>
		<localized locale="0x0405">
			<string name="NotAnUpgradeMessage" value="Zde je přítomna nová nebo stejná verze."/>
		</localized>
		<localized locale="0x0406">
			<string name="NotAnUpgradeMessage" value="En nyere eller den samme version findes."/>
		</localized>
		<localized locale="0x0407">
			<string name="NotAnUpgradeMessage" value="Eine neuere oder dieselbe Version ist vorhanden."/>
		</localized>
		<localized locale="0x0408">
			<string name="NotAnUpgradeMessage" value="Υπάρχει μια νεότερη ή η ίδια έκδοση."/>
		</localized>
		<localized locale="0x0809">
			<string name="NotAnUpgradeMessage" value="A newer or the same version is present."/>
		</localized>
		<localized locale="0x040a">
			<string name="NotAnUpgradeMessage" value="Este equipo ya cuenta con la misma versión o una más nueva."/>
		</localized>
		<localized locale="0x080a">
			<string name="NotAnUpgradeMessage" value="La versión presente es la misma o más reciente."/>
		</localized>
		<localized locale="0x040b">
			<string name="NotAnUpgradeMessage" value="Uudempi tai sama versio on jo olemassa."/>
		</localized>
		<localized locale="0x040c">
			<string name="NotAnUpgradeMessage" value="La même version ou une version plus récente est déjà présente."/>
		</localized>
		<localized locale="0x040d">
			<string name="NotAnUpgradeMessage" value="כבר קיימת גרסה חדשה יותר או גרסה זהה לזו."/>
		</localized>
		<localized locale="0x040e">
			<string name="NotAnUpgradeMessage" value="Egy újabb vagy azonos verzió már megtalálható a számítógépen."/>
		</localized>
		<localized locale="0x0410">
			<string name="NotAnUpgradeMessage" value="È presente la stessa versione o una versione più recente."/>
		</localized>
		<localized locale="0x0411">
			<string name="NotAnUpgradeMessage" value="新しいバージョン、または同じバージョンが既にインストールされています。"/>
		</localized>
		<localized locale="0x0412">
			<string name="NotAnUpgradeMessage" value="신버전 또는 동일한 버전이 있습니다."/>
		</localized>
		<localized locale="0x0413">
			<string name="NotAnUpgradeMessage" value="Er is een nieuwere of dezelfde versie aanwezig."/>
		</localized>
		<localized locale="0x0414">
			<string name="NotAnUpgradeMessage" value="En nyere versjon eller samme versjon  er allerede installert på denne datamaskinen"/>
		</localized>
		<localized locale="0x0415">
			<string name="NotAnUpgradeMessage" value="Zainstalowana jest już nowsza lub ta sama wersja programu."/>
		</localized>
		<localized locale="0x0816">
			<string name="NotAnUpgradeMessage" value="Já existe uma versão idêntica ou mais recente."/>
		</localized>
		<localized locale="0x0416">
			<string name="NotAnUpgradeMessage" value="Uma nova versão ou a mesma versão está presente."/>
		</localized>
		<localized locale="0x0419">
			<string name="NotAnUpgradeMessage" value="Эта или более новая версия уже установлена."/>
		</localized>
		<localized locale="0x041b">
			<string name="NotAnUpgradeMessage" value="K dispozícii je novšia alebo rovnaká verzia produktu."/>
		</localized>
		<localized locale="0x0424">
			<string name="NotAnUpgradeMessage" value="Prisotna je novejša ali ista različica. "/>
		</localized>
		<localized locale="0x041d">
			<string name="NotAnUpgradeMessage" value="En nyare eller samma version av finns."/>
		</localized>
		<localized locale="0x041e">
			<string name="NotAnUpgradeMessage" value="มีเวอร์ชันเดิมหรือใหม่กว่า"/>
		</localized>
		<localized locale="0x041f">
			<string name="NotAnUpgradeMessage" value="Aynı veya daha yeni bir sürüm mevcut."/>
		</localized>
		<localized locale="0x0804">
			<string name="NotAnUpgradeMessage" value="存在更新或相同的版本。"/>
		</localized>
		<localized locale="0x0404">
			<string name="NotAnUpgradeMessage" value="存在較新或相同的版本。"/>
		</localized>
	</strings>
	<include name="${{ResourcesDirectory}}\GFExperienceProgressText.cfg" select="/nvi/*"/>
	<include name="${{ResourcesDirectory}}\QuadroExperienceProgressText.cfg" select="/nvi/*"/>
</nvi>
