This commit is contained in:
vetrivelc 2017-07-19 14:22:53 +05:30
commit d829654203
23 changed files with 164 additions and 206 deletions

View File

@ -210,7 +210,7 @@
<Property Id="ARPPRODUCTICON" Value="XenCenterICO" />
<MajorUpgrade AllowDowngrades="no" AllowSameVersionUpgrades="yes" DowngradeErrorMessage="!(loc.ErrorNewerProduct)" Schedule="afterInstallInitialize"/>
<PropertyRef Id="WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED" />
- <Condition Message=".NET Framework 4.6 is required for this installation."><![CDATA[Installed OR WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED]]></Condition>
- <Condition Message="Microsoft .NET Framework 4.6 or later is required for this installation. Please install it from: https://www.microsoft.com/net/download/framework"><![CDATA[Installed OR WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED]]></Condition>
+ <Condition Message="!(loc.Required_For_Installation)"><![CDATA[Installed OR WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED]]></Condition>
<Property Id="PERMACHINEINSTALL">
<RegistrySearch Id="InstallRegistry" Type="raw" Root="HKLM" Key="Software\[Citrix]\[XenCenter]" Name="InstallDir" />

View File

@ -310,7 +310,7 @@
<Property Id="ARPPRODUCTICON" Value="XenCenterICO" />
<MajorUpgrade AllowDowngrades="no" AllowSameVersionUpgrades="yes" DowngradeErrorMessage="!(loc.ErrorNewerProduct)" Schedule="afterInstallInitialize"/>
<PropertyRef Id="WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED" />
<Condition Message=".NET Framework 4.6 is required for this installation."><![CDATA[Installed OR WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED]]></Condition>
<Condition Message="Microsoft .NET Framework 4.6 or later is required for this installation. Please install it from: https://www.microsoft.com/net/download/framework"><![CDATA[Installed OR WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED]]></Condition>
<Property Id="PERMACHINEINSTALL">
<RegistrySearch Id="InstallRegistry" Type="raw" Root="HKLM" Key="Software\[Citrix]\[XenCenter]" Name="InstallDir" />
</Property>

View File

@ -11,7 +11,7 @@
<String Id="XenServer_Update_File">[XenServer] Update File</String>
<String Id="XenServer_OEM_Update_File">[XenServer] OEM Update File</String>
<String Id="XenCenter_Saved_Search">[XenCenter] Saved Search</String>
<String Id="Required_For_Installation">.NET Framework 4 is required for this installation.</String>
<String Id="Required_For_Installation">Microsoft .NET Framework 4.6 or later is required for this installation. Please install it from: https://www.microsoft.com/net/download/framework</String>
<String Id="Readme">README.TXT</String>
<String Id="HealthCheckDescr">Enables monitoring of the health of your Citrix XenServer pools by periodically uploading data from the servers to Citrix Insight Services.</String>
<String Id="HealthCheckDescrShort">Enables monitoring of the health of your Citrix XenServer pools.</String>

View File

@ -11,7 +11,7 @@
<String Id="XenServer_Update_File">[XenServer] アップデート ファイル</String>
<String Id="XenServer_OEM_Update_File">[XenServer] OEM アップデート ファイル</String>
<String Id="XenCenter_Saved_Search">[XenCenter] 保存済みの検索</String>
<String Id="Required_For_Installation">このインストールには .NET Framework 4 が必要です。</String>
<String Id="Required_For_Installation">このインストールには .NET Framework 4.6 が必要です。</String>
<String Id="Readme">README.TXT</String>
<String Id="HealthCheckDescr">サーバーから Citrix Insight Services に定期的にデータをアップロードすることにより、Citrix XenServer プールのヘルス状態の監視を有効にします。</String>
<String Id="HealthCheckDescrShort">Citrix XenServer プールのヘルス状態の監視を有効にします。</String>

View File

@ -11,7 +11,7 @@
<String Id="XenServer_Update_File">[XenServer] 更新文件</String>
<String Id="XenServer_OEM_Update_File">[XenServer] OEM 更新文件</String>
<String Id="XenCenter_Saved_Search">[XenCenter] 保存的搜索</String>
<String Id="Required_For_Installation">此安装需要 .NET Framework 4。</String>
<String Id="Required_For_Installation">此安装需要 .NET Framework 4.6。</String>
<String Id="Readme">声明.TXT</String>
<String Id="HealthCheckDescr">通过定期将数据从服务器上载到 Citrix Insight Services实现对 Citrix XenServer 池的运行状况监视。</String>
<String Id="HealthCheckDescrShort">允许监视 Citrix XenServer 池的运行状况。</String>

View File

