Squirrel.windows: Using UpdateManager with Azure blob storage

Created on 29 May 2018  Â·  8Comments  Â·  Source: Squirrel/Squirrel.Windows

Hi I am struggling a bit with updating my app based on Azure blob storage with an SAS URL. I push my release files directly from VSTS to my blob container.

My URL looks like this: https://**.blob.core.windows.net/suris-releases?TOKEN&comp=list&restype=container

which gives me this XML page:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<EnumerationResults ServiceEndpoint="https://****.blob.core.windows.net/" ContainerName="CONTAINERNAME">
<Blobs>
<Blob>
<Name>RELEASES</Name>
<Properties>
<Last-Modified>Mon, 28 May 2018 14:21:48 GMT</Last-Modified>
<Etag>0x8D5C4A6592908BE</Etag>
<Content-Length>75</Content-Length>
<Content-Type>application/octet-stream</Content-Type>
<Content-Encoding/>
<Content-Language/>
<Content-MD5>****</Content-MD5>
<Cache-Control/>
<Content-Disposition/>
<BlobType>BlockBlob</BlobType>
<AccessTier>Hot</AccessTier>
<AccessTierInferred>true</AccessTierInferred>
<LeaseStatus>unlocked</LeaseStatus>
<LeaseState>available</LeaseState>
<ServerEncrypted>true</ServerEncrypted>
</Properties>
</Blob>
<Blob>
<Name>Setup.exe</Name>
<Properties>
<Last-Modified>Mon, 28 May 2018 14:21:49 GMT</Last-Modified>
<Etag>0x8D5C4A65A1C6BB8</Etag>
<Content-Length>69489664</Content-Length>
<Content-Type>application/octet-stream</Content-Type>
<Content-Encoding/>
<Content-Language/>
<Content-MD5>****</Content-MD5>
<Cache-Control/>
<Content-Disposition/>
<BlobType>BlockBlob</BlobType>
<AccessTier>Hot</AccessTier>
<AccessTierInferred>true</AccessTierInferred>
<LeaseStatus>unlocked</LeaseStatus>
<LeaseState>available</LeaseState>
<ServerEncrypted>true</ServerEncrypted>
</Properties>
</Blob>
<Blob>
<Name>Setup.msi</Name>
<Properties>
<Last-Modified>Mon, 28 May 2018 14:21:49 GMT</Last-Modified>
<Etag>0x8D5C4A65A1FC748</Etag>
<Content-Length>69521408</Content-Length>
<Content-Type>application/octet-stream</Content-Type>
<Content-Encoding/>
<Content-Language/>
<Content-MD5>****</Content-MD5>
<Cache-Control/>
<Content-Disposition/>
<BlobType>BlockBlob</BlobType>
<AccessTier>Hot</AccessTier>
<AccessTierInferred>true</AccessTierInferred>
<LeaseStatus>unlocked</LeaseStatus>
<LeaseState>available</LeaseState>
<ServerEncrypted>true</ServerEncrypted>
</Properties>
</Blob>
<Blob>
<Name>Suris-0.1.0-full.nupkg</Name>
<Properties>
<Last-Modified>Mon, 28 May 2018 14:21:49 GMT</Last-Modified>
<Etag>0x8D5C4A65A1FC748</Etag>
<Content-Length>68915371</Content-Length>
<Content-Type>application/octet-stream</Content-Type>
<Content-Encoding/>
<Content-Language/>
<Content-MD5>****</Content-MD5>
<Cache-Control/>
<Content-Disposition/>
<BlobType>BlockBlob</BlobType>
<AccessTier>Hot</AccessTier>
<AccessTierInferred>true</AccessTierInferred>
<LeaseStatus>unlocked</LeaseStatus>
<LeaseState>available</LeaseState>
<ServerEncrypted>true</ServerEncrypted>
</Properties>
</Blob>
</Blobs>
<NextMarker/>
</EnumerationResults>

I guess this is not a compatible URL for UpdateManager right?
Could anybody help me how I can use this blob storage with Squirrel?

Thanks!

Most helpful comment

