In a perfect world, the unzip and MD5 computation wouldn't suck the whole
file into memory, and even better, would allow for progress UI by not
blocking and using pseudo-threads or workers.  Calling out to external
applications doesn't provide for progress UI.

But that's more work and I'm not the one volunteering to do the work, so
if you want to call out to powershell to do unzip and md5 (or SHA) that's
fine with me.  It will be better than what we have now.

Or, if Adobe will have a 64-bit installer soon, we can also just switch to
that.  Whoever does the work gets to make the call, IMO.

Thanks,
-Alex

On 6/21/17, 10:17 AM, "Josh Tynjala" <joshtynj...@gmail.com> wrote:

>> I think we still want to do MD5 computation because bad downloads still
>happen and the unzip crashes with an ugly error when using Ant directly.
>But other PMC members may have different opinions.
>
>Yeah, I assumed that MD5 computation would need to stay in there for the
>Flex installer.
>
>> Does powershell have a way to compute a checksum?
>
>I did a quick search, and it looks like there's a way to do it with
>PowerShell.
>
>> Do we know if the AIR File APIs would allow us to unzip and compute MD5s
>without sucking the whole file into memory?
>
>I'm guessing that we could change the AS3 code to use a FileStream so that
>we don't need to load the entire file into memory. I don't know about the
>MD5 implementation, but it looked like unzipping was implemented in a way
>that required the entire file. I don't know how much effort it would be to
>change that code to stream the file instead. I assume it's possible,
>though.
>
>- Josh
>
>On Wed, Jun 21, 2017 at 9:48 AM, Alex Harui <aha...@adobe.com.invalid>
>wrote:
>
>> I think we still want to do MD5 computation because bad downloads still
>> happen and the unzip crashes with an ugly error when using Ant directly.
>> But other PMC members may have different opinions.  Does powershell
>>have a
>> way to compute a checksum?
>>
>> I have not looked into this problem at all.  Do we know if the AIR File
>> APIs would allow us to unzip and compute MD5s without sucking the whole
>> file into memory?
>>
>> Also, didn’t I see a 64-bit Native Installer beta from Adobe?  Maybe
>>that
>> will be released soon and we can use that to solve this problem?
>>
>> -Alex
>>
>> On 6/21/17, 8:57 AM, "Josh Tynjala" <joshtynj...@gmail.com> wrote:
>>
>> >For the Feathers SDK Manager, I ripped out the MD5 part because I
>>didn't
>> >want to maintain a list of hashes.
>> >
>> >I guess it's possible that the MD5 computation will still require too
>>much
>> >memory.
>> >
>> >- Josh
>> >
>> >On Tue, Jun 20, 2017 at 5:27 PM, Alex Harui <aha...@adobe.com.invalid>
>> >wrote:
>> >
>> >> Sounds ok to me.   Is your installer running an MD5 computation on
>>these
>> >> huge AIR SDKs?  I'm wondering if that step has enough memory.  If it
>>is
>> >> working for you then it probably does.
>> >>
>> >> Thanks,
>> >> -Alex
>> >>
>> >> On 6/20/17, 3:13 PM, "Josh Tynjala" <joshtynj...@gmail.com> wrote:
>> >>
>> >> >In the Feathers SDK Manager, I also had the same issue with Error
>> >>#1000 on
>> >> >Windows as we're having with the Flex SDK Installer. I was able to
>> >>come up
>> >> >with a solution for this issue.
>> >> >
>> >> >To recap, on Windows, the Installer currently allocates more memory
>> >>than
>> >> >is
>> >> >allowed by a 32-bit process. The file size of the AIR SDK has grown
>> >> >significantly recently, and that brought us over the threshold. The
>> >> >Installer loads the entire zip file for the AIR SDK into memory to
>> >>expand
>> >> >it to the file system with ActionScript. My solution is to have a
>> >>native
>> >> >system process expand the zip file instead.
>> >> >
>> >> >Windows PowerShell is able to expand zip files. Here is the command
>> >>that I
>> >> >came up with that does the trick:
>> >> >
>> >> >C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command &
>> >> >{Param([string]$zipPath,[string]$outPath)$shell = New-Object
>> -ComObject
>> >> >shell.application;$zip = $shell.NameSpace($zipPath);New-Item -path
>> >> >$outPath
>> >> >-type directory
>> >>-force;$shell.NameSpace($outPath).CopyHere($zip.items(),
>> >> 4
>> >> >+ 16);[Environment]::Exit(0);} "src.zip" "destFolder"
>> >> >
>> >> >(Replace src.zip and destFolder with the actual paths, obviously)
>> >> >
>> >> >PowerShell is installed by default as far back as Windows 7, and I
>>have
>> >> >tested that this script runs successfully even using that older
>> >>version of
>> >> >PowerShell. The Adobe AIR system requirements require Windows 7 or
>> >>newer,
>> >> >so while PowerShell may not be available on much older versions of
>> >> >Windows,
>> >> >Adobe AIR doesn't officially run there either, so the Installer
>>should
>> >>be
>> >> >able to invoke PowerShell safely.
>> >> >
>> >> >http://www.adobe.com/products/air/tech-specs.html
>> >> >
>> >> >It's worth mentioning that our AntOnAIR library and the Flex SDK
>> >>Installer
>> >> >uses /usr/bin/tar to expan tar files on macOS, so invoking system
>> >> >executables is already something that we've done in this codebase.
>> >> >
>> >> >You can see how I call PowerShell with NativeProcess in context in
>>the
>> >> >Unzip class in my fork of AntOnAIR:
>> >> >
>> >> >https://na01.safelinks.protection.outlook.com/?url=
>> >> https%3A%2F%2Fgithub.co
>> >> >m%2FBowlerHatLLC%2Ffeathers-sdk-manager%2Fblob%
>> >> 2F3a5fcd7015f102e66a2ab10f1
>> >> >bc21a0e67485e71%2Fant_on_air%2Fsrc%2Forg%2Fapache%2Fflex%
>> >> 2Fant%2Ftags%2FUn
>> >> >zip.as%23L143&data=02%7C01%7C%7C1cbcac130efc4276cf2708d4b829
>> >> c171%7Cfa7b1b5
>> >> >a7b34438794aed2c178decee1%7C0%7C0%7C636335936869442071&
>> >> sdata=cPU9CRqq%2B4y
>> >> >EdhQuii4UpRPGV4UXVQzqSGYJfeJHy0U%3D&reserved=0
>> >> >
>> >> >I'd be happy to make these changes in the Flex SDK Installer too,
>> >>unless I
>> >> >hear any objections.
>> >> >
>> >> >- Josh
>> >>
>> >>
>>
>>

Reply via email to