Release Notes for XE2 Update 2

From RAD Studio XE2
Jump to: navigation, search

Go Up to What's New in Delphi and C++Builder XE2

This file contains important supplementary information that might not appear in the main product documentation. Embarcadero Technologies recommends that you read this file in its entirety.

This document refers to "the product" when the information applies to RAD Studio XE2 or to either or both of the two personalities: Delphi XE2 and C++Builder XE2.

For general information about installation, deployment, and licensing, see the Install, Deploy, and License files located, by default, at C:\Program Files\Embarcadero\RAD Studio\9.0.


Obtaining This Update

Delphi and C++Builder XE2 Update 2 is an MSI-based patch that is delivered with installers for FireMonkey-iOS tools and the Platform Assistant, as well as updated style files. For instructions for installing these files, see Contents of Update 2 and Instructions for Installation.

This update can be applied only over the following products:

  • Delphi XE2 Update 1
  • C++Builder XE2 Update 1
  • RAD Studio XE2 Update 1

You can install this update in any of the following three ways:

  • Upgrading via the Automatic Upgrade Mechanism
  • Manually Checking for Updates
  • Downloading from the Registered Users Web Page

Upgrading via the Automatic Upgrade Mechanism

If you selected "Check for Updates Automatically" when you installed the product, you should automatically be notified when an update is available for download. Click the notification and follow the instructions to download and install the Update.


Manually Checking for Updates

If you do not receive an automatic notification about the update, you can check for updates manually:

  1. Select Start | Programs | Embarcadero RAD Studio XE2 | Check for updates.
  2. In the list of available updates, select RAD Studio XE2 Update 2.

Downloading from the Registered Users Web Page

Update 2 is also available for download from the registered users download pages as follows:



Download <delphicbuilder_xe2_upd2.zip> to your computer and extract the zip file to install the update.

Note: This update process might take fifteen minutes or more to complete. You should avoid stopping the Update installation after it has started.


Uninstalling This Update

If you need to uninstall the update, you must uninstall the entire product and reinstall the XE2 Update 1 inline build. It is not possible to uninstall only the update.

Contents of Update 2 and Instructions for Installation

Installing the XE2 Update 2

When you open Update 2, the update is immediately extracted to your %TEMP% folder, and installation of the update follows automatically.

After the update is extracted and installed, Windows Explorer appears, displaying the following four folders. Each folder contains items that you should potentially install or extract by following the instructions given after the table:

Folder Name Contents

Update2

Contains:

  • The installer for Update 2 (delphicbuilder_xe2_up2.exe)
  • The localized Readme files (for example, this file, ReadmeXE2Update2_en.htm).

The Update 2 installer runs automatically when you open the update itself.

PAServer

Contains updated Platform Assistant files (including PAserver.exe). The Update 2 installer does not install these files for you. See Installing the Platform Assistant Update.

FireMonkey-iOS

Contains an updated FireMonkey-iOS disk image (FireMonkey-iOS.dmg), which contains the updated FireMonkey-iOS-XE2 installer. The Update 2 installer does not install these files for you. See Installing the FireMonkey Tools Update.

Styles

Contains updated style files. The Update 2 installer does not install these files for you. See Installing the Style Updates.



Note: During the Update 2 patch install, you might see an error message stating "Insufficient privileges to modify bds.exe...". If so, click Retry, and the update install will continue.

Installing the Platform Assistant Update

To uninstall the Platform Assistant:

  • On Windows, use Uninstall PAServer.exe to uninstall the Platform Assistant.
  • On the Mac, use the Uninstall command to uninstall the Platform Assistant.

Note: The Uninstall programs are located in the installation directory for the Platform Assistant on the PC and on the Mac.

To install the updated Platform Assistant:

  • On Windows, double-click PAServer.exe.
  • On the Mac, move the PAServer.zip file to the Mac and double-click PAServer.zip.

See Installing and Running the Platform Assistant (paserver) on the Target Platform.

Installing the FireMonkey Tools Update

To install the updated FireMonkey-iOS tools:

  1. Transfer the FireMonkey-iOS.dmg disk image file to the Mac.
  2. Double-click FireMonkey-iOS.dmg.

For more information, see:

Note: This installer is now compatible with Xcode 4.2. Note that while Xcode 4.2 includes the iOS 5.0 SDK, the new features of iOS 5 are not supported. FireMonkey applications can be deployed to devices running iOS 5.

Installing the Style Updates

To install the updated style files: Extract the style files from the Styles folder to your system.

By default, style files are saved in C:\Users\Public\Documents\RAD Studio\9.0\Styles.

General Notes

Bug List for Update 2

For a complete list of the specific problems fixed in this update, see the "Bug Fixes in Delphi and C++Builder XE2 Update 2" at: http://edn.embarcadero.com/en/article/41750/

Required Recompile for FireMonkey Packages

The version number has changed for the following five FireMonkey packages (the version number has changed to 161; the original XE2 version number is 160):


  • fmi161.bpl
  • fmx161.bpl
  • fmxase161.bpl
  • fmxdae161.bpl
  • fmxobj161.bpl

