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
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users