Jump to content
Ketarin forum

shawn

Moderators
  • Posts

    1,179
  • Joined

  • Last visited

Everything posted by shawn

  1. Hi, @WrongCode ! There are actually a lot of tips available here on the forum. Whenever I find a novel solution to a problem I try to post about it there. Ultimately you'll want to figure out what details you actually want to keep and how aggressive to be with that data collection. It's insanely easy to get just the download and not think about everything else, but I always want to capture the changelog and any other relevant details as well (bits, OS, vendor, website and so on). Guidance for creating and using custom columns, changelogs, PowerShell variable access, and lots more at the Tips section. The Templates section also has some demonstrations of how to do common tasks, including the use of Templates, which are pretty awesome if you download a lot of things from the same sites (like GitHub or Source Forge or NirSoft): creating a template allows you to do the major work only once, then plug in a few values when you load another app from the template. Finally, get Kuppet. Kuppet is a Ketarin accessory that allows you to bypass a lot of the newer HTML5 JavaScript-rendered page problems by rendering the page for you first and allowing you to capture the content from that instead of the unusable JavaScript calls alone. I'm using Kuppet in about 20-25% of my apps now.
  2. It was crashing for me most of the time as long as I had the 'keep x' option enabled on one or more of the apps, too. In order to make it work reliably I had to remove every single app then recreate each of the apps using the Ketarin interface (not copy & pasted from the XML). While this worked, with over a thousand apps I decided it was more work than I was prepared for, especially since my external monitoring relies heavily on the guids from Ketarin within the logging and my external database. It wouldn't be a matter of simply recreating 1000+ apps, but I would then have to munge tens or even hundreds of thousands of database entries externally, too, so I have the logs going back over the years from monitoring each app. It would also result in orphaning the entries in the online database that i synced up there, since changes I made to the apps would no longer be uploaded.
  3. Glad you got it sorted so quickly, @WrongCode. However, I would recommend you change from the home page to the changelog to parse for version and download URLs. In my experience it's usually more reliable and consistent since the devs may not have the home page hooked into whatever release process they use so one or more values may fail to be updated as part of their manual process. The reason you saw it failing to download was because the last version was the same file that downloaded last time -- 4.14.0.21323 -- so even though the version number changed on the homepage the binary link did not. The pattern you used for your url variable (which you used for the download URL) failed because that text didn't actually appear on the page so it couldn't parse for it, so it failed to update. You can use the ifemptythenerror function to perform validation on your variables to troubleshoot situations like this one. You can also get around that problem (here) by switching from parsing for the URL (which you clearly know is going to match that pattern anyway) to just fabricating the URL yourself as a Textual variable as so: https://dist.mountainduck.io/Mountain%20Duck%20Installer-{version:ifemptythenerror}.exe Change the variable type from "Content from URL (regular expression)" to "Textual content" and use that pattern and it will solve both of your big issues here. Even so, it's possible they might change the download URL format/pattern at any time, so be careful if you do. Ketarin natively monitors eTags and dates as well so won't re-download the same binary unless you use the "force" option or the server doesn't actually report these values (rare). Later, when they discover their error and update the URL on the homepage then it doesn't solve the Ketarin side of the problem since you're using version as the "variable as indicator for changes" and your app has already detected the new version number (even if it didn't download because the url variable was defective!) so it won't download unless you resolve the underlying URL parsing problem. If you install the one that you did download you'll find that it is, in fact, the older installation package from a couple weeks ago. The changelog page also adds a few other things you might be interested in, including the hash and other related packages. Finally, I also recommend you parse for the actual download URL and not rely on injecting the version number in the URL of the pattern they've used prior to get the file. Way too often sites will randomly include additional values (like cache busters or language flags) or change portions of the path that they did not do before (download vs dist). To help detect these situations I use a pre-download command that checks for an empty version number, and a post-download command that writes out all errors and relevant update data from each update to a log file and push it all to a web-accessible database. This allows me to monitor all of my Ketarin activity without having to rely exclusively on the Ketarin interface.
  4. This is a known issue. It will be resolved as time permits.
  5. It should still be two steps -- download with Ketarin and install with WSUS. Store files you download with Ketarin directly in your file share using the same name (use the "save to file" option to select where it is stored and with an unversioned name so it can be installed using the same WSUS profile. Then in WSUS you just write up the update the same as you would normally, using the share name and path that you used in Ketarin for the source.
  6. Hi, all, I've been meaning to rewrite several of my apps for quite a while because there just aren't ways to collect the version number and I hate to have to have a bunch of commands on individual apps just because maintenance becomes a chore. So I came up with a global after-update script to process stuff like that. It's controlled through a new variable assigned to the app called "todo". The idea is that instead of leaving the file details unfilled, let's parse it after it's downloaded from the file itself or perform other post-download actions (extraction, uploading to an FTP server, download from MEGA, copy to another folder and so on). These are now all handled centrally for me with the global after-updating an application script and this new variable. This uses a couple functions based on @Ambimind's code posted here and elsewhere on this forum. #### Support function PKV { Param( $svName ) #### identify variable type and collect stored content $svType = $app.variables.$svName.VariableType; if( $svType -eq "Textual" ){ #### stored text content $svContent = $app.variables.$svName.TextualContent; #### process all child variables if( $svContent -like '*{*' ){ $svContent2 = $app.variables.ReplaceAllInString( "{$svName}", $sfiletime, $sfilename, $true, $false ); if ( $svContent2 -ne '' ){ $svContent = $svContent2; } } }else{ #### other types of variables must be parsed $svContent = $app.variables.ReplaceAllInString( "{$svName}", $sfiletime, $sfilename, $true, $false ); } #### parse version for psversion if it exists if( $svName -eq "version" ){ if( $app.variables."psversion".TextualContent -ne "" ){ $svContent = $app.variables.ReplaceAllInString( "{$svName}", $sfiletime, $sfilename, $true, $false ); } } #### sanitize $svContent = ($svContent -Replace 'http://localhost:48080/', '' | Out-String).Trim() if( $svContent -eq "{$svName}" ){ $svContent = ''; } #### return Write-Information $svName':'$svContent; ($svContent | Out-String).Trim() } #### function NewAppVariable { Param( [Parameter(Mandatory)] $sVarName, [ValidateSet("RegularExpression", "StartEnd", "Textual")] $sVarType = "Textual", $sVarValue = "" ) # Derived access property, ie. app.variables.$sVarName.$varcnt $varcnt = if($sVarType -eq "Textual"){"TextualContent"}Else{"CachedContent"} # If it doesn't exist, then create a new one if(-Not $app.variables.$sVarName){ ECHO "=== $sVarName NOT FOUND, ADDING IT ===" # Add var to job/app $newvar = New-Object -TypeName Ketarin.UrlVariable -ArgumentList $sVarName,$app.variables $newvar.VariableType = $sVarType $app.variables.Add($sVarName, $newvar) $app.Save() } # If it was passed a specific value, assign it if( $sVarValue -ne "" ){ $app.variables.$sVarName.$varcnt = $sVarValue } } #### #### Parse cached variable values $sname = $($App.Name); $sfilename = $($App.CurrentLocation); write-host "Filename:`t$sfilename"; $todo = PKV ( 'todo' ); write-host "ToDo:`t$todo"; Switch ($todo) { { @('fileversion', 'fv') -contains $_ } { $sversion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($sfilename).FileVersion.toString(); $app.variables.version.TextualContent = $sversion; break; } { @('upload') -contains $_ } { Start-Process -FilePath "Uploader.bat" -ArgumentList $sfilename -Wait -NoNewWindow; break; } { @('extract','extractx','x') -contains $_ } { PUSHD $app.Variables.ReplaceAllInString("{file:directory}"); Start-Process -FilePath "7z.exe" -ArgumentList 'x','-y','-r',$sfilename -Wait -NoNewWindow; POPD; break; } { @('extracte','e') -contains $_ } { PUSHD $app.Variables.ReplaceAllInString("{file:directory}"); Start-Process -FilePath "7z.exe" -ArgumentList 'e','-y','-r',$sfilename -Wait -NoNewWindow; POPD; break; } { @('mega','megaget') -contains $_ } { $sdownload = PKV ( 'sdownload' ); $sdownloadpath = PKV ( 'sdownloadpath' ); if( $sdownloadpath -ieq "" ){ $sdownloadpath = $app.Variables.ReplaceAllInString("{startuppath:directory}"); } Start-Process -FilePath "%localappdata%\MEGAcmd\mega-get.bat" -ArgumentList $sdownload,$sdownloadpath -Wait -NoNewWindow; break; } { @('copy','copyx') -contains $_ } { $copyx = $app.variables.copyx.TextualContent; Switch ($copyx) { { @('tools','gd') -contains $_ } { Copy-Item $sfilename -Destination "G:\Google Drive\Tools" -Force; break; } { @('downloads') -contains $_ } { Copy-Item $sfilename -Destination "C:\Downloads" -Force; break; } default { Copy-Item $sfilename -Destination $copyx -Force; break; } } break } { @('diagnostics','dx') -contains $_ } { $app | Select-Object * | Out-File c:\downloads\ketarin-app.txt -width 400; $app.Variables | Select-Object * | Out-File c:\downloads\ketarin-app-var.txt -width 400; $app.Variables.Keys | Select-Object * | Out-File c:\downloads\ketarin-app-var-keys.txt -width 400; $app.Variables.Values | Select-Object * | Out-File c:\downloads\ketarin-app-var-values.txt -width 400; break; } default { break; } } That's all. I thought some of you might be interested.
  7. Hi, all! Yesterday I had a need to download offline Chrome installers for new builds of v109 which will still be supported until October for Windows Server 2012 and 2012r2. Unfortunately, the only downloads I could find from Google were all for the current release (v111+). After some digging I found a way to collect the exe installers for Chrome for v109 by sending the update query to Google servers. It works quite well and I rolled it into a PowerShell script so it could easily be reused by others. You can get the script here. Here's the usage for v109/Server 2012: .\ChromeDownloader.ps1 win 64 -os 2012 This will download the current release of the offline Chrome installer for Windows Server 2012 x64. The downloaded file (right now) is 109.0.5414.129_chrome_installer.exe and would be installed using the following switches: 109.0.5414.129_chrome_installer.exe --do-not-launch-chrome --channel=stable --system-level Additional optional switches are: --create-shortcuts=2 --install-level=1 If you want to see the actual (pretty-printed) XML returned by Google you can use: .\ChromeDownloader.ps1 win 64 -os 2012 -do xml You can also use -do info to collect the permalink for the individual package. .\ChromeDownloader.ps1 win 64 -os 2012 -do info As of right now that returns: Version: 109.0.5414.129 Url: https://www.google.com/dl/release2/chrome/juzaykgd5e6nyvk27fwtbrjgoa_109.0.5414.129/109.0.5414.129_chrome_installer.exe File: 109.0.5414.129_chrome_installer.exe Hash: 4441c778f7f4b91df40350dff2b37fd4afb81a0165239ec1dd5f750834f1b54a Size: 93127208
  8. @thelimpIn response to the question, "why doesn't just replacing the version number work", I suspect the reason is that in two of the version replacements it uses the version number and "major.minor.patch.build" and in one of them it uses only "major.minor.patch". You could try to anticipate this and fiddle with the version number in the download URL, but in these cases I find it is better to just collect the real download URL directly from the site as @necrox did in the previous comment. You never know when the author will change link behavior and use the full version number or an abbreviated number in one or another place.
  9. I wonder if the problem might be something else. I finally read the actual error message (my German is not great) and it looks like it's actually failing to extract an icon from the downloaded file. Since there's no drive letter in your download path, and the call is calling a resource from the Windows drive and not the USB drive, I suspect this might be the cause. Please change the download paths to use either the explicit drive letter (d:\) or {root}. {root} will be automatically replaced by the drive letter that Ketarin is running on, so it should have the same effect while downloading but the Icon extraction and other path-related commands will have the drive letter in addition to the path, and it'll be more portable, just in case it's a USB drive. That is, change this: \Software\Windows10_Starterkit\7-Zip_{version}_{date_HP}\ To this: {root}Software\Windows10_Starterkit\7-Zip_{version}_{date_HP}\ And please let me know if that solves it for you.
  10. Please run a chkdsk, just to be sure. There might be another security product that's interfering even though it's not an antivirus, like MBAM. Deactivating Windows Defender/Security doesn't necessarily disable all features. Turn it back on then open the settings and go to Virus Protection, Manage ransomware protection, then turn off Controlled Folder Access. Then (and this is important!) close and reopen Ketarin and try again.
  11. The Everything apps are both written well and should work fine. I wouldn't recommend installing both the 32-bit and 64-bit versions on a device though. Have you tried these one by one to see if it's an issue specific to a given application? Have you watched the log as it's running to see if there's an error that may account for the issue? (CTRL+L) Have you checked the removable drive to make sure that it's not an issue with the filesystem? ("chkdsk N: /f /r /x" from an elevated prompt where N: is the drive letter) Is your antivirus/security software configured to intercept or whitelist applications on the removable drive? Note that the recent changes in default behavior to Windows Defender will prevent applications from running from untrusted locations (like USB) unless you either turn off Ransomware Protection or whitelist the location. Have you checked your antivirus logs?
  12. Can you please tell us which version of Ketarin you're using? This app doesn't have anything in the setup instructions, so if it's having problems it would happen regardless of whether it were downloaded or installed. <SetupInstructions /> I use variables in literally every path, so it's not that. If you want to use the install capability then the setup instructions should be something like: "{file}" /S As for the error, I suspect it's due to the collection of date_HP as an ISO8601 date (yyyy-MM-dd) then passing it through two unnecessary functions to reformat it - dateDigitsOnly via multireplace first to remove the names and serifs from the days, then dateLeadingZero via regexreplace to unnecessarily insert a leading zero - so that releasedate will be able to be formatted...as an ISO8601 date. Remove dateDigitsOnly, dateLeadingZero and releasedate and use this for your save in folder path: \Software\Windows10_Starterkit\7-Zip_{version}_{date_HP}\
  13. Hi, @Gerontius. What version of Ketarin are you using? The other thread you were commenting on is almost ten years old. Which app are you having problems with? Select it in the main Ketarin interface, press CTRL+C to copy the App structure, then paste it here in a code block. This will let us review it to see what's happening.
  14. I updated all my Github apps back when I created this thread and just now had to create a couple more. The list below are sample Github variables. This relies on Kuppet (though it might not always be necessary). The {version}, {sdownloadsource} and {sdownloadstub} each use "content from url (regex)". The other two use "textual content". {version} variable: url: https://github.com/VirusTotal/yara/releases/latest pattern: releases/tags?/v?([\d\.]+) {sdownloadsource} variable: url: https://github.com/VirusTotal/yara/releases/latest pattern: "([^'"\s]+expanded_assets[^'"\s]+)" {sdownloadstub} variable: url: {>}{sdownloadsource} pattern: (/[^'"]+download/v{version}[^'"]+.zip) {sdownload} variable: text: https://github.com{sdownloadstub} {schangelog} variable: text: https://github.com/VirusTotal/yara/releases/latest The {sdownloadstub} is the actual file pattern pulled from the new expanded_assets path. While this pattern will work for some, you'll need to update it for most apps.
  15. This is one of the reasons the forum exists. I have working Acrobat Reader DC apps that don't rely on anything special outside of Ketarin. When a site like Adobe changes their paths or exposed folders it just takes a little time to fix your app. For sites that use script-rendering the Kuppet tool has been an amazing workaround while keeping 99% of the effort within Ketarin and not exposing your scripts or activity to a third party like Google unnecessarily. Once configured (granted, that takes a little effort) it works with only three characters ({>}) added to new or fixed apps.
  16. I find that with Kuppet it's more likely to be a system setting causing problems than the apps. The apps are almost identical to any other, with the only Kuppet difference being the "{>}" added to the beginning of the URLs you want processed by Kuppet. I dont have any apps using softpedia but here's one that I use Kuppet for that also has the advanced delay option. <?xml version='1.0' encoding='utf-8'?> <Jobs> <ApplicationJob xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Guid="0baea9b7-6cb5-4b80-956c-31a42688a730"> <Category>Tools</Category> <WebsiteUrl /> <UserAgent /> <UserNotes /> <LastFileSize>33799</LastFileSize> <LastFileDate>2022-04-19T12:52:44.9008899</LastFileDate> <IgnoreFileInformation>false</IgnoreFileInformation> <DownloadBeta>Default</DownloadBeta> <DownloadDate xsi:nil="true" /> <CheckForUpdatesOnly>false</CheckForUpdatesOnly> <VariableChangeIndicator>version</VariableChangeIndicator> <HashVariable /> <HashType>None</HashType> <CanBeShared>true</CanBeShared> <ShareApplication>false</ShareApplication> <ExclusiveDownload>true</ExclusiveDownload> <HttpReferer /> <SetupInstructions /> <Variables> <item> <key> <string>schangelog</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>https://kolbi.cz/blog/2017/11/10/setdefaultbrowser-set-the-default-browser-per-user-on-windows-10-and-server-2016-build-1607/</TextualContent> <Name>schangelog</Name> </UrlVariable> </value> </item> <item> <key> <string>swebsite</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>https://kolbi.cz/blog/2017/11/10/setdefaultbrowser-set-the-default-browser-per-user-on-windows-10-and-server-2016-build-1607/</TextualContent> <Name>swebsite</Name> </UrlVariable> </value> </item> <item> <key> <string>snotes</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>Version can not be accurately determined due to server-side blocking</TextualContent> <Name>snotes</Name> </UrlVariable> </value> </item> <item> <key> <string>spc</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>SetDefaultBrowser</TextualContent> <Name>spc</Name> </UrlVariable> </value> </item> <item> <key> <string>sdownload</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>https://kolbi.cz/SetDefaultBrowser.zip</TextualContent> <Name>sdownload</Name> </UrlVariable> </value> </item> <item> <key> <string>splatform</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>windows</TextualContent> <Name>splatform</Name> </UrlVariable> </value> </item> <item> <key> <string>sbits</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent /> <Name>sbits</Name> </UrlVariable> </value> </item> <item> <key> <string>versionstub</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>RegularExpression</VariableType> <Regex>Version ([\d\.]+) </Regex> <PostData>redirection-delay=45</PostData> <Url>{&gt;}https://kolbi.cz/blog/2017/11/10/setdefaultbrowser-set-the-default-browser-per-user-on-windows-10-and-server-2016-build-1607/</Url> <TextualContent>{f:yyyy}{f:MM}{f:dd}</TextualContent> <Name>versionstub</Name> </UrlVariable> </value> </item> <item> <key> <string>LastUpdate</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>Get-Date -UFormat %Y%m%dT%H%M</TextualContent> <Name>LastUpdate</Name> </UrlVariable> </value> </item> <item> <key> <string>svendor</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>Christoph Kolbicz</TextualContent> <Name>svendor</Name> </UrlVariable> </value> </item> <item> <key> <string>LastVersion</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>1.5.0</TextualContent> <Name>LastVersion</Name> </UrlVariable> </value> </item> <item> <key> <string>versionshort</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>{versionstub}.0.0</TextualContent> <Name>versionshort</Name> </UrlVariable> </value> </item> <item> <key> <string>version</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>{versionshort:split:.:0}.{versionshort:split:.:1}.{versionshort:split:.:2}</TextualContent> <Name>version</Name> </UrlVariable> </value> </item> </Variables> <ExecuteCommand /> <ExecutePreCommand>if "{version}"==".0.0" exit 1</ExecutePreCommand> <ExecuteCommandType>Batch</ExecuteCommandType> <ExecutePreCommandType>Batch</ExecutePreCommandType> <SourceType>FixedUrl</SourceType> <PreviousLocation>K:\_Ketarin\Ketarin\..\Tools\SetDefaultBrowser-1.5.0.zip</PreviousLocation> <DeletePreviousFile>true</DeletePreviousFile> <Enabled>true</Enabled> <FileHippoId /> <LastUpdated>2022-04-19T12:52:44.9008899</LastUpdated> <TargetPath>..\{category}\{appname:regexreplace:([\s\t\r\n\-\&amp;]+):_}-{version}.{url:ext}</TargetPath> <FixedDownloadUrl>{sdownload}</FixedDownloadUrl> <Name>SetDefaultBrowser</Name> </ApplicationJob> </Jobs> Looks at the "versionstub" variable for how the advanced redirection-delay works (via post-data). If you have the global variables created correctly then you should have a "run_kuppet" variable and a ">" variable. The ">" just tests to make sure that kuppet is running then passes the URL to the actual Kuppet service running on whatever post you assigned in the "run_kuppet" variable. The "run_kuppet" variable tests for the process (PS) then STARTs the program with optional path and settings. If you changed the port on either it needs to be changed on both. If you didn't put kuppet.exe directly into the BIN folder beside ketarin.exe then you'll need to change the path. If you're using other advanced options (like changing the timeout) then it's important in the "run_kuppet" variable that parameters (port then timeout) be quoted together in the START command ("bin\kuppet.exe" "port timeout"). When I was first setting it up it was much easier to launch kuppet manually from a powershell prompt set to the path of the ketarin.exe file. This helps you ensure that you're using the correct path values in the START command. It also lets you see any errors and the debugging information if you have that enabled in the configuration file. Please post your ">" and "run_kuppet" values and the full system paths for both kuppet.exe and ketarin.exe. We'll help you get it sorted.
  17. It's definitely not dead, @jokerfool. @floele has not been as active but that's only because it's a mature project. Are there specific issues you're having that can't be addressed by the current version or the current beta version?
  18. I've been reviewing and updating all 102 of my github-sourced apps and every single one of the first 20 suffer from the include-fragment change. Worse yet, many of them are incapable of opening the fragment URL directly - but work when using Kuppet. This is going to be a long night.
  19. Good evening folks! If you have apps from Github you'll notice that many are not parsing anymore the last few days. This is because many apps on Github are now using a bleeding edge feature, "include-fragment", which will collect the contents of another URL and inject it into the body of the generated page, effectively creating a client-side include. In all the apps I've tested (only about a dozen right now) the downloads are being pulled from a subfolder of "/releases/" called "/expanded_assets/" with either release or tag and the release or tag name. If you're having problems with a Github download, I'd recommend a two-step download using /latest then collecting the /expanded_assets/ address then collect the download address from that as you normally would.
  20. The other two (inconsistent) sources are https://helpx.adobe.com/acrobat/release-note/release-notes-acrobat-reader.html with: DC[^'"()]+?\(([\d\.]+x?)\).+?>Continuous And this is the other one (two-stage) - URL: (https://www.adobe.com/devnet-docs/acrobatetk/tools/ReleaseNotesDC/continuous/[^'"]+)"[^<>]+>DC[^'"()]+?\(([\d\.]+x?)\).+?>Continuous Version: ([\d\.]+) \(Win
  21. Since there are two different potential sources of a version number in the changelogs for Adobe Reader now I figured I would try parsing the SCUP catalog values instead, since it's only one value and it'll always be accurate. I was hoping I could pass a parameter to the :ps function (like {myscript:ps:myparam}) but that didn't work, so I had to split it up into several scripts. That's fine, but for some reason it's still not actually consuming the last line of the ps script as I expect it to. Here's the app: <?xml version='1.0' encoding='utf-8'?> <Jobs> <ApplicationJob xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Guid="8ecc9087-14ca-420b-9a85-21e99102f5cf"> <Category>Viewers</Category> <WebsiteUrl>https://get.adobe.com/reader</WebsiteUrl> <UserAgent>{chrome}</UserAgent> <UserNotes /> <LastFileSize>312086528</LastFileSize> <LastFileDate>2022-08-10T21:37:40.503689</LastFileDate> <IgnoreFileInformation>false</IgnoreFileInformation> <DownloadBeta>Avoid</DownloadBeta> <DownloadDate>2008-11-22T23:07:01</DownloadDate> <CheckForUpdatesOnly>false</CheckForUpdatesOnly> <VariableChangeIndicator>version</VariableChangeIndicator> <HashVariable /> <HashType>None</HashType> <CanBeShared>true</CanBeShared> <ShareApplication>false</ShareApplication> <ExclusiveDownload>true</ExclusiveDownload> <HttpReferer /> <SetupInstructions /> <Variables> <item> <key> <string>schangelog</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>{schangelogps:ps}</TextualContent> <Name>schangelog</Name> </UrlVariable> </value> </item> <item> <key> <string>swebsite</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>https://get.adobe.com/reader</TextualContent> <Name>swebsite</Name> </UrlVariable> </value> </item> <item> <key> <string>snotes</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent /> <Name>snotes</Name> </UrlVariable> </value> </item> <item> <key> <string>spc</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>readerpatch</TextualContent> <Name>spc</Name> </UrlVariable> </value> </item> <item> <key> <string>sdownload</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>{sdownloadps:ps}</TextualContent> <Name>sdownload</Name> </UrlVariable> </value> </item> <item> <key> <string>LastUpdate</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>20220810T2137</TextualContent> <Name>LastUpdate</Name> </UrlVariable> </value> </item> <item> <key> <string>sbits</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>64</TextualContent> <Name>sbits</Name> </UrlVariable> </value> </item> <item> <key> <string>splatform</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>windows</TextualContent> <Name>splatform</Name> </UrlVariable> </value> </item> <item> <key> <string>svendor</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>Adobe</TextualContent> <Name>svendor</Name> </UrlVariable> </value> </item> <item> <key> <string>LastVersion</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>22.002.20191</TextualContent> <Name>LastVersion</Name> </UrlVariable> </value> </item> <item> <key> <string>version</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>{versionps:ps}</TextualContent> <Name>version</Name> </UrlVariable> </value> </item> <item> <key> <string>versionps</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>wget.exe --directory-prefix="c:\downloads\" --timestamping "https://armmf.adobe.com/arm-manifests/win/SCUP/ReaderCatalog-DC.cab" 7z.exe e -y -o"c:\downloads" c:\downloads\ReaderCatalog-DC.cab sleep -s 2; [xml]$xml = get-content "c:\downloads\Reader_Catalog.xml"; $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].LocalizedProperties.Title; if ($title.indexOf("x64") -gt 0){ $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].Properties.MoreInfoUrl; }else{ $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].LocalizedProperties.Title; $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].Properties.MoreInfoUrl; } echo $version;</TextualContent> <Name>versionps</Name> </UrlVariable> </value> </item> <item> <key> <string>schangelogps</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>wget.exe --directory-prefix="c:\downloads\" --timestamping "https://armmf.adobe.com/arm-manifests/win/SCUP/ReaderCatalog-DC.cab" 7z.exe e -y -o"c:\downloads" c:\downloads\ReaderCatalog-DC.cab sleep -s 2; [xml]$xml = get-content "c:\downloads\Reader_Catalog.xml"; $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].LocalizedProperties.Title; if ($title.indexOf("x64") -gt 0){ $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].Properties.MoreInfoUrl; }else{ $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].LocalizedProperties.Title; $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].Properties.MoreInfoUrl; } echo $changelog;</TextualContent> <Name>schangelogps</Name> </UrlVariable> </value> </item> <item> <key> <string>sdownloadps</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>wget.exe --directory-prefix="c:\downloads\" --timestamping "https://armmf.adobe.com/arm-manifests/win/SCUP/ReaderCatalog-DC.cab" 7z.exe e -y -o"c:\downloads" c:\downloads\ReaderCatalog-DC.cab sleep -s 2; [xml]$xml = get-content "c:\downloads\Reader_Catalog.xml"; $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].LocalizedProperties.Title; if ($title.indexOf("x64") -gt 0){ $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].Properties.MoreInfoUrl; }else{ $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].LocalizedProperties.Title; $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].Properties.MoreInfoUrl; } echo $url;</TextualContent> <Name>sdownloadps</Name> </UrlVariable> </value> </item> </Variables> <ExecuteCommand /> <ExecutePreCommand /> <ExecuteCommandType>Batch</ExecuteCommandType> <ExecutePreCommandType>Batch</ExecutePreCommandType> <SourceType>FixedUrl</SourceType> <DeletePreviousFile>true</DeletePreviousFile> <Enabled>true</Enabled> <FileHippoId /> <LastUpdated>2022-08-10T21:37:40.503689</LastUpdated> <TargetPath>..\{category}\{appname:regexreplace:([\s\t\r\n\-\&amp;]+):_}-{version}.{url:ext}</TargetPath> <FixedDownloadUrl>{sdownload}</FixedDownloadUrl> <Name>__Adobe Reader DC Patch (test x64)</Name> </ApplicationJob> </Jobs> The powershell (below) works in a powershell window and you can see that it is consuming them correctly in the log below. Here's the powershell script for the version parser: wget.exe --directory-prefix="c:\downloads\" --timestamping "https://armmf.adobe.com/arm-manifests/win/SCUP/ReaderCatalog-DC.cab" 7z.exe e -y -o"c:\downloads" c:\downloads\ReaderCatalog-DC.cab sleep -s 2; [xml]$xml = get-content "c:\downloads\Reader_Catalog.xml"; $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].LocalizedProperties.Title; if ($title.indexOf("x64") -gt 0){ $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].Properties.MoreInfoUrl; }else{ $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].LocalizedProperties.Title; $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].Properties.MoreInfoUrl; } echo $version; Here's the log: 2022-08-16 22:49:21: Update started with 1 application(s) 2022-08-16 22:49:21: __Adobe Reader DC Patch (test x64): Replacing {sdownloadps} in '{sdownloadps:ps}' with 'wget.exe --directory-prefix="c:\downloads\" --timestamping "https://armmf.adobe.com/arm-manifests/win/SCUP/ReaderCatalog-DC.cab" 7z.exe e -y -o"c:\downloads" c:\downloads\ReaderCatalog-DC.cab sleep -s 2; [xml]$xml = get-content "c:\downloads\Reader_Catalog.xml"; $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].LocalizedProperties.Title; if ($title.indexOf("x64") > 0){ $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].Properties.MoreInfoUrl; }else{ $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].LocalizedProperties.Title; $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].Properties.MoreInfoUrl; } echo $url;' 2022-08-16 22:49:24: PowerShell: 2022-08-16 22:49:24: PowerShell: 7-Zip (a) 22.01 (x86) : Copyright (c) 1999-2022 Igor Pavlov : 2022-07-15 2022-08-16 22:49:24: PowerShell: 2022-08-16 22:49:24: PowerShell: Scanning the drive for archives: 2022-08-16 22:49:24: PowerShell: 1 file, 96074 bytes (94 KiB) 2022-08-16 22:49:24: PowerShell: 2022-08-16 22:49:24: PowerShell: Extracting archive: c:\downloads\ReaderCatalog-DC.cab 2022-08-16 22:49:24: PowerShell: 2022-08-16 22:49:24: PowerShell: WARNINGS: 2022-08-16 22:49:24: PowerShell: There are data after the end of archive 2022-08-16 22:49:24: PowerShell: 2022-08-16 22:49:24: PowerShell: -- 2022-08-16 22:49:24: PowerShell: Path = c:\downloads\ReaderCatalog-DC.cab 2022-08-16 22:49:24: PowerShell: Type = Cab 2022-08-16 22:49:24: PowerShell: WARNINGS: 2022-08-16 22:49:24: PowerShell: There are data after the end of archive 2022-08-16 22:49:24: PowerShell: Physical Size = 86082 2022-08-16 22:49:24: PowerShell: Tail Size = 9992 2022-08-16 22:49:24: PowerShell: Method = MSZip 2022-08-16 22:49:24: PowerShell: Blocks = 1 2022-08-16 22:49:24: PowerShell: Volumes = 1 2022-08-16 22:49:24: PowerShell: Volume Index = 0 2022-08-16 22:49:24: PowerShell: ID = 0 2022-08-16 22:49:24: PowerShell: 2022-08-16 22:49:24: PowerShell: Everything is Ok 2022-08-16 22:49:24: PowerShell: 2022-08-16 22:49:24: PowerShell: Archives with Warnings: 1 2022-08-16 22:49:24: PowerShell: 2022-08-16 22:49:24: PowerShell: Warnings: 1 2022-08-16 22:49:24: PowerShell: Size: 2581238 2022-08-16 22:49:24: PowerShell: Compressed: 96074 2022-08-16 22:49:24: PowerShell: https://ardownload3.adobe.com/pub/adobe/reader/win/AcrobatDC/2200220191/AcroRdrDCUpd2200220191_MUI.msp 2022-08-16 22:49:24: __Adobe Reader DC Patch (test x64): Replacing {sdownload} in '{sdownload}' with '' 2022-08-16 22:49:24: __Adobe Reader DC Patch (test x64): Checking if update is required... 2022-08-16 22:49:24: __Adobe Reader DC Patch (test x64): Replacing {versionps} in '{versionps:ps}' with 'wget.exe --directory-prefix="c:\downloads\" --timestamping "https://armmf.adobe.com/arm-manifests/win/SCUP/ReaderCatalog-DC.cab" 7z.exe e -y -o"c:\downloads" c:\downloads\ReaderCatalog-DC.cab sleep -s 2; [xml]$xml = get-content "c:\downloads\Reader_Catalog.xml"; $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].LocalizedProperties.Title; if ($title.indexOf("x64") > 0){ $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].Properties.MoreInfoUrl; }else{ $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].LocalizedProperties.Title; $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].Properties.MoreInfoUrl; } echo $version;' 2022-08-16 22:49:26: PowerShell: 2022-08-16 22:49:26: PowerShell: 7-Zip (a) 22.01 (x86) : Copyright (c) 1999-2022 Igor Pavlov : 2022-07-15 2022-08-16 22:49:26: PowerShell: 2022-08-16 22:49:26: PowerShell: Scanning the drive for archives: 2022-08-16 22:49:26: PowerShell: 1 file, 96074 bytes (94 KiB) 2022-08-16 22:49:26: PowerShell: 2022-08-16 22:49:26: PowerShell: Extracting archive: c:\downloads\ReaderCatalog-DC.cab 2022-08-16 22:49:26: PowerShell: 2022-08-16 22:49:26: PowerShell: WARNINGS: 2022-08-16 22:49:26: PowerShell: There are data after the end of archive 2022-08-16 22:49:26: PowerShell: 2022-08-16 22:49:26: PowerShell: -- 2022-08-16 22:49:26: PowerShell: Path = c:\downloads\ReaderCatalog-DC.cab 2022-08-16 22:49:26: PowerShell: Type = Cab 2022-08-16 22:49:26: PowerShell: WARNINGS: 2022-08-16 22:49:26: PowerShell: There are data after the end of archive 2022-08-16 22:49:26: PowerShell: Physical Size = 86082 2022-08-16 22:49:26: PowerShell: Tail Size = 9992 2022-08-16 22:49:26: PowerShell: Method = MSZip 2022-08-16 22:49:26: PowerShell: Blocks = 1 2022-08-16 22:49:26: PowerShell: Volumes = 1 2022-08-16 22:49:26: PowerShell: Volume Index = 0 2022-08-16 22:49:26: PowerShell: ID = 0 2022-08-16 22:49:26: PowerShell: 2022-08-16 22:49:26: PowerShell: Everything is Ok 2022-08-16 22:49:26: PowerShell: 2022-08-16 22:49:26: PowerShell: Archives with Warnings: 1 2022-08-16 22:49:26: PowerShell: 2022-08-16 22:49:26: PowerShell: Warnings: 1 2022-08-16 22:49:26: PowerShell: Size: 2581238 2022-08-16 22:49:26: PowerShell: Compressed: 96074 2022-08-16 22:49:26: PowerShell: 22.002.20191 2022-08-16 22:49:26: __Adobe Reader DC Patch (test x64): Replacing {version} in '{version}' with '' 2022-08-16 22:49:26: __Adobe Reader DC Patch (test x64): Update not required, {version} has not changed 2022-08-16 22:49:26: __Adobe Reader DC Patch (test x64): Replacing {versionps} in '{versionps:ps}' with 'wget.exe --directory-prefix="c:\downloads\" --timestamping "https://armmf.adobe.com/arm-manifests/win/SCUP/ReaderCatalog-DC.cab" 7z.exe e -y -o"c:\downloads" c:\downloads\ReaderCatalog-DC.cab sleep -s 2; [xml]$xml = get-content "c:\downloads\Reader_Catalog.xml"; $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].LocalizedProperties.Title; if ($title.indexOf("x64") > 0){ $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].Properties.MoreInfoUrl; }else{ $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].LocalizedProperties.Title; $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].Properties.MoreInfoUrl; } echo $version;' 2022-08-16 22:49:29: PowerShell: 2022-08-16 22:49:29: PowerShell: 7-Zip (a) 22.01 (x86) : Copyright (c) 1999-2022 Igor Pavlov : 2022-07-15 2022-08-16 22:49:29: PowerShell: 2022-08-16 22:49:29: PowerShell: Scanning the drive for archives: 2022-08-16 22:49:29: PowerShell: 1 file, 96074 bytes (94 KiB) 2022-08-16 22:49:29: PowerShell: 2022-08-16 22:49:29: PowerShell: Extracting archive: c:\downloads\ReaderCatalog-DC.cab 2022-08-16 22:49:29: PowerShell: 2022-08-16 22:49:29: PowerShell: WARNINGS: 2022-08-16 22:49:29: PowerShell: There are data after the end of archive 2022-08-16 22:49:29: PowerShell: 2022-08-16 22:49:29: PowerShell: -- 2022-08-16 22:49:29: PowerShell: Path = c:\downloads\ReaderCatalog-DC.cab 2022-08-16 22:49:29: PowerShell: Type = Cab 2022-08-16 22:49:29: PowerShell: WARNINGS: 2022-08-16 22:49:29: PowerShell: There are data after the end of archive 2022-08-16 22:49:29: PowerShell: Physical Size = 86082 2022-08-16 22:49:29: PowerShell: Tail Size = 9992 2022-08-16 22:49:29: PowerShell: Method = MSZip 2022-08-16 22:49:29: PowerShell: Blocks = 1 2022-08-16 22:49:29: PowerShell: Volumes = 1 2022-08-16 22:49:29: PowerShell: Volume Index = 0 2022-08-16 22:49:29: PowerShell: ID = 0 2022-08-16 22:49:29: PowerShell: 2022-08-16 22:49:29: PowerShell: Everything is Ok 2022-08-16 22:49:29: PowerShell: 2022-08-16 22:49:29: PowerShell: Archives with Warnings: 1 2022-08-16 22:49:29: PowerShell: 2022-08-16 22:49:29: PowerShell: Warnings: 1 2022-08-16 22:49:29: PowerShell: Size: 2581238 2022-08-16 22:49:29: PowerShell: Compressed: 96074 2022-08-16 22:49:29: PowerShell: 22.002.20191 2022-08-16 22:49:29: __Adobe Reader DC Patch (test x64): Replacing {version} in '{version}' with '' 2022-08-16 22:49:29: __Adobe Reader DC Patch (test x64): Replacing {spc} in '{spc}' with 'readerpatch' 2022-08-16 22:49:29: __Adobe Reader DC Patch (test x64): Replacing {sdownloadps} in '{sdownloadps:ps}' with 'wget.exe --directory-prefix="c:\downloads\" --timestamping "https://armmf.adobe.com/arm-manifests/win/SCUP/ReaderCatalog-DC.cab" 7z.exe e -y -o"c:\downloads" c:\downloads\ReaderCatalog-DC.cab sleep -s 2; [xml]$xml = get-content "c:\downloads\Reader_Catalog.xml"; $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].LocalizedProperties.Title; if ($title.indexOf("x64") > 0){ $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-1].Properties.MoreInfoUrl; }else{ $title = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].LocalizedProperties.Title; $url = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.originfile.OriginUri; $version = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].InstallableItem.ApplicabilityRules.Metadata.MsiPatchMetadata.MsiPatch.TargetProduct.UpdatedVersion; $changelog = $xml.SystemsManagementCatalog.SoftwareDistributionPackage[-2].Properties.MoreInfoUrl; } echo $url;' 2022-08-16 22:49:31: PowerShell: 2022-08-16 22:49:31: PowerShell: 7-Zip (a) 22.01 (x86) : Copyright (c) 1999-2022 Igor Pavlov : 2022-07-15 2022-08-16 22:49:31: PowerShell: 2022-08-16 22:49:31: PowerShell: Scanning the drive for archives: 2022-08-16 22:49:31: PowerShell: 1 file, 96074 bytes (94 KiB) 2022-08-16 22:49:31: PowerShell: 2022-08-16 22:49:31: PowerShell: Extracting archive: c:\downloads\ReaderCatalog-DC.cab 2022-08-16 22:49:31: PowerShell: 2022-08-16 22:49:31: PowerShell: WARNINGS: 2022-08-16 22:49:31: PowerShell: There are data after the end of archive 2022-08-16 22:49:31: PowerShell: 2022-08-16 22:49:31: PowerShell: -- 2022-08-16 22:49:31: PowerShell: Path = c:\downloads\ReaderCatalog-DC.cab 2022-08-16 22:49:31: PowerShell: Type = Cab 2022-08-16 22:49:31: PowerShell: WARNINGS: 2022-08-16 22:49:31: PowerShell: There are data after the end of archive 2022-08-16 22:49:31: PowerShell: Physical Size = 86082 2022-08-16 22:49:31: PowerShell: Tail Size = 9992 2022-08-16 22:49:31: PowerShell: Method = MSZip 2022-08-16 22:49:31: PowerShell: Blocks = 1 2022-08-16 22:49:31: PowerShell: Volumes = 1 2022-08-16 22:49:31: PowerShell: Volume Index = 0 2022-08-16 22:49:31: PowerShell: ID = 0 2022-08-16 22:49:31: PowerShell: 2022-08-16 22:49:31: PowerShell: Everything is Ok 2022-08-16 22:49:31: PowerShell: 2022-08-16 22:49:31: PowerShell: Archives with Warnings: 1 2022-08-16 22:49:31: PowerShell: 2022-08-16 22:49:31: PowerShell: Warnings: 1 2022-08-16 22:49:31: PowerShell: Size: 2581238 2022-08-16 22:49:31: PowerShell: Compressed: 96074 2022-08-16 22:49:31: PowerShell: https://ardownload3.adobe.com/pub/adobe/reader/win/AcrobatDC/2200220191/AcroRdrDCUpd2200220191_MUI.msp 2022-08-16 22:49:31: __Adobe Reader DC Patch (test x64): Replacing {sdownload} in '{sdownload}' with '' 2022-08-16 22:49:31: __Adobe Reader DC Patch (test x64): Replacing {LastUpdate} in '{LastUpdate}' with '20220810T2137' 2022-08-16 22:49:31: __Adobe Reader DC Patch (test x64): Replacing {sbits} in '{sbits}' with '64' 2022-08-16 22:49:31: __Adobe Reader DC Patch (test x64): Replacing {splatform} in '{splatform}' with 'windows' 2022-08-16 22:49:31: __Adobe Reader DC Patch (test x64): Replacing {LastVersion} in '{LastVersion}' with '22.002.20191' 2022-08-16 22:49:31: Update finished I'm sure I'm missing something obvious, but I'm just not seeing the bug. Any thoughts?
  22. I updated the Chrome & Firefox post-update commands so they use the newer user-agent string formats.
  23. Oh, I also added another feature to my templates. Often when I'm using EXIT 3 it's because Ketarin is not working to download a file. Either I have to pass it to aria2, mega-get, or the download is behind a paywall/login that doesn't play well with Ketarin. To minimize some of the related issues while ensuring that it passes the proper context to my after-update script so it can send the correct data to the server I created a new global variable named "snodownload" with the value "https://www.iana.org/_img/bookmark_icon.ico". I always use a variable named "sdownload" to represent the download URL. This allows me to still capture the download url to "sdownload" and use "snodownload" in the download field so it will be a publicly accessible binary file (so Ketarin won't complain) and the after-update script still works. I don't have to go looking for a reliable binary link, just use the same global variable. Good stuff.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.