Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Shortcuts: don't understand the error messages


5 replies to this topic

kgiloo

kgiloo
  • Full Members
  • 60 posts

Posted 24 October 2006 - 16:16

[BASIC MSI]
I simply created few shortcuts for my package and I got these EM:

ISDEV : error ICE43: Component xxxxx has non-advertised shortcuts. It should use a registry key under HKCU as its KeyPath, not a file. Component Attributes xxxxx
ISDEV : error ICE57: Component xxxxx has both per-user and per-machine data with a per-machine KeyPath. Component Component xxxxx



Glytzhkof

Glytzhkof
  • Moderators
  • 1,447 posts

Posted 24 October 2006 - 23:58

Either set the shortcuts advertised, or add a HKCU key path to the component that contains the shortcut (any path will do, for example: HKLM\Software\YourCompany\YourApp\Value = 1 and set this as key path). Note that if you do the latter and keep the file in the same component you might get a warning saying that the component contains both per-machine and per-user entries. Your best bet is to set the shortcut advertised - this will remove the validation issue.

As to the overall cause of this: I believe it has to do with shortcuts and per-user and per-machine installations (which change based on the ALLUSERS property). Without knowing for sure, I would assume this is to account for the situation where several users might have the same product installed, the key path is set to a HKCU key.
Regards
-Stein Åsmul

kgiloo

kgiloo
  • Full Members
  • 60 posts

Posted 26 October 2006 - 07:48

Thank you, I changed to "advertised" and everything works fine.

However I don't see what's the point and what is the main purpose of advertising shortcuts(?).

"At run time, if the user advertises the product or the feature containing the shortcut, the shortcut is created but the component's files are not installed until the user launches the shortcut."



Glytzhkof

Glytzhkof
  • Moderators
  • 1,447 posts

Posted 26 October 2006 - 08:03

Advertised shortcuts are "self repair entry points". They point to an MSI feature and not directly to a file. MSI will check that there are no broken component key paths in the feature pointed to and all parent features of that feature - if a broken key path is discovered self repair will kick in.

Advertised shortcuts are also "smarter" in the sense that they can handle both per machine and per user installs relatively transparently since they don't point directly to a file.

Other self repair entry points include entries in the following tables among others: Extension, ProgId, CLSID, etc...
Regards
-Stein Åsmul

Glytzhkof

Glytzhkof
  • Moderators
  • 1,447 posts

Posted 26 October 2006 - 08:06

Forgot one thing: advertised shortcuts can be "advertised" as explained in the SDK so that users can trigger the install on demand from active directory, SMS or other software distribution systems. This means that the user can see the shortcut in the start menu and when launched the first time the software will be installed on the fly. You may ask what the purpose of this is as opposed to installing all applications on all machines. Essentially upgrades will be faster if the software is installed on fewer machines (the advertised install can be updated so that new users don't install the outdated version on first launch), only systems with existing installs are patched (in companies with thousands of machines this can be a significant bandwidth savings), there are also licensing issues with software being distributed to all machines. In short: advertising is a good feature, though seemingly seldom used.
Regards
-Stein Åsmul

kgiloo

kgiloo
  • Full Members
  • 60 posts

Posted 31 October 2006 - 11:56

I got an awkward behavior with shortcuts and advertising.

I removed one DLL from my INSTALLDIR and started the advertised shortcut.
The MSI repaired the package, good, but it did more than wanted:
It changed the values of my properties in the app registries.

The Reg are usually modifyed in a Deferred Exec CA, and the values are user input dependent (properties), I don't want to change these values in case of advertising!

Is my CA invoked for advertising? If yes, how can I avoid that? By the way do you know how I can create a log file in such an advertising.