This page provides important information for users of the Ice binary distributions on Windows platforms.
On this page:
Ice 3.7 provides the following binary distributions for Windows:
The table below shows which distribution(s) you should install depending on your needs.
Activity | Compiler or Environment | Distribution to Install | Files Installed |
---|---|---|---|
Develop C++ desktop applications | Visual Studio 2010 Visual Studio 2013 Visual Studio 2015 Visual Studio 2017 Visual Studio 2019 Visual Studio 2022 | zeroc.ice.v100 zeroc.ice.v120 zeroc.ice.v140 zeroc.ice.v141 zeroc.ice.v142 zeroc.ice.v143 | The complete Ice C++ SDK for the selected compiler, with x86, x64, Debug and Release binaries All Slice compilers (slice2cpp, slice2cs, slice2java, etc.) All Ice services (Glacier2, IceBridge, IceGrid, IcePatch2, IceStorm), and the associated command-line utility tools (icegridadmin, icestormadmin, etc.) |
Develop C# or other .NET applications | Visual Studio 2013, 2015, 2017, 2019 or 2022 .NET 6 SDK, .NET Core 2.1 SDK, .NET Framework 4.5.1 | zeroc.ice.net | The complete Ice C# /.NET SDK, including |
Develop PHP applications | PHP 7.1, 7.2, 7.3, 8.0 | Ice MSI | The IceGrid GUI admin tool All the Slice compilers (slice2java, slice2php, etc.) All the Ice Slice files The Ice for PHP extension All Ice services (Glacier2, IceBridge, IceGrid, IcePatch2, IceStorm), and the associated command-line utility tools (icegridadmin, icestormadmin, etc.) (x64 Release only) |
Develop Java applications | JDK 8, JDK 11, JDK 17 | Ice MSI | |
Administer IceGrid deployments | Ice MSI | ||
Deploy Ice services (Glacier2, IceBridge, IceGrid, IcePatch2, IceStorm) | Ice MSI |
If you are developing applications with Visual Studio, you should also install Ice Builder for Visual Studio. |
Ice MSI Ice NuGet packages |
Follow these steps to install Ice NuGet packages on your computer.
packages
folder next to your Solution file and configure the selected project to use it.The screenshot above shows a solution with a C# project. The process is the same with C++ projects. |
If you are using Ice Builder, you also need to add |
The ZeroC symbol server, https://symbols.zeroc.com, provides debug symbols for the C++ binaries included in the NuGet packages published by ZeroC.
To use this symbol server, add its URL on Visual Studio's Symbols page:
Check "Enable source server support" in Visual Studio's debugging options to allow Visual Studio to fetch the corresponding source code. |
Ice C++ applications can print stack traces for Ice exceptions, which can be very helpful for debugging. In order to get usable stack traces, you need to install the corresponding Ice debug symbols in a local folder, and configure your system to look for debug symbols in this folder. We recommend you do the following:
Add these tools to your PATH, for example:
set PATH=C:\Program Files (x86)\Windows Kits\10\Debuggers\x64;%PATH% |
Download the debug symbols of your Ice NuGet package(s) to your local SymbolCache
folder, with the symchk
tool included in the Debugging Tools for Windows. For example:
symchk /v /r packages\zeroc.ice.v140.3.7.8\build\native\bin\* /s SRV*%TEMP%\SymbolCache*https://symbols.zeroc.com |
(remove the /v
option for a quieter output)
This copies debug symbols for all the binaries in the selected NuGet packages to %TEMP%\SymbolCache
. %TEMP%\SymbolCache
is also the default symbol cache folder for Visual Studio. This folder can cache symbols for any number of NuGet packages, in particular the debug symbols of different versions of the same package.
Set the environment variable _NT_SYMBOL_PATH to point to this local SymbolCache
folder, for example:
set _NT_SYMBOL_PATH=%TEMP%\SymbolCache |
Once you've installed the Ice NuGet package into a C++ project as shown earlier, this project will find automatically all Ice C++ header files and import libraries. If you add zeroc.icebuilder.msbuild
to this C++ project, Ice Builder will take care of compiling the Slice files in this project with slice2cpp (it uses the slice2cpp installed from the NuGet package).
Moreover, the Debugger Path is set and you can run your application directly from Visual Studio - there is no need to set any additional environment variables.
Occasionally, you may want to run your application outside Visual Studio, or use one of the Ice services or Ice tools included installed by the NuGet package. To do so, add the NuGet package's bin
folder to your PATH
.
The zeroc.ice.v<version> package is installed in the
With this example, you could set your PATH to:
|
Your application must be compiled with the same flags as the Ice libraries:
/MD /EHsc
/MDd /EHsc
Add ICE_CPP11_MAPPING
to the project preprocessor definitions if you want to use the Ice C++11 mapping. Without this definition, you will use the Ice C++98 mapping.
With Ice Builder for Visual Studio, the preferred way to select the C++ mapping is through an Ice Builder property. |
You don't need to list Ice import libraries such as iceD.lib
when linking with Ice libraries. See Linking with C++ Libraries on Windows for additional details.
The following table shows the Ice C++ NuGet package layout:
Folder | Description |
---|---|
build\native\include | C++ header files |
build\native\lib\<Platform>\<Configuration> | C++ import libraries |
build\native\bin\<Platform>\<Configuration> | C++ binaries (excluding Slice compilers) |
tools | slice2xxx compilers |
build\native | Visual Studio property and target files |
slice | Slice files |
Installing the NuGet package imports the property and target files from the build\native
folder into the project. The property file defines properties used by Ice Builder; you can also use them in custom build steps.
The table below presents these properties:
Name | Value | Description |
---|---|---|
IceVersion | 3.7.8 | Ice string version |
IceIntVersion | 30708 | Ice version as a numeric value |
IceVersionMM | 3.7 | Major Minor version |
IceSoVersion | 37 | Version used in dynamic libraries |
IceNugetPackageVersion | 3.7.8 | NuGet package version |
IceHome | $(MSBuildThisFileDirectory)..\.. | Full path to the package root folder |
IceToolsPath | $(IceHome)\tools | Full path to the folder of the Slice compilers |
The targets file configures the C++ Additional Include Directories and Additional Library Directories to locate C++ headers and import libraries in the package's include and lib folders.
The NuGet package automatically adds its
|
Please refer to Building Ice Applications for .NET.
The MSI distribution includes all the components required to develop Ice for PHP applications on Windows, including PHP and Slice source files, the slice2php compiler and the Ice for PHP extension. The MSI installer detects the PHP installations on your computer and allows you to select where to install the Ice for PHP extension:
For each PHP version you select, the installer copies the Ice for PHP extension to the extensions
folder and updates the php.ini
configuration file to load the extension; it also modifies include_path
to include the Ice for PHP folder. The following lines are added to php.ini
:
[PHP_ZEROC_ICE] extension=php_ice_nts.dll include_path=${include_path}";C:\Program Files\ZeroC\Ice-3.7.8\php" |
The Ice MSI includes both x86 and x64 versions of the Ice for PHP extension built with the PHP 7.1, PHP 7.2, PHP 7.3 and PHP 8.0 NTS libraries.
The config
subdirectory of the Ice MSI installation includes sample configuration files for the Glacier2 router, IceGrid node, and IceGrid registry. These files provide a good starting point on which to base your own configurations, and they contain comments that describe the settings in detail.
The Ice manual provides more information on installing and running the IceGrid registry, IceGrid node, and Glacier2 router as Windows services.
You can launch IceGrid GUI using the shortcut that the Ice MSI installer created in your Start menu as IceGrid GUI. IceGrid GUI is a Java-based application.
The Ice MSI installer supports unattended installation. For example, in an administrative command window you can run:
start /wait Ice-3.7.8.msi /qn /l*v install.log |
Windows may prompt you to confirm the installation, otherwise the installer runs using its default configuration (i.e., default installation folder, adds the installation's bin
folder to the system PATH, and installs the PHP extension for the PHP installations it detects) but without any user interface. The installer will create a log of its activities in the file install.log
.
The Ice MSI installer adds information to the Windows registry to indicate where it was installed. Developers can use this information to locate the Ice files in their applications.
The registration key used by this installer is:
HKEY_LOCAL_MACHINE\SOFTWARE\ZeroC\Ice 3.7.8
The install location is stored as a string value named InstallDir
.
The Ice sample programs are provided in ice-demos GitHub repository. You can browse this repository to see build and usage instructions for all supported programming languages.
Clone the ice-demos repository as follows:
git clone -b 3.7 https://github.com/zeroc-ice/ice-demos.git cd ice-demos |