This project has moved and is read-only. For the latest updates, please go here.

Install on Clients, but only update on Servers

Topics: Publishing Issue
Mar 9, 2015 at 11:58 AM
Hi!

I will deploy Software, lets say in this example Java. I want to install it on all Workstations, but I only want tp update on Servers if it is already installed.

I tried to Google it and I tried a lot of rules with Windows Version etc. but everytime I tried to do what I want, also my Servers want to install. Only if I said AND Windows 7 this worked. If I tried Windows 7 AND Windows 8 my Servers want to install.

Could someone please help me with this?

Thanx,
Martin
Mar 9, 2015 at 12:47 PM
You have to work with files in filesystem. if you find Java.exe in %programfiles%.... you can install Java. Work with two rules for Files in Filesystem.
Mar 9, 2015 at 1:12 PM
I tried already with regkey:
AND Workstation OR Server and regkey exists /OR /AND

but my Server wants to install, without having that regkey.

thanks, Martin
Mar 9, 2015 at 3:21 PM
OK, what you want? You want to install Java on Servers only there is Java installed, right?

I think you have to work with one OR Rule

Workstation OR Server
In Server you have to create a AND Rule and check if file in filesytem you can update. If not the file in the filesystem, you can not update.
Mar 9, 2015 at 4:01 PM
WinfriedSonntag wrote:
I think you have to work with one OR Rule
Hi Winfried,
thx, bu did you read my post before?
Workstation OR Server
In Server you have to create a AND Rule and check if file in filesytem you can update. If not the file in the filesystem, you can not update.
I repeat: I tried already the rule:
Workstation OR Server AND regkey exists

Is here a way I can Show my rule in here? An Export or something?

thx, Martin
Mar 9, 2015 at 4:12 PM
Hi,

revise the package and in the rule tab, select the most outter group, then click on export. This will export a text file that you will be able to copy here.
Tell us what 'IsInstalled' and 'IsInstallable' rules do you have set.
Mar 9, 2015 at 4:14 PM
You have to use FILE EXIST in filesystem.
Mar 9, 2015 at 4:46 PM
Edited Mar 9, 2015 at 4:46 PM
WinfriedSonntag wrote:
You have to use FILE EXIST in filesystem.
The Path to Java.exe differs with every Version. So how can this be done?

DCourtel wrote:
revise the package and in the rule tab, select the most outter group, then click on export. This will export a text file that you will be able to copy here.
Tell us what 'IsInstalled' and 'IsInstallable' rules do you have set.
Thanks. My IsInstalled-Rule:
<msiar:MsiProductInstalled ProductCode="{26a24ae4-039d-4ca4-87b4-2f86418040f0}"/>
My IsInstallable-Rule:
<lar:And>
  <lar:Not>
    <msiar:MsiProductInstalled ProductCode="{26a24ae4-039d-4ca4-87b4-2f86418040f0}"/>
  </lar:Not>
  <bar:Processor Architecture="9"/>
  <lar:And>
    <bar:WindowsVersion Comparison="EqualTo" ProductType="1"/>
    <lar:Or>
      <bar:WindowsVersion Comparison="EqualTo" ProductType="3"/>
      <bar:RegKeyExists Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\JavaSoft"/>
    </lar:Or>
  </lar:And>
</lar:And>
Mar 9, 2015 at 6:34 PM
< The Path to Java.exe differs with every Version. So how can this be done?

How many Java-Version are installed? One Solution is to write one rule for each version.
Mar 9, 2015 at 10:25 PM
WinfriedSonntag wrote:
The Path to Java.exe differs with every Version. So how can this be done?
How many Java-Version are installed? One Solution is to write one rule for each version.
Hmm there is a Network with about 30 different Versions, the oldest is Java 5.

So Why shouldnt work the regkey think instead of the file thing? What is wrong on my rule? If I delete the OR, no server wants to install. If I put this in, all Servers want to install.

