diff --git a/scripts/download_windows_msix.ps1 b/scripts/download_windows_msix.ps1 new file mode 100644 index 00000000..3f94afae --- /dev/null +++ b/scripts/download_windows_msix.ps1 @@ -0,0 +1,4 @@ +# Downloads the MSIX signed by Microsoft +# This is useful to publish the MSIX outside of the store +# Original script can be found in https://github.com/MattiasC85/Scripts/blob/master/OSD/Download-AppxFromStore.ps1 +.\scripts\msix\msix_downloader.ps1 -StoreURL https://www.microsoft.com/store/productId/9NCB4Z0TZ6RR diff --git a/scripts/msix/msix_downloader.ps1 b/scripts/msix/msix_downloader.ps1 new file mode 100644 index 00000000..2439a723 --- /dev/null +++ b/scripts/msix/msix_downloader.ps1 @@ -0,0 +1,130 @@ +<# + +Update 2020-02-18 +Thanks @BruceDawson0xB for pointing out the flaw in the regex pattern. if %tmp% began with a lowercase char the script would fail. + +Update 2020-02-14 +Thanks @jarwidmark for letting me know that this had Office as a dependency and for testing the workaround. + -The script now works even if you don't have Office installed. + +Downloads any free app and its dependencies from the Microsoft store. + +Drivers are starting to implement store apps to be fully functional. +The analogue 3.5mm headphone connector not working on some models without the app. +The driver package from the manufacturer only contains a batch file which opens the store in your web browser. +And I can't find the app in the business store... + +Also heard of a similar case with the thunderbolt app. + +If the manufacturers would include these in their driver packages I wouldn't have to do this. +But I can see why they don't.. + +There's this "small" issue with deploying .Appx and AppxBundles during an OSD. +But that script will be done and uploaded in a cuple of days or so. :) + + +The real heroes here are the ppl behind this site: +https://store.rg-adguard.net + +I'm just poking their API. + +-StoreURL Examples: + +-StoreURL https://www.microsoft.com/store/apps/9n6f0jv38ph1 +-StoreURL https://www.microsoft.com/en-us/p/thunderbolt-control-center/9n6f0jv38ph1 +#> + +Param ( + [Parameter(Mandatory=$True)] + [string] $StoreURL, + [Parameter(Mandatory=$False)] + $SavePathRoot="%tmp%" + ) + +# + +if ($StoreURL.EndsWith("/")) +{ + #write-host "Ends with '/'" + $StoreURL=$StoreURL.Remove($StoreUrl.Length-1,1) +} + +$wchttp=[System.Net.WebClient]::new() +$URI = "https://store.rg-adguard.net/api/GetFiles" +$myParameters = "type=url&url=$($StoreURL)" +#&ring=Retail&lang=sv-SE" + +$wchttp.Headers[[System.Net.HttpRequestHeader]::ContentType]="application/x-www-form-urlencoded" +$HtmlResult = $wchttp.UploadString($URI, $myParameters) + +$Start=$HtmlResult.IndexOf("

The links were successfully received from the Microsoft Store server.

") +#write-host $start + +if ($Start -eq -1) +{ + write-host "Could not get the links, please check the StoreURL." + exit +} + +$TableEnd=($HtmlResult.LastIndexOf("")+8) + + +$SemiCleaned=$HtmlResult.Substring($start,$TableEnd-$start) + +#https://stackoverflow.com/questions/46307976/unable-to-use-ihtmldocument2 +$newHtml=New-Object -ComObject "HTMLFile" +try { + # This works in PowerShell with Office installed + $newHtml.IHTMLDocument2_write($SemiCleaned) +} +catch { + # This works when Office is not installed + $src = [System.Text.Encoding]::Unicode.GetBytes($SemiCleaned) + $newHtml.write($src) +} + +$ToDownload=$newHtml.getElementsByTagName("a") | Select-Object textContent, href + +$SavePathRoot=$([System.Environment]::ExpandEnvironmentVariables("$SavePathRoot")) + +$LastFrontSlash=$StoreURL.LastIndexOf("/") +$ProductID=$StoreURL.Substring($LastFrontSlash+1,$StoreURL.Length-$LastFrontSlash-1) + +# OldRegEx Failed when the %tmp% started with a lowercase char +#if ([regex]::IsMatch("$SavePathRoot\$ProductID","([,!@?#$%^&*()\[\]]+|\\\.\.|\\\\\.|\.\.\\\|\.\\\|\.\.\/|\.\/|\/\.\.|\/\.|;|(?