@ -57,7 +57,7 @@ namespace XenAdmin
get
{
var s = SEARCH;
return s != "[" + "xensearch]" ? s : InvisibleMessages.XEN_SEARCH;
return s != "[" + "xensearch]" ? s.ToLowerInvariant() : InvisibleMessages.XEN_SEARCH.ToLowerInvariant();
}
}
@ -66,7 +66,7 @@ namespace XenAdmin
get
{
var s = UPDATE;
return s != "[" + "xsupdate]" ? s : InvisibleMessages.XEN_UPDATE;
return s != "[" + "xsupdate]" ? s.ToLowerInvariant() : InvisibleMessages.XEN_UPDATE.ToLowerInvariant();
}
}
@ -75,7 +75,7 @@ namespace XenAdmin
get
{
var s = UPDATEISO;
return s != "[" + "iso]" ? s : InvisibleMessages.ISO_UPDATE;
return s != "[" + "iso]" ? s.ToLowerInvariant() : InvisibleMessages.ISO_UPDATE.ToLowerInvariant();
}
}

View File

@ -258,6 +258,7 @@ namespace XenAdmin.Diagnostics.Checks
case "PATCH_PRECHECK_FAILED_OUT_OF_SPACE":
System.Diagnostics.Trace.Assert(Helpers.CreamOrGreater(Host.Connection)); // If not Cream or greater, we shouldn't get this error
System.Diagnostics.Trace.Assert(!Helpers.ElyOrGreater(Host.Connection)); // If Ely or greater, we shouldn't get this error
long.TryParse(found, out foundSpace);
long.TryParse(required, out requiredSpace);
@ -287,9 +288,11 @@ namespace XenAdmin.Diagnostics.Checks
return new HostOutOfSpaceProblem(this, Host, Update, diskSpaceReq);
case "OUT_OF_SPACE":
if (Helpers.CreamOrGreater(Host.Connection))
if (Helpers.CreamOrGreater(Host.Connection) && (Patch != null || Update != null))
{
var action = new GetDiskSpaceRequirementsAction(Host, Patch, true);
var action = Patch != null
? new GetDiskSpaceRequirementsAction(Host, Patch, true)
: new GetDiskSpaceRequirementsAction(Host, Update.Name, Update.installation_size, true);
try
{
action.RunExternal(action.Session);
@ -299,7 +302,9 @@ namespace XenAdmin.Diagnostics.Checks
log.WarnFormat("Could not get disk space requirements");
}
if (action.Succeeded)
return new HostOutOfSpaceProblem(this, Host, Patch, action.DiskSpaceRequirements);
return Patch != null
? new HostOutOfSpaceProblem(this, Host, Patch, action.DiskSpaceRequirements)
: new HostOutOfSpaceProblem(this, Host, Update, action.DiskSpaceRequirements);
}
break;
}

View File

@ -292,7 +292,7 @@ namespace XenAdmin.Wizards.PatchingWizard
canUpload = true;
diskSpaceRequirements = null;
var diskSpaceActions = new List<AsyncAction>();
foreach (Host master in SelectedMasters.Where(master => Helpers.CreamOrGreater(master.Connection)))
foreach (Host master in SelectedMasters.Where(master => Helpers.CreamOrGreater(master.Connection) && !Helpers.ElyOrGreater(master.Connection)))
{
AsyncAction action = null;
switch (SelectedUpdateType)

View File

@ -33,6 +33,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using XenAdmin.Core;
using XenAPI;
@ -107,18 +108,21 @@ namespace XenAdmin.Actions
// get required disk space
long requiredDiskSpace = updateSize;
try
if (!Helpers.ElyOrGreater(Host)) // for ElyOrGreater we don't need to call get_required_space, because it will always return updateSize
{
var args = new Dictionary<string, string>();
args.Add("size", updateSize.ToString());
try
{
var args = new Dictionary<string, string>();
args.Add("size", updateSize.ToString());
result = Host.call_plugin(Session, Host.opaque_ref, "disk-space", "get_required_space", args);
requiredDiskSpace = Convert.ToInt64(result);
}
catch (Failure failure)
{
log.WarnFormat("Plugin call disk-space.get_required_space on {0} failed with {1}", Host.Name, failure.Message);
requiredDiskSpace = 0;
result = Host.call_plugin(Session, Host.opaque_ref, "disk-space", "get_required_space", args);
requiredDiskSpace = Convert.ToInt64(result);
}
catch (Failure failure)
{
log.WarnFormat("Plugin call disk-space.get_required_space on {0} failed with {1}", Host.Name, failure.Message);
requiredDiskSpace = 0;
}
}
// get available disk space
@ -136,7 +140,7 @@ namespace XenAdmin.Actions
// get reclaimable disk space (excluding current patch)
long reclaimableDiskSpace = 0;
if (availableDiskSpace < requiredDiskSpace)
if (availableDiskSpace < requiredDiskSpace && !Helpers.ElyOrGreater(Host)) // for ElyOrGreater we shouldn't call get_reclaimable_disk_space
{
try
{

View File

@ -188,6 +188,8 @@ namespace XenAdmin.Actions
}
catch (CancelledException)
{
CleanupFiles(extractTempDir, true);
throw;
}
catch (Exception exn)
@ -207,7 +209,7 @@ namespace XenAdmin.Actions
}
}
private void CleanupFiles(string extractTempDir)
private void CleanupFiles(string extractTempDir, bool deleteDestFile = false)
{
// We completed successfully: delete temporary files
log.Debug("Deleting temporary files");
@ -230,6 +232,18 @@ namespace XenAdmin.Actions
{
log.Warn("Could not delete temporary extracted files directory", exn);
}
try
{
if (deleteDestFile)
{
File.Delete(_destFile);
}
}
catch (Exception ex)
{
log.Warn("Could not delete destination file", ex);
}
}
/// <summary>

