ICE | Brief description of ICE |
ICE01: | Simple test of ICE mechanism. |
ICE02: | Circular reference test for File-Component, Registry-Component KeyPaths. |
ICE03: | Basic data and foreign key validation. |
ICE04 | Validates file sequence numbers against the Media table's LastSequence numbers. |
ICE05 | Validates for "required" entries in particular tables. |
ICE06 | Validates for missing column or tables in the database. Any column defined in the _Validation table must be found in the database. |
ICE07 | Validates that fonts are installed to the FontsFolder |
ICE08 | Checks for duplicate GUIDs in the ComponentId column of the Component table. |
ICE09 | Validates that the permanent bit is set for every component marked for installation into the SystemFolder. |
ICE10 | Ensures that advertise feature states among children and parents are compatible. |
ICE11 | ICE11 validates the Source column of the Custom Action table for Nested Installation custom actions. The Source column must contain a valid GUID (MSI product code). |
ICE12 | Validates type 35 and type 51 custom actions and their locations in the sequence tables. |
ICE13 | Validates that dialogs are not listed as actions in the execute sequence tables. Dialog actions are only allowed in the user interface sequence tables. |
ICE14 | Validates that feature parents do not have msidbFeatureAttributesFollowParent bit set. Also validates that the entries in the Feature and Feature_Parent columns are not the same in the same record. |
ICE15 | Validates that a circular reference exists between every entry in the MIME table and the corresponding extension in the Extension table. |
ICE16 | Validates that the ProductName in the Property table is not greater than 63 characters in length. |
ICE17 | Validates control type dependencies in the Control table. Covers PushButtons, RadioButtonGroups, ListBoxes, ListViews, and ComboBoxes |
ICE18 | Validates the KeyPath column of the Component table when it is NULL. In this case, the key path is a Directory. |
ICE19 | Validates the advertising tables: Class, TypeLib, Extension, PublishComponents, and Shortcut. |
ICE20 | Validates that the required dialogs are in the Dialog table. |
ICE21 | Validates that all components in the Component table map to a feature in the FeatureComponents table. |
ICE22 | Validates that the Feature_ and Component_ columns in the PublishComponent table. |
ICE23 | Validates the tab order of controls in all dialog boxes. |
ICE24 | Validates certain properties in the Property table. |
ICE25 | Verifies merge module dependencies and merge module exclusions. |
ICE26 | Validates required and prohibited actions in the sequence tables. |
ICE27 | Validates the organization and order of the sequence tables. |
ICE28 | Validates actions that must not be separated by ForceReboot. |
ICE29 | Validates that your stream names remain unique if truncated to the 62 character limit. |
ICE30 | Validates that the installation of components containing the same file never installs the file more than once in the same directory. |
ICE31 | Validates the text styles listed in the Text column of the control table. |
ICE32 | Compares the column definitions to validates that keys and foreign keys are of the same size and type. |
ICE33 | Checks for entries in the registry table that belong in other tables. |
ICE34 | Validates that every group of radio buttons has a default. |
ICE35 | Validates that any files from a cabinet file cannot be set to run from source |
ICE36 | Validates that icons listed in the Icon table are used the Class, ProgID, or Shortcut tables. |
ICE38 | Validates that components installed under the user's profile use a registry key under HKCU as their key path. |
ICE39 | Validates the Summary Information stream of the database. |
ICE40 | Performs various miscellaneous checks |
ICE41 | Validates that entries in the Extension and Class tables refer to components belonging to the referenced feature. |
ICE42 | Checks that Class table entries don't have EXEs set as InProc, and that only LocalServer contexts have arguments and DefInProc values. |
ICE43 | Checks that non-advertised shortcuts are in components with HKCU reg keys as the key paths. |
ICE44 | Checks that dialog events in the ControlEvent table (NewDialog, SpawnDialog, SpawnWaitDialog) reference valid Dialogs in the Dialog table. |
ICE45 | Checks for reserved bits that are set. |
ICE46 | Checks for custom properties that only differ from defined properties by their case. |
ICE47 | Checks for features with more than 1600 components per feature on Windows NT/Windows 2000 and more than 800 components per feature on Windows 95 and Windows 98. |
ICE48 | Checks for directories that are hard-coded to local paths. |
ICE49 | Checks for non-REG_SZ default values in the registry table. |
ICE50 | Checks that advertised shortcuts have correct icons and context menus. |
ICE51 | Checks that TTC/TTF fonts do not have titles, but that all other fonts do. |
ICE52 | Checks for non-public properties in the AppSearch table. |
ICE53 | Checks for registry entries that write private installer information or policy values. |
ICE54 | Checks for components using companion files as their key path file. |
ICE55 | Checks that LockPermission objects exist and have valid permissions. |
ICE56 | Validates that the directory structure of the .msi file has a single valid root. |
ICE57 | Validates that individual components do not mix per-machine and per-user data. |
ICE58 | Checks that your Media table does not have more than 80 rows. |
ICE59 | Checks that advertised shortcuts belong to components that are installed by the target feature of the shortcut. |
ICE60 | Checks that if a file in the File table is not a font and has a version, then it also has a language. |
ICE61 | Checks the Upgrade table. |
ICE62 | Performs extensive checks on the IsolatedComponent table for data that may cause unexpected behavior. |
ICE63 | Checks for proper sequencing of the RemoveExistingProducts action. |
ICE64 | Checks that new directories in the user profile are removed in roaming scenarios |
ICE65 | Checks that the Environment table does not have invalid prefix or append values. |
ICE66 | Uses the tables in the database to determine which schema your database should use. |
ICE67 | Checks that the target of a non-advertised shortcut belongs to the same component as the shortcut itself, or that the attributes of the target component ensure that it does not change installation locations. |
ICE68 | Checks that all custom action types needed for an installation are valid. |
ICE69 | Checks that all substrings of the form [$componentkey] within a Formatted string do not cross-reference components. |
ICE70 | Verifies that integer values for registry entries are specified correctly |
ICE71 | ICE71 verifies that the Media table contains an entry with DiskId equal to 1. |
ICE72 | ICE72 ensures that the only custom actions used in the AdvtExecuteSequence table are type 19, type 35, and type 51 custom actions |
ICE73 | ICE73 verifies that your package does not reuse package codes or product codes of the Windows Installer SDK samples. See Package Codes and Product Codes. |
ICE74 | ICE74 verifies that the FASTOEM property has not been authored into the Property Table. |
ICE75 | ICE75 verifies that all custom action types that use an installed file as their source are sequenced after the CostFinalize action. |
ICE76 | ICE76 verifies that no files in the BindImage table reference SFP (WFP) catalogs. |
ICE77 | ICE77 verifies that in-script custom actions are sequenced after the InstallInitialize action and before the InstallFinalize action. |
ICE78 | ICE78 verifies that that the AdvtUISequence table either does not exist or is empty. |
ICE79 | ICE79 validates references to components and features entered in the database fields using the Condition data type. |
ICE80 | ICE80 validates that Template Summary Property and Page Count Summary Property correctly specify the presence of 64-bit components or custom action scripts. |
ICE81 | Validates the MsiDigitalCertificate table and MsiDigitalSignature table. |
ICE82 | Validates the InstallExecuteSequence table. |
ICE83 | Validates the MsiAssembly table. |
ICE84 | Checks the sequence tables to verify that required standard actions have not been set with conditions. |
ICE85 | Validates that the SourceName column of the MoveFile table is a valid long file name. |
ICE86 | Issues a warning if the package uses the AdminUser property in database column of the Condition type. |
ICE87 | Validates that the following properties have not been authored in the Property Table. |
ICE89 | Validates that the value in the Progid_Parent column in ProgId table is a valid foreign key into the ProgId column in ProgId table. |
ICE90 | Posts a warning if it finds that a shortcut's directory has been specified as a public property. |
ICE91 | Posts a warning if a file, .ini file, or shortcut file is installed into a per-user profile directory that does not vary based on the ALLUSERS property. |
ICE92 | Verifies that a component without a Component Id GUID is not also specified as a permanent component. |
ICE93 | Issues a warning if a custom action uses the same name as a standard action. |
ICE94 | Issues a warning if there are any unadvertised shortcuts pointing to an assembly file in the global assembly cache. |
ICE95 | Checks the Control table and BBControl table to verify that the billboard controls fit onto all the billboards. |
ICE96 | Verifies that the PublishFeatures action and the PublishProduct action are entered in the AdvtExecuteSequence table. |
Monday, 29 August 2011
ICE Errors Reference
The following list provides links to each individual ICE. These ICEs are used to validate installation packages.
VBScript to Delete File/Folder from User Profiles
Following VBScript can be used to delete files/folders from Each and every User profile
Dim FSfolder
Dim subfolder
Dim i
set objshell = CreateObject("Wscript.shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Profile = strSysDrive & "C:\Documents and Settings"
Set FSfolder = FSO.GetFolder(Profile) 'getting the user profile folders
For Each subfolder In FSfolder.SubFolders
If (subfolder.Name <> "All Users" And subfolder.Name <> "Default User"_
and subfolder.Name <> "LocalService" and subfolder.Name <> "NetworkService") Then
folder1=Profile & "\" & subfolder.Name & "\Application Data\Sample"
DeleteThisFolder(folder1)
end if
Next
'*******************************************************************************************************
Function DeleteThisFolder(FolderName)
If FSO.FolderExists(FolderName) Then
objshell.Run "CMD.EXE /C RD /S /Q """ & FolderName & """",0,True
End If
End Function
Logoff Windows using VBScript
Following VBScript can be used to Logoff machine. Test it and Enjoy
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.run "shutdown.exe -L -F"
Get ComputerName + VBScript
Set oNetwork = CreateObject("WScript.Network")
sComputerName = oNetwork.ComputerName
MsgBox("ComputerName = " & sComputername)
Active Setup Registry Keys
Following Registries are to be included in package to load User settings(either registries/files) so that by the time User
logs in his current user settings will be available on the machine.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\[ProductCode]]
"StubPath"="msiexec /fup {9A346205-EA92-4406-B1AB-50379DA3F057} /qn"
"Version"="1,0"
Set Working Directory to Shortcut Using VBScript
Set objShell = WScript.CreateObject("WScript.Shell")
Set objShtCut = objShell.Createshortcut("C:\Documents and Settings\All Users\Start Menu\Programs\ShortcutName.lnk")
objShtCut.WorkingDirectory = "C:\PROGRA~1\MKSTOO~1\Demonstrations\bin"
objShtCut.Save
'WScript.Echo objShtCut.WorkingDirectory
VBScript to Terminate Process
Option Explicit
Dim objWMIService, objProcess, colProcess
Dim strComputer, strProcessKill
strProcessKill = "'ProcessName.exe'"
Set objWMIService = GetObject("winmgmts:root\cimv2")
Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
objProcess.Terminate()
Next
WScript.Quit
Subscribe to:
Posts (Atom)