Only these five packages are directly involved in the version change. However, this change will indirectly affect any of your packages that require any of the five packages listed above. All packages that require any of these five packages must be recompiled.

The version 161 packages are not compatible with the existing version 160 packages of the same name in the same appilcation. If you use version 160 of any of these five packages in your applications, you need to recompile the applications using Update 2 (then your application will use the version 161 packages of these five FireMonkey packages).


If you attempt to install into the IDE any package that contains version 160 of any of these FireMonkey packages, you will see the following error message:


Package PACKAGENAME must be recompiled before it can be installed.

If you see this error message, recompile the version 160 package in the IDE (or obtain an updated version of the package).


What You Need to Do:

  • To verify the version number of the packages that are loaded in the IDE, open Help > About Embarcadero RAD Studio, and click the Version Info button.


  • To determine whether a package requires recompiling:
    • Examine the .dpk file for your package. If you see any of these five FMX packages listed in the requires section, then you need to recompile your package one time before you install it.
    • Use TDump.exe on the .bpl file. If you see any of the five packages listed in the import section of the output, then you know that you cannot install that package and need to rebuild it.


FMX Types and Methods Added or Modified

Fmx.Bind.Editors.pas:

  • TBaseListBoxItemEditorObject

System.Bindings.Consts.pas:

  • sNilToVariant
  • sNilTovariantDesc
  • sToNotifyEventDesc

FMX.Import.pas:

  • PGEVertex
  • SetLocalPath
  • TGEVertexSource.SetTextue0Source

FMX.Types.pas:

  • TTextService
  • TTextServiceClass
  • TVirtualKeyboardType
  • IVirtualKeyboardControl
  • GetDefaultBitmapCodec
  • TBitmapCodec.GetDefaultBitmapCodec
  • TCanvas.GetDefaultCanvas
  • TImeMode
  • ITextServiceControl

FMX.Consts.pas:

  • SControllerIdNotFoundError

FMX.Edit.pas:

  • TCustomEdit.GetCaretPosition
  • TCustomEdit.GetKeyboardType
  • TCustomEdit.GetNextCharacter
  • TCustomEdit.GetPrevCharacter
  • TCustomEdit.GetText
  • TCustomEdit.GetTextPoint
  • TCustomEdit.GetTextService
  • TCustomEdit.SetKeyboardType
  • TCustomEdit.UpdateCaretPoint
  • TCustomEdit.GetImeMode
  • TCustomEdit.SetImeMode

FMX.Filter.pas:

  • TFilter.FilterAttrForClass

FMX.Forms.pas:

  • TApplication.DoIdle
  • TCommonCustomForm.SetActive

FMX.Memo.pas:

  • TMemo.GetKeyboardType
  • TMemo.GetText
  • TMemo.GetTextPoint
  • TMemo.GetTextService
  • TMemo.SetKeyboardType
  • TMemo.UpdateCaretPoint
  • TMemo.GetImeMode
  • TMemo.SetImeMode

FMX.Types3D.pas:

  • AxisRotationToMatrix3D
  • RayCastCuboidIntersect
  • RayCastEllipsoidIntersect
  • RayCastTriangleIntersect
  • TControl3D.PaintToBitmap

FMX.ASE.Model.pas:

  • TAseModel.ParseNormalList

FMX.DAE.Model.pas:

  • TDAESurface
  • TDAEExporter
  • TDAEVertices
  • TDAEController
  • PDAEVertexSource
  • TDAESurfaceArray
  • TSourceSemantics
  • TDAEControllerDynArray
  • TDAEModel.AddNode
  • TDAEModel.FindControllerById
  • TDAEModel.FindNodeUrls
  • TDAEModel.GetController
  • TDAEModel.GetVertexSource
  • TDAEModel.ImportExporter
  • TDAEModel.ImportFromControllersLib
  • TDAEModel.LoadPolygons
  • TDAEModel.LoadTriangles

FMX.OBJ.Model.pas:

  • TOBJMesh
  • TOBJModel.ReadSmoothGroup

FMX.Controls.pas:

  • TSwitch
  • TCustomTrack.EndTracking

FMX Types and Methods Removed

FMX.Edit.pas:

  • TCustomEdit.SetMarkedText

FMX.Forms.pas:

  • TCommonCustomForm.SetMarkedText
  • TCommonCustomForm.SetIsActive

FMX.Memo.pas:

  • TMemo.SetMarkedText

FMX.Types3D.pas:

  • MakeReflectionMatrix
  • MakeShadowMatrix
  • RayCastIntersectsSphere

FMX.Types.pas:

  • VectorCombine
  • IIMENotification

FMX.DAE.Model.pas:

  • TDAEVisualScene

New Defined Constant for FireMonkey Version

A constant has been added to FMX.Types.pas to help identify and separate code for version 161 of FireMonkey:

        FireMonkeyVersion = 16.1

