You could have your download measure run in a "background" skin, which is a skin that technically exists on the desktop, but has no visible or clickable meters. Rainmeter requires every skin to have at least one meter, but you can trick it by adding a meter which displays absolutely nothing, such as this:
Then, have each of the dependent skins activate the download skin with an
OnRefreshAction. This will automatically ensure that the download skin is always running, no matter which skins you chooses to run. The user never has to know that the download skin is there.
To be courteous to your users, you should also add a system whereby the download skin checks to see if at least one of the dependent skins is running, and if there is none, it deactivates itself. I'll have to think about the best way to do this, but here's an idea off the top of my head:
In each of your dependent skins, create a measure which sends an "I'm not dead" bang to the download skin every 10 seconds or so.
Code: Select all
[Skin1IsAlive]
Measure=Calc
Formula=Counter%10
IfEqualValue=0
IfEqualAction=!SetVariable Skin1Ping 0 "SuiteName\DownloadSkin"
In the download skin, create a corresponding measure which records how long it's been since the dependent skin has reported. (When it receives the !SetVariable bang from the skin, it resets and starts over.)
Code: Select all
[Skin1Time]
Measure=Calc
DynamicVariables=1
Formula=(Skin1Time+1)*#Skin1Ping#
IfEqualValue=0
IfEqualAction=!SetVariable Skin1Ping 1
Finally, also in the download skin, create a "self-destruct" measure which deactivates the download skin if no other skins have reported in for more than, say, 60 seconds.
Code: Select all
[SelfDestruct]
Measure=Calc
Formula=(SelfDestruct+1)*(Skin1Time > 60)*(Skin2Time > 60)*(Skin3Time > 60)
IfAboveValue=15
IfAboveAction=!DeactivateConfig