Row Tracking

<< Click to Display Table of Contents >>

RayPack > 7.3 u6 > User Guide > PackDesigner > MSI / MST / RPP Based Projects > Advanced Mode > Tables > Advanced Editor Interface Features 

Row Tracking

The row tracking mechanism displays and tracks the references between selected row and other cells / rows / tables in the edited MSI / RPP / MST project.

 

In order to enable the Row Tracking view, activate the bottom panel in the Tables View by using the following button:

 

activateRowTracking

 

Since the bottom panel is also used to display the ICE / test results, the following buttons can be used to enable / disable the row reference tracking results:

 

button_ice_01

 
Hides ICE / test results and shows the ICE / test validation results

 

button_links_01

 
Shows row reference tracking results

 

The row tracking is a list of rows that rely or that are referenced by the currently selected row. For example, with the following row in the Registry table selected selected:

 

rowtracking1

 

the following references are shown in the Row Tracking panel:

 

rowtracking2

 

Which should be interpreted as:

 

The row ProductVersion in the Registry table has a reference to external table. The referenced table is Component, the identifier of referenced row is Registry_HKLM. and the value references the Component column.
The value that references the row is Registry_HKLM.
 
In fact, the column Component_ in the Registry table is a Foreign Key to the Component table, and therefore link is shown by RayPack.

 

The row ProductVersion in the Registry table relies on indirectly referenced property ProductVersion from the Property table, in the Property column.
 
In fact, the formatted string [ProductVersion] contains a valid reference to Windows Installer property, and therefore the link is shown by RayPack.

 

RayPack shows the following references:

 

Primary Key / Foreign Key relations based on the Validation table

Primary Key / Foreign Key relations based on internal database of popular references

Formatted strings using file, property, folder or component syntax

 

The information is shown for both row that is a source of reference and the target of reference as well.

 

Jumping to the Reference Source / Target

In order to jump to a reference source / target, double click the entry in the Row Tracking panel. For example, double clicking the first entry in the example above would jump to the Component table, to the Registry_HKLM row and highlight the Component column.

 

References and Cascade Updates

When a value in a cell is changed, RayPack tracks down all target references and updates the value accordingly. For example, changing the identifier of the ProductVersion property to ABC would rename the registry value from [ProductVersion] to [ABC] (see the example above).

 

The values in tables are replaced recursively, which means that all changed cells are scanned for any references that may require update and so on. This ensures that the package is internally consistent regardless of how deep and scattered the references are.

 

Similarly, removing a row would remove or change the other values of connected cells. For example, when an entry is removed from the Component table, connected entries in the FeatureComponents will be removed as well.

 

Example:

If the referenced column is marked as nullable and the referenced row is deleted,  RayPack will set the value of the column to null instead of removing the column. For example, when a file ABC is removed, its MsiFileHash and RPSourcePath rows will be removed as well. However, the component that references that file via KeyPath column will not be deleted, because the KeyPath column in the Component table is nullable. This means that the row reference tracking mechanism will only set the value in the KeyPath column to null.

 

papercliper

Note:

While replacing identifiers of formatted strings RayPack applies a special handling to the INSTALLDIR references. Any formatted reference (for example [INSTALLDIR] in the Control table) is left unchanged. This is by-design to avoid some unexpected behaviors.

 

Disabling / Enabling Cascade Updates

The automatic cascade updates can be disabled by unticking the checkbox beneath the tables:

 

refupd

 

The mechanism can be re-enabled at any time in the future.