rzander / ruckzuck

software package manager for windows
https://ruckzuck.tools
Microsoft Public License
223 stars 20 forks source link

How to create an automation to update applications that are in ConfigMgr? #165

Open deilsoncso opened 2 years ago

deilsoncso commented 2 years ago

I searched everywhere, searched for articles, looked at some open and closed issues and didn't find the answer to my question.

for example, I select 10 apps from the list, they are downloaded and then deployed to ConfigMgr\RuckZuck for example, how do I make these apps update with each new version of an app or schedule on specific days that the RuckZuck update these apps already published in ConfigMgr?

I'm aware I think it doesn't just update the content, it creates a new entry in Applications\RuckZuck with the new version in front of the name. But I just wanted to make sure they were automatically updated and on the days they are scheduled, just go to Applications\RuckZuck and remove the previous versions.

rzander commented 2 years ago

Same as https://github.com/rzander/ruckzuck/issues/84 MECM is a tool to manage Enterprise customers and I don't think they want to rollout applications without reviewing and testing...

For smaller customers, you can run RZGet.exe to update a set of Apps on a schedule directly on the clients (they will bypass MECM for these Updates)... Or my personal favorite, ROMAWO , a RuckZuck Sponsor with a solution to update 3rd party apps...

TheTaran commented 1 year ago

I searched everywhere, searched for articles, looked at some open and closed issues and didn't find the answer to my question.

for example, I select 10 apps from the list, they are downloaded and then deployed to ConfigMgr\RuckZuck for example, how do I make these apps update with each new version of an app or schedule on specific days that the RuckZuck update these apps already published in ConfigMgr?

I'm aware I think it doesn't just update the content, it creates a new entry in Applications\RuckZuck with the new version in front of the name. But I just wanted to make sure they were automatically updated and on the days they are scheduled, just go to Applications\RuckZuck and remove the previous versions.

I have done that with PowerShell. That's pretty simple. If you need some code, let mi know.

Keywan2009 commented 6 months ago

Hi TheTaran,

could you help with Code? I have the same issue.

Regards

TheTaran commented 6 months ago

RuckZuck_AppUpgrade.zip @Keywan2009 This is my script.

When you import a new application from RuckZuck, it creates Collections under the folder /RuckZuck. To successfull execute the scriptpt you need a collection namend 'All_Windows_Server' (or change the name in the script) and 2 folders under Applications: /RuckZuck /Supersedence At the end of the script at the position '#check collection query rules, if not exist create' you can add aditional lines with Applications you want.

edit: i will try to upload my script.

Keywan2009 commented 6 months ago

Hi, Thank you for the Code. Some question Where should I run that PW Script? Manually or how?

I have to change only this both line?

$SiteCode = "X00" # Site code $ProviderMachineName = "SERVERNAME.fqdn" # SMS Provider machine name

and for example the following

if ($collection -like "7-Zip") { $AppName = "7-Zip(MSI)"; $AppSQL = "7-Zip%" }

TheTaran commented 6 months ago

Where should I run that PW Script? Manually or how?

You need to run that script on your SCCM Server with PowerShell. Manually oder by scheduled task. Dependes on your requirements.

I have to change only this both line?

$SiteCode = "X00" # Site code $ProviderMachineName = "SERVERNAME.fqdn" # SMS Provider machine name

and for example the following

if ($collection -like "7-Zip") { $AppName = "7-Zip(MSI)"; $AppSQL = "7-Zip%" }

Yes correct.

Keywan2009 commented 6 months ago

Thank you again I have Ruckzuck version 1.7.2.5 and I renamed the AppFolder and CollectionFolder to "bagsbunny" And I have remove for testing an the end of your script all the Apps and keep only "7-Zip"

check collection query rules, if not exist create

Write-Host "check collection query rules" -fo Yellow foreach($collection in $collections) { if ($collection -like "7-Zip") { $AppName = "7-Zip(MSI)"; $AppSQL = "7-Zip%" }

    $collectionname = $collection.Name
        if ($collectionname -eq ("AppAto " + $AppName)) { 
            foreach ($Appl in $CMRZAPPS ) {
            if ((($Appl).SDMPackageXML | Foreach { ([xml]$_).AppMgmtDigest.Application.CustomProperties.Property } | Where-Object { $_.Name -eq "Shortname" }).Value -eq $AppName )
            { #get app Verion
                $Appversion = $Appl.SoftwareVersion
                $rzappname = $Appl.LocalizedDisplayName
                Write-Host "create collection query for $collectionname - $rzappname - $Appversion" -fo yellow
                #write-host "$rzappname - $Appversion"
                remove-CMDeviceCollectionQueryMembershipRule -CollectionName $collectionname -RuleName ApplicationQuery -Force
                $wql = "select SMS_R_System.ResourceId, SMS_R_System.ResourceType, SMS_R_System.Name, SMS_R_System.SMSUniqueIdentifier, SMS_R_System.ResourceDomainORWorkgroup, SMS_R_System.Client from  SMS_R_System inner join SMS_G_System_INSTALLED_SOFTWARE on SMS_G_System_INSTALLED_SOFTWARE.ResourceID = SMS_R_System.ResourceId where SMS_G_System_INSTALLED_SOFTWARE.ARPDisplayName like '$AppSQL' and SMS_G_System_INSTALLED_SOFTWARE.ProductVersion < '$Appversion'"
                Add-CMDeviceCollectionQueryMembershipRule -CollectionName $collectionname -QueryExpression $wql -RuleName "ApplicationQuery"
                Write-Host "create collection query for $collectionname - finish" -fo Green
            }
    }
}

} Write-Host "check collection query rules - finish" -fo Green

#################

If I run now the PW Script, I am getting the error

Write-Host "check collection query rules - finish" -fo Green ` Incomplete string token.

Any Idea?