View File

@ -3601,7 +3601,7 @@
<value>yyyy年M月d日</value>
</data>
<data name="DATEFORMAT_HM" xml:space="preserve">
<value>HH:mm</value>
<value>tt h:mm</value>
</data>
<data name="DATEFORMAT_HMS" xml:space="preserve">
<value>HH:mm:ss</value>

View File

@ -399,7 +399,7 @@ namespace XenAdmin.Core
/// <summary>
/// Check whether all updates that request homogeneity are in fact homogeneous
/// across the proposed pool. This is used in CanJoinPool and prevents the pool from being created
/// between master and slave. This is used in CanJoinPool and prevents the pool from being created
/// </summary>
private static bool DifferentHomogeneousUpdates(Host slave, Host master)
{
@ -409,23 +409,10 @@ namespace XenAdmin.Core
if (!Helpers.ElyOrGreater(slave) || !Helpers.ElyOrGreater(master))
return false;
List<Host> allHosts = new List<Host>(master.Connection.Cache.Hosts);
allHosts.Add(slave);
var masterUpdates = master.AppliedUpdates().Where(update => update.enforce_homogeneity).Select(update => update.uuid).ToList();
var slaveUpdates = slave.AppliedUpdates().Where(update => update.enforce_homogeneity).Select(update => update.uuid).ToList();
// Collect the updates that should be homogeneous
var homogeneousUpdates = new Dictionary<string, int>();
foreach (var host in allHosts)
{
foreach (var update in (host.AppliedUpdates().Where(update => update.enforce_homogeneity)))
{
if (homogeneousUpdates.ContainsKey(update.uuid))
homogeneousUpdates[update.uuid]++;
else
homogeneousUpdates.Add(update.uuid, 1);
}
}
return homogeneousUpdates.Any(update => update.Value != allHosts.Count);
return masterUpdates.Count != slaveUpdates.Count || !masterUpdates.All(slaveUpdates.Contains);
}
private static bool SameLinuxPack(Host slave, Host master)

View File