You can construct webclient object with blob querystring namevalue pairs and pass it to updatemanager with url.

        var client = new WebClient();
        NameValueCollection col = new NameValueCollection();
        col.Add("sv","2019-10-10");
        col.Add("ss","xx");
        col.Add("srt","xxx");
        col.Add("sp","xxx");
        col.Add("se","xxx");
        col.Add("st","xxx");
        col.Add("spr","xxx");
        col.Add("sig","xxxxx");
        client.QueryString = col;
        var fileDownloader = new Squirrel.FileDownloader(client);
       using (var manager = new UpdateManager("https://blobname.blob.core.windows.net/container?yoursastoken", urlDownloader: fileDownloader);

All 8 comments

Small update... phewww.

I created a Azure Data Factory Task which copies the release blobs to my file storage folder. Then I created a function app which looks every 3 minutes for blob changes and fires the data factory trigger when there are new or updated blobs. Now i can access the Azure File Share like a network share. Pretty big workflow just to access some files :)

I recommend using S3 I guess? This part of Azure sounds like a tire fire

I'm having this exact issue, we're storing all of the nupkg files and RELEASES file in blob storage in Azure - to access them we have to use a SAS token to avoid unauthorised access.

It seems as though squirrel can check for updates fine but when downloading the file, it strips off the query string. Is there any way around this?

Relevant logs:

2018-10-10 16:10:15> FileDownloader: Downloading url: https://<blob container url>/RELEASES?<redacted token query string>&localVersion=0.0.10&arch=amd64
2018-10-10 16:10:15> FileDownloader: Downloading file: https://<blob container url>/program-0.0.11-full.nupkg

hi @SEAHood

Did you find any solution to this problem ?

I am struggling with it as well.

Thanks

-Kalpesh

hi @SEAHood

Did you find any solution to this problem ?

I am struggling with it as well.

Thanks

-Kalpesh

Unfortunately not Kalpesh, we used an anonymous access link for the files for a while but in the end we scrapped the project. It's been a while though so there may now be a solution, but not to my knowledge!
Best of luck
Sam

Thanks Sam.

Vaagha Consultancy Limited
37, Office On The Hill,
Stanmore Hill,
Stanmore,
HA7 3DS

Phone : +44-7743391227
Email : kalpesh.[email protected]kalpesh.shah@vaagha.com
Web : www.vaagha.comhttp://www.vaagha.com/

From: Sam notifications@github.com
Sent: 05 September 2019 08:40
To: Squirrel/Squirrel.Windows Squirrel.Windows@noreply.github.com
Cc: Kalpesh Shah - Vaagha kalpesh.shah@vaagha.com; Comment comment@noreply.github.com
Subject: Re: [Squirrel/Squirrel.Windows] Using UpdateManager with Azure blob storage (#1324)

hi @SEAHoodhttps://github.com/SEAHood

Did you find any solution to this problem ?

I am struggling with it as well.

Thanks

-Kalpesh

Unfortunately not Kalpesh, we used an anonymous access link for the files for a while but in the end we scrapped the project. It's been a while though so there may now be a solution, but not to my knowledge!
Best of luck
Sam

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/Squirrel/Squirrel.Windows/issues/1324?email_source=notifications&email_token=ACXG2UO7XEB34SVSYNSJTUDQICZV3A5CNFSM4FCEBGS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD56FCLY#issuecomment-528240943, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ACXG2UJVDID2WTK3BZBYZCTQICZV3ANCNFSM4FCEBGSQ.

You can construct webclient object with blob querystring namevalue pairs and pass it to updatemanager with url.

        var client = new WebClient();
        NameValueCollection col = new NameValueCollection();
        col.Add("sv","2019-10-10");
        col.Add("ss","xx");
        col.Add("srt","xxx");
        col.Add("sp","xxx");
        col.Add("se","xxx");
        col.Add("st","xxx");
        col.Add("spr","xxx");
        col.Add("sig","xxxxx");
        client.QueryString = col;
        var fileDownloader = new Squirrel.FileDownloader(client);
       using (var manager = new UpdateManager("https://blobname.blob.core.windows.net/container?yoursastoken", urlDownloader: fileDownloader);

Thank you, @ragbn! I can confirm that the above approach works.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

greyivy picture greyivy  Â·  4Comments

patrickklaeren picture patrickklaeren  Â·  4Comments

shiftkey picture shiftkey  Â·  4Comments

Andrew-Hanlon picture Andrew-Hanlon  Â·  4Comments

estyfen picture estyfen  Â·  4Comments