Thanks, Rothy
Mar 9, 2015 at 11:16 PM
Rothy wrote:
WinfriedSonntag wrote:
The Path to Java.exe differs with every Version. So how can this be done?
How many Java-Version are installed? One Solution is to write one rule for each version.
Hmm there is a Network with about 30 different Versions, the oldest is Java 5.
Wow, a great project. ;)
So Why shouldnt work the regkey think instead of the file thing? What is wrong on my rule? If I delete the OR, no server wants to install. If I put this in, all Servers want >to install.
I don't know if the rule is working or not. I would build a rule with filesystem.
Mar 10, 2015 at 8:53 AM
Edited Mar 10, 2015 at 8:53 AM
WinfriedSonntag wrote:
I don't know if the rule is working or not. I would build a rule with filesystem.
Ok, just to make you happy:
<lar:And>
<lar:Not>
<msiar:MsiProductInstalled ProductCode="{26a24ae4-039d-4ca4-87b4-2f86418040f0}"/>
</lar:Not><bar:Processor Architecture="9"/><lar:And>
<bar:WindowsVersion Comparison="EqualTo" ProductType="1"/><lar:Or>
<bar:FileExists Path="C:\ProgramData\Oracle\Java\javapath\java.exe"/><bar:WindowsVersion ProductType="3"/></lar:Or>
</lar:And>
</lar:And>
I just thought it would be a bit better, just to use one filepath wich is same for all Versions...

This doesnt work, too

Doesnt anyone have a rule like this? Do you all install Java on all Servers?

Thanx, Rothy
Mar 10, 2015 at 11:06 AM
Hi,
Logic for And/Or groups apply IN the group itself.

For Registry rule you should set :
<lar:And>
    <lar:Not>
        <msiar:MsiProductInstalled ProductCode="{26a24ae4-039d-4ca4-87b4-2f86418040f0}"/>
    </lar:Not>
    <bar:Processor Architecture="9"/>
    <lar:Or>
        <bar:WindowsVersion ProductType="1"/>
        <lar:And>
            <bar:WindowsVersion ProductType="3"/>
            <bar:RegKeyExists Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\JavaSoft"/>
        </lar:And>
    </lar:Or>
</lar:And>
For File Sytem Rule, you should set :
<lar:And>
    <lar:Not>
        <msiar:MsiProductInstalled ProductCode="{26a24ae4-039d-4ca4-87b4-2f86418040f0}"/>
    </lar:Not>
    <bar:Processor Architecture="9"/>
    <lar:Or>
        <bar:WindowsVersion Comparison="EqualTo" ProductType="1"/>
        <lar:And>
            <bar:FileExists Path="C:\ProgramData\Oracle\Java\javapath\java.exe"/>
            <bar:WindowsVersion ProductType="3"/>
        </lar:And>
    </lar:Or>
</lar:And>
Mar 10, 2015 at 1:42 PM
Edited Mar 10, 2015 at 1:44 PM
Hi,

DCourtel wrote:
Hi,
Logic for And/Or groups apply IN the group itself.
thanks, but that also doesnt work.

So, what so I want to do?

