And once more I need to seek your help. I have an application, which has a license file, let's call it license.dat. Per default the contents of license.dat puts the application in a kind of demo mode and encourages the user to register over the Internet. I authored it to be a component with a specific GUID. The application is another component with a different GUID, and both are installed as a single feature. Works nicely, easy job.
Some day, to get the full features, the user registers his product over the Internet. Technically the license.dat file gets overwritten with a new one, containing license info. The license info in the file unlocks the application's full features for a specific time. Once the license expires, the application resets itself to demo mode (without touching the license.dat file, it knows from the contents of the file that the license has expired). Works too. And now things get weird. The application's marketing concept is modular, which means that the user may after some time purchase another module of this product and install it. The new module does also come with the same license.dat file that contains the demo license. The same component and GUID like above is used to author the same component like above, since it is the same file as above, and despite that there isn't a way to tell which product modules someone purchases in which order, so every module can potentioally be the first one (and probably even the only one) a user installs, and thus every modue must contain the demo license.dat file. It is the intention of the vendor that in case of installation of a second (third, fourth .-..) module the demo license.dat file overwrites the old (registered or unregistered, don'tcare) one, so the user does need to register again (whch will reset the usage time, so he can utilize the product for a full time period again). Unfortunately smart Windows Installer thinks, he already has installed the component, and skips it, so the license.dat file is not reset to the demo license, the user has no reason to re-register, and the application reverts to demo mode as soon as the old license expires. At this point the user would either call suppport and complain that his license expired prematurely, or be a smart one and use the license of the second purchase to re-activate the product, which is OK, but inconvenient after such a long time after installation. No problem, you'd say, just author the component containing file using a differend GUID, and the file will be overwritten. Great, but what happens during an uninstall? If the user uninstalls either component, the file will get deleted, since it's reference count is 1. The application will stop working, because it does have neither a demo nor a registered license.dat file, though all but one modules are still installed. The obvious solution wold be to author the component using the same GUID, so the reference counter gets 2, but have it overwrite ("refresh") the file. When uninstalling, the reference counter would decrease, but the file would be left unchanged, which is exactly what I want. Unfortunately I found no option setting for either component or file to get this behavior. All together: how can I author a shared component which "refreshes" itself when installed a second, third, ... time, but shows normal uninstall behaviour (decrease the reference counter, and get deleted when the internal reference counter reaches 0)? Another approach would be: the application has several other files which show correct installation/deinstallation behaviour when installed by multiple products (increase reference counter with every installation, decrease it with every uninstallation, and delete it when the counter reaches 0). If I could find a way to tie the deletion of the license.dat file to the deletion of one of those files, this would save me as well. And probably I missed something entirely, and tehre is another way to get what I need using a different approach? Any hints/ideas/leads to documentations welcome, Armin. P.S. Just to mention it, the behaviour of the copy protection/licensing software, which is a 3rd party product, can, unfortunately, not be influenced. Messing with the license.dat file is the only way.. ------------------------------------------------------------------------------ Come build with us! The BlackBerry(R) Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9 - 12, 2009. Register now! http://p.sf.net/sfu/devconference _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users