For example, to identify code that is for any version higher than 16.0, surround the code with the following conditional directive:

Delphi:

 {$IF Declared(FireMonkeyVersion) and (FireMonkeyVersion > 16.0)}
  ...
 {$IFEND}

Files Required for Deploying OS X Applications Created by XE2 Trial Versions

In the Trial Editions for Delphi and C++Builder XE2, you might not be able to deploy your OSX applications.

To enable the necessary files for redistribution, use the following workaround:


  • For Delphi XE2 Trial:
    1. Copy the file libcgunwind.1.0.dylib
      from this location: C:\Program Files\Embarcadero\RAD Studio\9.0\lib\osx32\release
      to this location: C:\Program Files\Embarcadero\RAD Studio\9.0\redist\osx32\
    2. For an existing project where deployment has failed:
      • Project > Deployment
      • Click the Reconcile (DMgrReconcile.png) button in the toolbar and try running the project again.
  • For C++Builder XE2 Trial:
    1. Copy the following three files: libcgunwind.1.0.dylib, libcgstl.dylib, and libcgcrtl.dylib
      from this location: C:\Program Files\Embarcadero\RAD Studio\9.0\lib\osx32\release
      to this location: C:\Program Files\Embarcadero\RAD Studio\9.0\redist\osx32
    2. For an existing project where deployment has failed:
      • Project > Deployment
      • Click the Reconcile (DMgrReconcile.png) button in the toolbar and try running the project again.

Workaround for Internal Build Failure

Description: In some cases, the IDE is unable to build new projects without first saving the project to a different directory. If the project is first saved to a different directory, the project builds fine.

Steps:

  1. File > New > <any application type>
  2. Project > Build

Result: Compilation fails with error. The Output tab in the Messages View displays the following:

Checking project dependencies...
[MSBuild Error] The build was aborted because of an internal failure.
System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Windows\system32\Projects'.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.SetCurrentDirectory(String path)
   at Microsoft.Build.BuildEngine.Engine.SetBuildItemCurrentDirectory(Project project)
   at Microsoft.Build.BuildEngine.Engine.BuildProjectInternal(BuildRequest buildRequest, ProjectBuildState buildContext,   TaskExecutionContext taskExecutionContext, Boolean initialCall)
   at Microsoft.Build.BuildEngine.Engine.EngineBuildLoop(BuildRequest terminatingBuildRequest)
   at Microsoft.Build.BuildEngine.Engine.PostProjectEvaluationRequests(Project project, String[] projectFiles, String[][] targetNames, BuildPropertyGroup[] globalPropertiesPerProject, IDictionary[] targetOutputsPerProject, BuildSettings buildFlags, String[] toolVersions)   
[Fatal Error] Could not find a part of the path 'C:\Windows\system32\Projects'


Solution:

  1. Open regedit.exe (if you are not comfortable editing the system registry please contact Customer Support).
  2. Navigate to the key HKEY_CURRENT_USER\Software\Embarcadero\BDS\9.0\Globals.
  3. Edit, or add, the string value DefaultProjectsDir so that the value is a writable directory, such as "C:\Users\<username>\Documents\RAD Studio\Projects".
  4. Restart the IDE.

C++ Console Applications that Use Delphi RTL Must Explictly Link to Delphi RTL

When you create a C++ console application using the C++ Console Application wizard, you have the choice to include a framework (either VCL or FMX). If you do not choose either framework, you have some limitations, such as the following things that you cannot do:

If you subsequently attempt to do any of these, the following linker error message appears:

Unresolved external 'symbol' referenced from 'module'

However, you can still enable Delphi RTL functions in your C++ console application, even if you did not specify a framework (either FMX or VCL) in the New Console Application wizard:

  1. Go to Project > Options > C++ Linker and enable Link with the Delphi Runtime Library.
  2. #include System.hpp (or some other header that includes System.hpp) from one of the sources files of the project. Otherwise vcle.lib (or rtle.a on OS X) will not be linked in, resulting in a different set of unresolved external error messages from the linker.

If your console application uses a VCL or FMX type, you should not use the Link with Delphi Runtime Library option. For example, if your code uses Vcl.Graphics.TColor, you must recreate the console application and specify VCL as the framework.

Initialize GDI+ in Main Application, not in DLL

If you attempt to initialize GDI+ in a DLL, an access violation occurs. This error is caused by GDI+ not being properly initialized. The GDI+ startup routine cannot be called from the DLL startup code. Do not call GdiplusStartup or GdiplusShutdown in DllMain or in any function that is called by DllMain.

To create a DLL that uses GDI+, you need to start up GDI+ from your host application instead, as follows:

  • For Delphi, add Winapi.GDIPOBJ to the interface section uses clause of your main form unit.
  • For C++, add #include <gdiplus.h> to your host application and call GdiplusStartup and GdiplusShutdown as appropriate.

For more information, see MSDN.

See Also

Copyright 2011 Embarcadero Technologies. All rights reserved.