Is it installabe?
Only if ist not in the newest Version installed 
and the Computer is 64Bit 
and (its Workstation OR (Server and Java exists)

(not 26a24ae4-039d-4ca4-87b4-2f86418040f0 AND Processor Architecture="9") 
AND (WindowsVersion ProductType="1" OR (WindowsVersion ProductType="1" AND FileExists Path="C:\ProgramData\Oracle\Java\javapath\java.exe))
In between I also tried:
<lar:And>
<lar:Not>
  <msiar:MsiProductInstalled ProductCode="{26a24ae4-039d-4ca4-87b4-2f86418040f0}"/>
</lar:Not>
<bar:Processor Architecture="9"/>
<bar:WindowsVersion ProductType="1"/>
<lar:Or>
  <lar:Not>
    <msiar:MsiProductInstalled ProductCode="{26a24ae4-039d-4ca4-87b4-2f86418040f0}"/>
  </lar:Not>
  <bar:Processor Architecture="9"/>
  <bar:WindowsVersion ProductType="3"/>
  <bar:RegKeyExists Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\JavaSoft"/>
</lar:Or>
</lar:And>
I dont find my failure....
Mar 10, 2015 at 3:02 PM
Maybe Im on the complete wrong way. If I look at the Adobe updates out of the catalogue, there arent any rules and it installs only updates on Systems with previous Versions on it. How can I do this with a custom msi install?
Mar 10, 2015 at 3:13 PM
DCourtel wrote:

Hi,
Logic for And/Or groups apply IN the group itself.

thanks, but that also doesnt work.
It work, but you don't apply it ! For example, in your last post, your rules said :

It's installable IF ( MSIProduct is not installed AND Processor is 64bit AND ProductType=Desktop AND ( MSIProduct is not installed OR Processor is 64bit OR ProductType=Server OR RegKeyExist ) )

Each () map to a And/Or Group.
This is exactly the opposite of what you should do !
Mar 10, 2015 at 3:24 PM
DCourtel wrote:
thanks, but that also doesnt work.
It work, but you don't apply it ! For example, in your last post, your rules said :
Maybe I just dont get it...

I imported your rules and they both didnt work.

And I actually dont understand what is ment with "Logic for And/Or groups apply IN the group itself.". Maybe ist because Im not a native Speaker? ;-(

Could you please be so kind and give me a logic example for: Install if not installed and 64 Bit, on all Clients and on all Servers where the file exist?

Im working on this now since days and I dont get it ;-).

Thanks, Rothy
Mar 12, 2015 at 8:53 AM
Edited Mar 12, 2015 at 9:39 AM
I think I know now what you ment with "In the Groups".

So here is my next try, still not working:
<lar:And>
  <lar:Not><msiar:MsiProductInstalled ProductCode="{26a24ae4-039d-4ca4-87b4-2f86418040f0}"/></lar:Not>
  <bar:Processor Architecture="9"/>
  <lar:Or>
    <bar:WindowsVersion ProductType="1"/>
    <lar:And>
      <bar:WindowsVersion ProductType="3"/>
      <bar:RegKeyExists Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\JavaSoft"/>
    </lar:And>
  </lar:Or>
</lar:And>
And this try also wont work:
<lar:Or>
  <lar:And>
    <lar:Not>
<msiar:MsiProductInstalled ProductCode="{26a24ae4-039d-4ca4-87b4-2f86418040f0}"/>
</lar:Not>
    <bar:Processor Architecture="9"/>
    <bar:WindowsVersion ProductType="1"/>
  </lar:And>
  <lar:And>
    <lar:Not>
<msiar:MsiProductInstalled ProductCode="{26a24ae4-039d-4ca4-87b4-2f86418040f0}"/>
</lar:Not>
    <bar:Processor Architecture="9"/>
    <bar:WindowsVersion ProductType="3"/>
    <bar:RegKeyExists Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\JavaSoft"/>
  </lar:And>
</lar:Or>
Any Ideas?

Thanks, Martin
Mar 12, 2015 at 1:50 PM
So what happens with Davids examples? Servers get this installed even if they do not have Java installed? Do you know the exact Version of Java which is currently installed on your Servers? Than you could go with "MSI product installed" rule instead of RegKey or File exists. Can you please post an actual product which you want to deploy this way? Maybe we can test it.

Regards
Norbert
Mar 12, 2015 at 3:12 PM
Yes, with Davids examples the Servers still try to install it, without having it installed.

The Point with the exact Version:
Yes I know, but we have:
13 Different Versions of Java 6
18 Different Versions of Java 7
4 Different Versions of Java 8

Is my last Syntax correct and matches now: "Logic for And/Or groups apply IN the group itself."?

Thanks, Martin
Mar 12, 2015 at 4:33 PM
Edited Mar 12, 2015 at 4:50 PM
No it's not correct. If it was, than you wouldn't ask here. ;) You have to Combine (Windows Server AND some rule to determine if JAVA is already installed) and put this in OR together with Windows Workstation and the MSI Not installed.
Is there any reason why are you trying to deploy the x64 Version of Java? Usually you should go with the x86 Version.

I'll try later something. But Davids rule Looks pretty much the same way, I would've configured it.


Regards
Norbert
Mar 16, 2015 at 11:43 AM
Hi All,

after a lot of testing I figuerd out, that not the rules are the Problem, ist my way of revising the updates. Im still not sure what the best way ist, but when I changed an Update WSUS always told, that there is a newer one. To get rid of this, anytime I changed an update I declined and deleted it and imported it again. But it seems the Client still has this in mind and still wants to install it, even it has a new rule now.

The rules work now, I just do now for each Change create a new update.

Thats much more work - is there an easier way?

Thank you all for your help and Patience,
Martin
Marked as answer by DCourtel on 3/16/2015 at 3:57 AM