@ -132,6 +132,24 @@ namespace XenAPI {
}
}
/// <summary>
/// Looks up a localized string similar to The host failed to enable external authentication..
/// </summary>
public static string AUTH_ENABLE_FAILED_INVALID_ACCOUNT {
get {
return ResourceManager.GetString("AUTH_ENABLE_FAILED_INVALID_ACCOUNT", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The host failed to enable external authentication..
/// </summary>
public static string AUTH_ENABLE_FAILED_INVALID_OU {
get {
return ResourceManager.GetString("AUTH_ENABLE_FAILED_INVALID_OU", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Failed to enable external authentication, permission on the AD server was denied..
/// </summary>
@ -2148,6 +2166,15 @@ namespace XenAPI {
}
}
/// <summary>
/// Looks up a localized string similar to This host has no PIF on the given network..
/// </summary>
public static string PIF_NOT_PRESENT {
get {
return ResourceManager.GetString("PIF_NOT_PRESENT", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Operation cannot proceed while a tunnel exists on this interface..
/// </summary>
@ -2256,6 +2283,15 @@ namespace XenAPI {
}
}
/// <summary>
/// Looks up a localized string similar to Failed to enable external authentication, the supplied account was invalid..
/// </summary>
public static string POOL_AUTH_ENABLE_FAILED_INVALID_ACCOUNT {
get {
return ResourceManager.GetString("POOL_AUTH_ENABLE_FAILED_INVALID_ACCOUNT", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The pool failed to enable external authentication..
/// </summary>
@ -2292,15 +2328,6 @@ namespace XenAPI {
}
}
/// <summary>
/// Looks up a localized string similar to Failed to enable external authentication, the supplied account was invalid..
/// </summary>
public static string POOL_AUTH_ENABLE_FAILED_INVALID_ACCOUNT {
get {
return ResourceManager.GetString("POOL_AUTH_ENABLE_FAILED_INVALID_ACCOUNT", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The external authentication configuration of the server joining the pool must match the pool&apos;s own external authentication configuration..
/// </summary>
@ -2355,6 +2382,24 @@ namespace XenAPI {
}
}
/// <summary>
/// Looks up a localized string similar to The host joining the pool must have the same API version as the pool master..
/// </summary>
public static string POOL_JOINING_HOST_MUST_HAVE_SAME_API_VERSION {
get {
return ResourceManager.GetString("POOL_JOINING_HOST_MUST_HAVE_SAME_API_VERSION", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The host joining the pool must have the same database schema as the pool master..
/// </summary>
public static string POOL_JOINING_HOST_MUST_HAVE_SAME_DB_SCHEMA {
get {
return ResourceManager.GetString("POOL_JOINING_HOST_MUST_HAVE_SAME_DB_SCHEMA", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The server joining the pool must have the same product version as the pool master..
/// </summary>
@ -3818,6 +3863,33 @@ namespace XenAPI {
}
}
/// <summary>
/// Looks up a localized string similar to Unable to activate changed block tracking..
/// </summary>
public static string SR_BACKEND_FAILURE_457 {
get {
return ResourceManager.GetString("SR_BACKEND_FAILURE_457", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Unable to deactivate changed block tracking..
/// </summary>
public static string SR_BACKEND_FAILURE_458 {
get {
return ResourceManager.GetString("SR_BACKEND_FAILURE_458", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Changed block tracking log is in an inconsistent state..
/// </summary>
public static string SR_BACKEND_FAILURE_459 {
get {
return ResourceManager.GetString("SR_BACKEND_FAILURE_459", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The VDI is not available.
/// </summary>
@ -4511,6 +4583,15 @@ namespace XenAPI {
}
}
/// <summary>
/// Looks up a localized string similar to Cannot contact the other host using TLS on the specified address and port.
/// </summary>
public static string TLS_CONNECTION_FAILED {
get {
return ResourceManager.GetString("TLS_CONNECTION_FAILED", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The request was rejected because the server is too busy..
/// </summary>
@ -5159,6 +5240,15 @@ namespace XenAPI {
}
}
/// <summary>
/// Looks up a localized string similar to VM cannot be resumed because it has no suspend VDI.
/// </summary>
public static string VM_HAS_NO_SUSPEND_VDI {
get {
return ResourceManager.GetString("VM_HAS_NO_SUSPEND_VDI", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to This operation could not be performed because the VM has one or more PCI devices passed through..
/// </summary>

View File

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ACTIVATION_WHILE_NOT_FREE" xml:space="preserve">
<value>An activation key can only be applied when the edition is set to 'free'.</value>
@ -859,7 +859,7 @@
<value>Failed to enable external authentication, a duplicate hostname was detected.</value>
</data>
<data name="POOL_AUTH_ENABLE_FAILED_INVALID_ACCOUNT" xml:space="preserve">
<value>The pool failed to enable external authentication.</value>
<value>Failed to enable external authentication, the supplied account was invalid.</value>
</data>
<data name="POOL_AUTH_ENABLE_FAILED_INVALID_OU" xml:space="preserve">
<value>The pool failed to enable external authentication.</value>
@ -873,9 +873,6 @@
<data name="POOL_AUTH_ENABLE_FAILED_WRONG_CREDENTIALS" xml:space="preserve">
<value>Failed to enable external authentication, the supplied credentials were invalid.</value>
</data>
<data name="POOL_AUTH_ENABLE_FAILED_INVALID_ACCOUNT" xml:space="preserve">
<value>Failed to enable external authentication, the supplied account was invalid.</value>
</data>
<data name="POOL_JOINING_EXTERNAL_AUTH_MISMATCH" xml:space="preserve">
<value>The external authentication configuration of the server joining the pool must match the pool's own external authentication configuration.</value>
</data>

View File

@ -153,10 +153,6 @@ namespace XenAPI
new Relation("hosts", "host", "updates"),
});
relations.Add(typeof(Proxy_PCI), new Relation[] {
new Relation("virtual_functions", "PCI", "physical_function"),
});
relations.Add(typeof(Proxy_Host), new Relation[] {
new Relation("features", "Feature", "host"),
new Relation("PGPUs", "PGPU", "host"),

View File

@ -37,7 +37,7 @@ echo "INFO: copyrightcheck"
dir="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
src="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )/../.." && pwd )"
output=$( /usr/bin/find "$src/XenAdmin" "$src/XenModel" "$src/XenOvfApi" "$src/XenOvfTransport" "$src/mk" "$src/Branding" "$src/XenServerHealthCheckTests" "$src/devtools" "$src/dotNetInstaller" -not -ipath '*obj/*' -type f \( -iname \*.cs -o -iname \*.sh \) -not -ipath '*Designer*' -exec grep -L "Copyright (c) Citrix Systems, Inc." {} \;)
output=$( /usr/bin/find "$src/XenAdmin" "$src/XenModel" "$src/XenOvfApi" "$src/XenOvfTransport" "$src/mk" "$src/Branding" "$src/XenServerHealthCheckTests" "$src/devtools" -not -ipath '*obj/*' -type f \( -iname \*.cs -o -iname \*.sh \) -not -ipath '*Designer*' -exec grep -L "Copyright (c) Citrix Systems, Inc." {} \;)
echo "$output" | sed -e "s,$src/,,g"

View File

@ -1,45 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (c) Citrix Systems, Inc.
All rights reserved.
Redistribution and use in source and binary forms,
with or without modification, are permitted provided
that the following conditions are met:
* Redistributions of source code must retain the above
copyright notice, this list of conditions and the
following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other
materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<configurations lcid_type="UserExe" show_language_selector="False" language_selector_title="" language_selector_ok="OK" language_selector_cancel="Cancel" configuration_no_match_message="" ui_level="basic" fileversion="[BRANDING_PRODUCT_VERSION].[BRANDING_BUILD_NUMBER]" productversion="[BRANDING_PRODUCT_VERSION]" log_enabled="False" log_file="#TEMPPATH\XenCenterExeInstallerLog.txt">
<schema version="2.3.16.0" generator="dotNetInstaller InstallerEditor" />
<fileattributes><fileattribute name="CompanyName" value="[BRANDING_COMPANY_NAME_LEGAL]" /><fileattribute name="FileDescription" value="[Citrix] [XenCenter] Installer" /><fileattribute name="ProductName" value="[Citrix] [XenCenter]" /><fileattribute name="LegalCopyright" value="[BRANDING_COPYRIGHT]"/><fileattribute name="LegalTrademarks" /></fileattributes>
<configuration dialog_caption="[Citrix] [XenCenter] Installer" dialog_message="In order to install [Citrix] [XenCenter] you must first install these components:" dialog_message_uninstall="" dialog_bitmap="#APPPATH\banner.bmp" skip_caption="Skip" install_caption="Install" uninstall_caption="Uninstall" cancel_caption="Close" status_installed=" (Installed)" status_notinstalled="" failed_exec_command_continue="" installation_completed="[Citrix] [XenCenter] installed successfully!" uninstallation_completed="[Citrix] [XenCenter] uninstalled successfully!" installation_none="[Citrix] [XenCenter] is already installed!" uninstallation_none="[Citrix] [XenCenter] is not installed!" installing_component_wait="Installing %s. Wait, this operation could take some time ..." uninstalling_component_wait="Uninstalling %s. Wait, this operation could take some time ..." reboot_required="To continue the installation you must restart your computer. Restart now?" must_reboot_required="False" dialog_otherinfo_caption="" dialog_otherinfo_link="" complete_command="" complete_command_silent="" complete_command_basic="" wait_for_complete_command="True" prompt_for_optional_components="False" auto_close_if_installed="True" auto_close_on_error="False" reload_on_error="False" dialog_show_installed="False" dialog_show_uninstalled="False" dialog_show_required="False" cab_dialog_message="%s" cab_cancelled_message="" cab_dialog_caption="" cab_path="#TEMPPATH\#GUID" cab_path_autodelete="False" dialog_default_button="cancel" dialog_position="" dialog_components_list_position="" dialog_message_position="" dialog_bitmap_position="" dialog_otherinfo_link_position="" dialog_osinfo_position="" dialog_install_button_position="" dialog_cancel_button_position="" dialog_skip_button_position="" auto_start="True" auto_continue_on_reboot="False" reboot_cmd="" show_progress_dialog="False" show_cab_dialog="False" disable_wow64_fs_redirection="False" administrator_required="False" administrator_required_message="[Citrix] [XenCenter] installation requires administration rights." type="install" lcid_filter="" language_id="" language="" os_filter="" os_filter_min="" os_filter_max="" processor_architecture_filter="" supports_install="True" supports_uninstall="True">
<component command="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /norestart" command_silent="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /passive /norestart" command_basic="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /norestart" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" working_directory="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="dotNetFx" display_name="Microsoft .NET Framework 4.6" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4.6 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.6" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False">
<installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Release" fieldvalue="393295" defaultvalue="False" fieldtype="REG_DWORD" comparison="version_ge" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="4.6 Installed Check" />
<embedfile sourcefilepath="NDP46-KB3045560-Web.exe" targetfilepath="" />
</component>
<component package="#CABPATH\[XenCenter].msi" cmdparameters=" " cmdparameters_silent="/passive" cmdparameters_basic=" " uninstall_package="" uninstall_cmdparameters="/qb-" uninstall_cmdparameters_silent="/qf" uninstall_cmdparameters_basic="/qb-" disable_wow64_fs_redirection="False" id="[XenCenter]" display_name="[Citrix] [XenCenter]" uninstall_display_name="" os_filter="" os_filter_min="" os_filter_max="" os_filter_lcid="" type="msi" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="True" selected_install="True" selected_uninstall="True" note="" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="True" show_progress_dialog="True" show_cab_dialog="False">
<embedfile sourcefilepath="[XenCenter].msi" targetfilepath="" />
</component>
</configuration>
</configurations>

View File

@ -1,62 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (c) Citrix Systems, Inc.
All rights reserved.
Redistribution and use in source and binary forms,
with or without modification, are permitted provided
that the following conditions are met:
* Redistributions of source code must retain the above
copyright notice, this list of conditions and the
following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other
materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<configurations lcid_type="UserExe" show_language_selector="False" language_selector_title="" language_selector_ok="OK" language_selector_cancel="Cancel" configuration_no_match_message="" ui_level="basic" fileversion="[BRANDING_PRODUCT_VERSION].[BRANDING_BUILD_NUMBER]" productversion="[BRANDING_PRODUCT_VERSION]" log_enabled="False" log_file="#TEMPPATH\XenCenterExeInstallerLog.txt">
<schema version="2.3.16.0" generator="dotNetInstaller InstallerEditor" />
<fileattributes><fileattribute name="CompanyName" value="[BRANDING_COMPANY_NAME_LEGAL]" /><fileattribute name="FileDescription" value="[Citrix] [XenCenter] Installer" /><fileattribute name="ProductName" value="[Citrix] [XenCenter]" /><fileattribute name="LegalCopyright" value="[BRANDING_COPYRIGHT]"/><fileattribute name="LegalTrademarks" /></fileattributes>
<configuration dialog_caption="[Citrix] [XenCenter] Installer" dialog_message="In order to install [Citrix] [XenCenter] you must first install these components:" dialog_message_uninstall="" dialog_bitmap="#APPPATH\banner.bmp" skip_caption="Skip" install_caption="Install" uninstall_caption="Uninstall" cancel_caption="Close" status_installed=" (Installed)" status_notinstalled="" failed_exec_command_continue="" installation_completed="[Citrix] [XenCenter] installed successfully!" uninstallation_completed="[Citrix] [XenCenter] uninstalled successfully!" installation_none="[Citrix] [XenCenter] is already installed!" uninstallation_none="[Citrix] [XenCenter] is not installed!" installing_component_wait="Installing %s. Wait, this operation could take some time ..." uninstalling_component_wait="Uninstalling %s. Wait, this operation could take some time ..." reboot_required="To continue the installation you must restart your computer. Restart now?" must_reboot_required="False" dialog_otherinfo_caption="" dialog_otherinfo_link="" complete_command="" complete_command_silent="" complete_command_basic="" wait_for_complete_command="True" prompt_for_optional_components="False" auto_close_if_installed="True" auto_close_on_error="False" reload_on_error="False" dialog_show_installed="False" dialog_show_uninstalled="False" dialog_show_required="False" cab_dialog_message="%s" cab_cancelled_message="" cab_dialog_caption="" cab_path="#TEMPPATH\#GUID" cab_path_autodelete="False" dialog_default_button="cancel" dialog_position="" dialog_components_list_position="" dialog_message_position="" dialog_bitmap_position="" dialog_otherinfo_link_position="" dialog_osinfo_position="" dialog_install_button_position="" dialog_cancel_button_position="" dialog_skip_button_position="" auto_start="True" auto_continue_on_reboot="False" reboot_cmd="" show_progress_dialog="False" show_cab_dialog="False" disable_wow64_fs_redirection="False" administrator_required="False" administrator_required_message="[Citrix] [XenCenter] installation requires administration rights." type="install" lcid_filter="" language_id="" language="" os_filter="" os_filter_min="" os_filter_max="" processor_architecture_filter="" supports_install="True" supports_uninstall="True">
<!-- ja-jp -->
<component command="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /norestart" command_silent="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /passive /norestart" command_basic="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /norestart" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="Microsoft .NET Framework 4.6" display_name="Microsoft .NET Framework 4.6" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="1041" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4.6 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.6 (Install check)" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False">
<installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Release" fieldvalue="393295" defaultvalue="False" fieldtype="REG_DWORD" comparison="version_ge" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="4.6 Installed Check" />
<embedfile sourcefilepath="NDP46-KB3045560-Web.exe" targetfilepath="" />
</component>
<!-- zh-cn -->
<component command="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /norestart" command_silent="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /passive /norestart" command_basic="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /norestart" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="Microsoft .NET Framework 4.6" display_name="Microsoft .NET Framework 4.6" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="2052" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4.6 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.6 (Install check)" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False">
<installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Release" fieldvalue="393295" defaultvalue="False" fieldtype="REG_DWORD" comparison="version_ge" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="4.6 Installed Check" />
<embedfile sourcefilepath="NDP46-KB3045560-Web.exe" targetfilepath="" />
</component>
<!-- zh-tw -->
<component command="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /norestart" command_silent="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /passive /norestart" command_basic="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /norestart" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="Microsoft .NET Framework 4.6" display_name="Microsoft .NET Framework 4.6" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="1028" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4.6 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.6 (Install check)" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False">
<installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Release" fieldvalue="393295" defaultvalue="False" fieldtype="REG_DWORD" comparison="version_ge" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="4.6 Installed Check" />
<embedfile sourcefilepath="NDP46-KB3045560-Web.exe" targetfilepath="" />
</component>
<!-- all others: en -->
<component command="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /norestart" command_silent="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /passive /norestart" command_basic="&quot;#CABPATH\NDP46-KB3045560-Web.exe&quot; /norestart" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="Microsoft .NET Framework 4.5.2" display_name="Microsoft .NET Framework 4.6" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="!1041,!2052,!1028" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4.6 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.6 (Install check)" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False">
<installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Release" fieldvalue="393295" defaultvalue="False" fieldtype="REG_DWORD" comparison="version_ge" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="4.6 Installed Check" />
<embedfile sourcefilepath="NDP46-KB3045560-Web.exe" targetfilepath="" />
</component>
<!-- XenCenter msi -->
<component package="#CABPATH\[XenCenter].msi" cmdparameters=" " cmdparameters_silent="/passive" cmdparameters_basic=" " uninstall_package="" uninstall_cmdparameters="/qb-" uninstall_cmdparameters_silent="/qf" uninstall_cmdparameters_basic="/qb-" disable_wow64_fs_redirection="False" id="[XenCenter]" display_name="[Citrix] [XenCenter]" uninstall_display_name="" os_filter="" os_filter_min="" os_filter_max="" os_filter_lcid="" type="msi" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="True" selected_install="True" selected_uninstall="True" note="" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="True" show_progress_dialog="True" show_cab_dialog="True">
<embedfile sourcefilepath="[XenCenter].l10n.msi" targetfilepath="[XenCenter].msi" />
</component>
</configuration>
</configurations>

View File

@ -29,5 +29,5 @@
; SUCH DAMAGE.
[AutoRun]
shellexecute=[XenCenter]Setup.exe
shellexecute=[XenCenter].msi
icon=[XenCenter].ico

View File

@ -125,20 +125,8 @@ cd ${WIX} && wscript WiSubStg.vbs ${BRANDING_BRAND_CONSOLE}.l10n.msi zh-tw.mst 1
#sign again the combined msi because it seems the embedding breaks the signature
cd ${WIX} && chmod a+rw ${BRANDING_BRAND_CONSOLE}.l10n.msi && ${REPO}/sign.bat ${BRANDING_BRAND_CONSOLE}.l10n.msi
#create bundle exe installers - msi installers embedded
cp ${WIX}/out${BRANDING_BRAND_CONSOLE}/${BRANDING_BRAND_CONSOLE}.msi ${DOTNETINST}
cp ${WIX}/${BRANDING_BRAND_CONSOLE}.l10n.msi ${DOTNETINST}
cd ${DOTNETINST} && ./InstallerLinker.exe "/Output:${BRANDING_BRAND_CONSOLE}Setup.exe" "/Template:dotNetInstaller.exe" "/Configuration:XenCenterSetupBootstrapper.xml" "/e+" "/v+"
cd ${DOTNETINST} && ./InstallerLinker.exe "/Output:${BRANDING_BRAND_CONSOLE}Setup.l10n.exe" "/Template:dotNetInstaller.exe" "/Configuration:XenCenterSetupBootstrapper_l10n.xml" "/e+" "/v+"
sign_files()
{
for file in $1
do
chmod a+rw ${file} && ${REPO}/sign.bat ${file}
done
}
sign_files "${BRANDING_BRAND_CONSOLE}Setup.exe ${BRANDING_BRAND_CONSOLE}Setup.l10n.exe"
#copy the msi installers
cp ${WIX}/out${BRANDING_BRAND_CONSOLE}/${BRANDING_BRAND_CONSOLE}.msi ${OUTPUT_DIR}
cp ${WIX}/${BRANDING_BRAND_CONSOLE}.l10n.msi ${OUTPUT_DIR}
set +u

View File

@ -36,7 +36,6 @@ ROOT="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )/../.." && pwd )"
REPO="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )"
OUTPUT_DIR=${ROOT}/output
DOTNETINST=${REPO}/dotNetInstaller
BRANDING_BRAND_CONSOLE=[XenCenter]
BRANDING_COMPANY_NAME_SHORT=[Citrix]
@ -53,6 +52,8 @@ mkdir_clean()
rm -rf $1 && mkdir -p $1
}
mkdir_clean ${OUTPUT_DIR}
#overwrite sign file
SIGN_FILE=${ROOT}/sign.bat
if [ -f ${SIGN_FILE} ]; then
@ -63,10 +64,6 @@ fi
echo "INFO: Build and sign the installers..."
. ${REPO}/mk/build-installers.sh
#collect output and extra files to the OUTPUT_DIR
cp ${DOTNETINST}/${BRANDING_BRAND_CONSOLE}Setup.exe ${OUTPUT_DIR}
cp ${DOTNETINST}/${BRANDING_BRAND_CONSOLE}Setup.l10n.exe ${OUTPUT_DIR}
echo "INFO: Build phase succeeded at "
date

View File

@ -162,10 +162,6 @@ rebranding_global ${REPO}/XenOvfApi/app.config
RESX_rebranding ${REPO}/XenOvfTransport/Messages
rebranding_global ${REPO}/XenOvfTransport/app.config
#dotNetInstaller
rebranding_global ${REPO}/dotNetInstaller/XenCenterSetupBootstrapper.xml
rebranding_global ${REPO}/dotNetInstaller/XenCenterSetupBootstrapper_l10n.xml
#mk
rebranding_global ${REPO}/mk/ISO_files/AUTORUN.INF
rebranding_global ${REPO}/mk/package-and-sign.sh

View File

@ -120,13 +120,6 @@ version_installer()
version_installer ${WIX}/XenCenter.wxs
version_installer ${WIX}/XenCenter.l10n.wxs
#copy dotNetInstaller files
DOTNETINST=${REPO}/dotNetInstaller
cd ${DOTNETINST}
DOTNETINSTALLER_FILEPATH="$(which dotNetInstaller.exe)"
DOTNETINSTALLER_DIRPATH=${DOTNETINSTALLER_FILEPATH%/*}
cp -R "${DOTNETINSTALLER_DIRPATH}"/* ${DOTNETINST}
echo "INFO: Collecting unsigned files..."
mkdir_clean ${OUTPUT_DIR}/XenAdminUnsigned
cp -R ${REPO}/* ${OUTPUT_DIR}/XenAdminUnsigned
@ -156,22 +149,20 @@ cp ${REPO}/XenAdmin/bin/Release/{CommandLib.pdb,${BRANDING_BRAND_CONSOLE}.pdb,Xe
ISO_DIR=${SCRATCH_DIR}/iso-staging
mkdir_clean ${ISO_DIR}
install -m 755 ${DOTNETINST}/${BRANDING_BRAND_CONSOLE}Setup.exe ${ISO_DIR}/${BRANDING_BRAND_CONSOLE}Setup.exe
install -m 755 ${OUTPUT_DIR}/${BRANDING_BRAND_CONSOLE}.msi ${ISO_DIR}/${BRANDING_BRAND_CONSOLE}.msi
cp ${REPO}/mk/ISO_files/AUTORUN.INF ${ISO_DIR}
cp ${REPO}/Branding/Images/AppIcon.ico ${ISO_DIR}/${BRANDING_BRAND_CONSOLE}.ico
#CP-18097
tar cjf ${OUTPUT_DIR}/${BRANDING_BRAND_CONSOLE}.installer.tar.bz2 -C ${ISO_DIR} .
install -m 755 ${DOTNETINST}/${BRANDING_BRAND_CONSOLE}Setup.exe ${OUTPUT_DIR}/${BRANDING_BRAND_CONSOLE}Setup.exe
L10N_ISO_DIR=${SCRATCH_DIR}/l10n-iso-staging
mkdir_clean ${L10N_ISO_DIR}
# -o root -g root
install -m 755 ${DOTNETINST}/${BRANDING_BRAND_CONSOLE}Setup.l10n.exe ${L10N_ISO_DIR}/${BRANDING_BRAND_CONSOLE}Setup.exe
install -m 755 ${OUTPUT_DIR}/${BRANDING_BRAND_CONSOLE}.l10n.msi ${L10N_ISO_DIR}/${BRANDING_BRAND_CONSOLE}.msi
cp ${REPO}/mk/ISO_files/AUTORUN.INF ${L10N_ISO_DIR}
cp ${REPO}/Branding/Images/AppIcon.ico ${L10N_ISO_DIR}/${BRANDING_BRAND_CONSOLE}.ico
#CP-18097
tar cjf ${OUTPUT_DIR}/${BRANDING_BRAND_CONSOLE}.installer.l10n.tar.bz2 -C ${L10N_ISO_DIR} .
install -m 755 ${DOTNETINST}/${BRANDING_BRAND_CONSOLE}Setup.l10n.exe ${OUTPUT_DIR}/${BRANDING_BRAND_CONSOLE}Setup.l10n.exe
#now package the pdbs
cd ${OUTPUT_DIR} && tar cjf XenCenter.Symbols.tar.bz2 --remove-files *.pdb