Jump to content
  • Announcements

    • AndalayBay

      Orphan Attachments   07/31/2018

      I have been doing some housekeeping lately and I've noticed that I had a lot of orphaned attachments. Attachments get orphaned when the PM or post is deleted without removing the attachment first. Deleting a PM or post does not delete the attachment and the file or image remain on the server. I'd like to ask all members to go through their attachments and delete any attachments you don't need anymore or those that have been orphaned. Where can I get a list of my attachments? Click on your display name in the upper right corner of the forums and pick "My Attachments" from the drop-down list. How can I tell an attachment is orphaned? If the PM has been deleted, you'll see a message like this in your attachment list: Unfortunately there is no message if the post has been deleted, so please check your old posts. We do purge old birthday threads every once in a while. Also some hosted projects have been shut down, so you may have orphaned attachments on one of those locations. Thanks!

Schtearn

Members
  • Content count

    2,080
  • Joined

  • Last visited

  • Days Won

    31

Posts posted by Schtearn


  1. Sorry for the delay, just uninstalled VS2015 in favour of 2017 on the other machine.

    Using his example at the bottom of LzmaLib.c, it looks to be okay as long as one supplies a byte array. Sure, a warning occurs on the conversion from char to byte- but the size values of the passed structures check out.

    Incredibuild has been included in VS for sometime now- would it make any difference to projects like this, I wonder?


  2. What would we be splitting to planets up with (apart from - of course Pacman, Inky, Blinky, Pinky and Clyde.)

    ...

    Even Wikipedia is getting in on the Big Brother act now:

    Quote
    Someone (probably you) recently logged in to your account from a new device. If this was you, then you can disregard this message. If it wasn't you, then it's recommended that you change your password, and check your account activity.  
     
    Help  Change password
           
       
    To control which emails we send you, check your preferences.
    Wikimedia Foundation, 1 Montgomery Street, Suite 1600, San Francisco, CA 94104, USA

     


  3. Yes, will check on the other machine. They could have been created by VS10 actually- but can't recall the folder being there. As you know the Windows 10 major updates actually touch files which aren't theirs- so they could have had older timestamps.

    Edit: Some time ago, my ISP (Telstra) ran an RPC relating to some issue with the account password- remember certain file and registry remnants found on the machine post-session- could be that- who knows?


  4. Ah, okay, so it's possibly an OEM trying to use the almost legacy Appfabric.  No idea of what installed it/them- or why those files ended up there.

    Spoiler

    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="dataCacheClient">
        <xs:complexType>
          <xs:all>
            <xs:element name="localCache" minOccurs="0" maxOccurs="1">
              <xs:complexType>
                <xs:attribute name="isEnabled" type="xs:boolean" use="optional" />
                <xs:attribute name="sync" use="optional">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="NotificationBased" />
                      <xs:enumeration value="TimeoutBased" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="ttlValue" type="xs:unsignedInt" use="optional" />
                <xs:attribute name="objectCount" type="xs:unsignedLong" use="optional" />
              </xs:complexType>
            </xs:element>
            <xs:element name="clientNotification" minOccurs="0" maxOccurs="1">
              <xs:complexType>
                <xs:attribute name="pollInterval" type="xs:unsignedInt" use="optional" />
                <xs:attribute name="maxQueueLength" type="xs:unsignedInt" use="optional" />
              </xs:complexType>
            </xs:element>
            <xs:element name="hosts" minOccurs="0" maxOccurs="1">
              <xs:complexType>
                <xs:sequence>
                  <xs:element minOccurs="0" maxOccurs="unbounded" name="host">
                    <xs:complexType>
                      <xs:attribute name="name" type="xs:string" use="required" />
                      <xs:attribute name="cachePort" use="required" >
                        <xs:simpleType>
                          <xs:restriction base="xs:unsignedShort">
                            <xs:minInclusive value ="1024" />
                            <xs:maxInclusive value="65535" />
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="transportProperties" minOccurs="0" maxOccurs="1">
              <xs:complexType>
                <xs:attribute name="maxBufferPoolSize" type="xs:unsignedLong" use="optional" />
                <xs:attribute name="maxBufferSize" type="xs:unsignedInt" use="optional" />
                <xs:attribute name="connectionBufferSize" type="xs:unsignedInt" use="optional" />
                <xs:attribute name="channelInitializationTimeout" type="xs:unsignedInt" use="optional" />
                <xs:attribute name="maxOutputDelay" type="xs:unsignedInt" use="optional" />
                <xs:attribute name="receiveTimeout" type="xs:unsignedInt" use="optional" />
              </xs:complexType>
            </xs:element>
            <xs:element name="securityProperties" minOccurs="0" maxOccurs="1">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="messageSecurity" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                      <xs:attribute name="authorizationInfo" type="xs:string" use="optional" />
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="mode" use="optional" >
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="None" />
                      <xs:enumeration value="Transport" />
                      <xs:enumeration value="Message" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="protectionLevel" use="optional" >
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="None" />
                      <xs:enumeration value="Sign" />
                      <xs:enumeration value="EncryptAndSign" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="sslEnabled" type="xs:boolean" use="optional" />
                <xs:attribute name="sslSubjectIdentity" type="xs:string" use="optional" />
              </xs:complexType>
            </xs:element>
            <xs:element name="tracing" minOccurs="0" maxOccurs="1">
              <xs:complexType>
                <xs:attribute name="sinkType" use="optional" >
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="EtwSink" />
                      <xs:enumeration value="DiagnosticSink" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="traceLevel" use="optional" >
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="Off" />
                      <xs:enumeration value="Error" />
                      <xs:enumeration value="Warning" />
                      <xs:enumeration value="Info" />
                      <xs:enumeration value="Verbose" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
            <xs:element name="serializationProperties" minOccurs="0" maxOccurs="1">
              <xs:complexType>
                <xs:attribute name="serializer" use="optional" >
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="NetDataContractSerializer" />
                      <xs:enumeration value="BinaryFormatter" />
                      <xs:enumeration value="CustomSerializer" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="customSerializerType" type="xs:string" use="optional" />
              </xs:complexType>
            </xs:element>
            <xs:element name="cacheReadyRetryPolicy" minOccurs="0" maxOccurs="1">
              <xs:complexType>
                <xs:attribute name="retryCount" type="xs:unsignedInt" use="optional" />
                <xs:attribute name="maximumRetryIntervalInSeconds" use="optional" >
                  <xs:simpleType>
                    <xs:restriction base="xs:unsignedInt">
                      <xs:minInclusive value="1" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
            <xs:element name="autoDiscover" minOccurs="0" maxOccurs="1">
              <xs:complexType>
                <xs:attribute name="isEnabled" type="xs:boolean" use="optional" />
                <xs:attribute name="identifier" use="optional">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:pattern value="^((?!\[cache cluster role name\])(?!\[server role name goes here\]).)*$" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:all>
          <xs:attribute name="connectionPool" type="xs:boolean" use="optional" />
          <xs:attribute name="requestTimeout" type="xs:unsignedInt" use="optional" />
          <xs:attribute name="isCompressionEnabled" type="xs:boolean" use="optional" />
          <xs:attribute name="maxConnectionsToServer" use="optional" >
            <xs:simpleType>
              <xs:restriction base="xs:unsignedInt">
                <xs:maxInclusive value="100" />
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="channelOpenTimeout" use="optional" >
            <xs:simpleType>
              <xs:restriction base="xs:unsignedInt">
                <xs:maxInclusive value="20000" />
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="useLegacyProtocol" type="xs:boolean" use="optional" />
          <xs:attribute name="dataCacheServiceAccountType" use="optional" >
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:enumeration value="SystemAccount" />
                <xs:enumeration value="DomainAccount" />
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="dataCacheClients">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="dataCacheClient" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:all>
                  <xs:element name="localCache" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                      <xs:attribute name="isEnabled" type="xs:boolean" use="optional" />
                      <xs:attribute name="sync" use="optional">
                        <xs:simpleType>
                          <xs:restriction base="xs:string">
                            <xs:enumeration value="NotificationBased" />
                            <xs:enumeration value="TimeoutBased" />
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                      <xs:attribute name="ttlValue" type="xs:unsignedInt" use="optional" />
                      <xs:attribute name="objectCount" type="xs:unsignedLong" use="optional" />
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="clientNotification" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                      <xs:attribute name="pollInterval" type="xs:unsignedInt" use="optional" />
                      <xs:attribute name="maxQueueLength" type="xs:unsignedInt" use="optional" />
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="hosts" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element minOccurs="0" maxOccurs="unbounded" name="host">
                          <xs:complexType>
                            <xs:attribute name="name" type="xs:string" use="required" />
                            <xs:attribute name="cachePort" use="required" >
                              <xs:simpleType>
                                <xs:restriction base="xs:unsignedShort">
                                  <xs:minInclusive value ="1024" />
                                  <xs:maxInclusive value="65535" />
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="transportProperties" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                      <xs:attribute name="maxBufferPoolSize" type="xs:unsignedLong" use="optional" />
                      <xs:attribute name="maxBufferSize" type="xs:unsignedInt" use="optional" />
                      <xs:attribute name="connectionBufferSize" type="xs:unsignedInt" use="optional" />
                      <xs:attribute name="channelInitializationTimeout" type="xs:unsignedInt" use="optional" />
                      <xs:attribute name="maxOutputDelay" type="xs:unsignedInt" use="optional" />
                      <xs:attribute name="receiveTimeout" type="xs:unsignedInt" use="optional" />
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="securityProperties" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="messageSecurity" minOccurs="0" maxOccurs="1">
                          <xs:complexType>
                            <xs:attribute name="authorizationInfo" type="xs:string" use="optional" />
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                      <xs:attribute name="mode" use="optional" >
                        <xs:simpleType>
                          <xs:restriction base="xs:string">
                            <xs:enumeration value="None" />
                            <xs:enumeration value="Transport" />
                            <xs:enumeration value="Message" />
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                      <xs:attribute name="protectionLevel" use="optional" >
                        <xs:simpleType>
                          <xs:restriction base="xs:string">
                            <xs:enumeration value="None" />
                            <xs:enumeration value="Sign" />
                            <xs:enumeration value="EncryptAndSign" />
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                      <xs:attribute name="sslEnabled" type="xs:boolean" use="optional" />
                      <xs:attribute name="sslSubjectIdentity" type="xs:string" use="optional" />
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="tracing" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                      <xs:attribute name="sinkType" use="optional" >
                        <xs:simpleType>
                          <xs:restriction base="xs:string">
                            <xs:enumeration value="EtwSink" />
                            <xs:enumeration value="DiagnosticSink" />
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                      <xs:attribute name="traceLevel" use="optional" >
                        <xs:simpleType>
                          <xs:restriction base="xs:string">
                            <xs:enumeration value="Off" />
                            <xs:enumeration value="Error" />
                            <xs:enumeration value="Warning" />
                            <xs:enumeration value="Info" />
                            <xs:enumeration value="Verbose" />
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="serializationProperties" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                      <xs:attribute name="serializer" use="optional" >
                        <xs:simpleType>
                          <xs:restriction base="xs:string">
                            <xs:enumeration value="NetDataContractSerializer" />
                            <xs:enumeration value="BinaryFormatter" />
                            <xs:enumeration value="CustomSerializer" />
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                      <xs:attribute name="customSerializerType" type="xs:string" use="optional" />
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="cacheReadyRetryPolicy" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                      <xs:attribute name="retryCount" type="xs:unsignedInt" use="optional" />
                      <xs:attribute name="maximumRetryIntervalInSeconds" use="optional" >
                        <xs:simpleType>
                          <xs:restriction base="xs:unsignedInt">
                            <xs:minInclusive value="1" />
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="autoDiscover" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                      <xs:attribute name="isEnabled" type="xs:boolean" use="optional" />
                      <xs:attribute name="identifier" use="optional">
                        <xs:simpleType>
                          <xs:restriction base="xs:string">
                            <xs:pattern value="^((?!\[cache cluster role name\])(?!\[server role name goes here\]).)*$" />
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                    </xs:complexType>
                  </xs:element>
                </xs:all>
                <xs:attribute name="name" type="xs:string" use="required" />
                <xs:attribute name="connectionPool" type="xs:boolean" use="optional" />
                <xs:attribute name="requestTimeout" type="xs:unsignedInt" use="optional" />
                <xs:attribute name="isCompressionEnabled" type="xs:boolean" use="optional" />
                <xs:attribute name="maxConnectionsToServer" use="optional" >
                  <xs:simpleType>
                    <xs:restriction base="xs:unsignedInt">
                      <xs:maxInclusive value="100" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="channelOpenTimeout" use="optional" >
                  <xs:simpleType>
                    <xs:restriction base="xs:unsignedInt">
                      <xs:maxInclusive value="20000" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="useLegacyProtocol" type="xs:boolean" use="optional" />
                <xs:attribute name="dataCacheServiceAccountType" use="optional" >
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="SystemAccount" />
                      <xs:enumeration value="DomainAccount" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
            <xs:element name="tracing" minOccurs="0" maxOccurs="1">
              <xs:complexType>
                <xs:attribute name="sinkType" use="optional" >
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="EtwSink" />
                      <xs:enumeration value="DiagnosticSink" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="traceLevel" use="optional" >
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="Off" />
                      <xs:enumeration value="Error" />
                      <xs:enumeration value="Warning" />
                      <xs:enumeration value="Info" />
                      <xs:enumeration value="Verbose" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="cacheDiagnostics">
        <xs:complexType>
          <xs:all>
            <xs:element name="crashDump" minOccurs="0" maxOccurs="1">
              <xs:complexType>
                <xs:attribute name="dumpLevel" use="optional">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="Off" />
                      <xs:enumeration value="Mini" />
                      <xs:enumeration value="Full" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="compressDumps" type="xs:boolean" use="optional" />
                <xs:attribute name="dumpStorageQuotaInMB" type="xs:unsignedInt" use="optional" />
                <xs:attribute name="scheduledTransferPeriodInMinutes" type="xs:unsignedInt" use="optional" />
              </xs:complexType>
            </xs:element>
            <xs:element name="cacheLogs" minOccurs="0" maxOccurs="1">
              <xs:complexType>
                <xs:attribute name="logLevel" use="optional" >
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="OFF" />
                      <xs:enumeration value="ERROR" />
                      <xs:enumeration value="WARNING" />
                      <xs:enumeration value="INFO" />
                      <xs:enumeration value="VERBOSE" />
                      <xs:enumeration value="WARNINGWITHFAILEDREQ" />
                      <xs:enumeration value="INFOWITHALLREQ" />
                      <xs:enumeration value="NOBUFFERING" />
                      <xs:enumeration value="WARNINGWITHFAILEDREQEXT" />
                      <xs:enumeration value="INFOWITHALLREQLITE" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="logStorageQuotaInMB" type="xs:unsignedInt" use="optional" />
                <xs:attribute name="scheduledTransferPeriodInMinutes" type="xs:unsignedInt" use="optional" />
              </xs:complexType>
            </xs:element>
          </xs:all>
        </xs:complexType>
      </xs:element>
    </xs:schema>

    Spoiler

    <?xml version="1.0" encoding="utf-8"?>
    <SchemaCatalog xmlns="http://schemas.microsoft.com/xsd/catalog">
      <Association extension="config" schema="%InstallRoot%/xml/schemas/ClientConfig.xsd" />
    </SchemaCatalog>

     


  5. Heh, thanks- but don't bother testing yet- unless you can get hold of a file with an lzma extension. A rare beast, at least on Windows. :P 

    	for(unsigned i = 0; i <= size; i++)
    	srcFile[i] = reinterpret_cast<Byte>(&f[i]);

    The above code is causing the warning- but doing this kind of stuff without std:stream and the like is generally frowned upon. :(


  6. The LZMA is working- but atm it only works for files compressed with native LZMA- and only single file archives at that.

    Going to try the 7z ANSI-C Decoder 9.35, but it doesn't support LMZA2 as yet.

    There's also this warning:

    Quote

    Warning    C4302    'reinterpret_cast': truncation from 'FILE *' to 'Byte'    SKSEView

    Unavoidable- but possibly a worry on certain systems where a byte may be more than 8 bits- but in those cases probably not ever written to file.

    Also pruned out the SKSE stuff for now as things take too long to compile: 

    SKSEQuasiView.7z


  7. Ah, okay. He has got it going for Skyrim apparently, and there is a Batch menu item- but only@Daggerfall Devwould know as to what extent its functionality is. Jon has never been terribly enthused with the idea of making NifSkope an import/export tool, though, albeit mentioning the possibility Zilav (maybe someone from Xedit?) considering such scripts.

    If you like, I could raise an issue as a feature request- knowing full well that if Jon wanted to do it, he would- but really not sure what's on his roadmap for the project at this moment.


  8. 16 hours ago, Visceral Moonlight said:

    Hey, I used to teach programming! :P

    ...In addition, I recommend using a text-editor over an IDE at first to help you understand better the various parts of the language...

    The beauty of an IDE is the range of templates and snippets. Visual Studio may be too much for a beginner- but it's great for templates at least.

    I'm not a fan of Python- but only because I've either seen code which could have been presented in a better format, or uncommented code. OTOH Utumno's coding style seen in Wrye Bash is very good,- which for the non-Pythonista fraternity is something like bordering on readable. :P 

    The PyCharm IDE might be ideal for someone wanting to get started in Python, but again, it's all down to personal taste- you have to try it out- and if something smells, move on. :P

    There's also Delphi and Pascal. Delphi's expensive, but Pascal is definitely worth a look if wishing to contribute to XEdit scripting. Just do a Google. :)

     


  9. Yes, but for the chimera of duplication, JonWD7's Nifskope is still being developed and appears to support some Oblivion nifs. Before we proceed, does that program have the facility to open an Oblivion nif and save it in Skyrim or SSE format? Or, more importantly, has it any facility to operate on multiple nifs in a batch scenario? For the sake of nought else but reliability and fit for purpose, there's no reason why a new issue at Github could not be raised,- as NifSkope has all the structures already in place for such processing.


  10. Here's another spoiler

    Spoiler

    This is spectacular, but the angle shots of the helicopter before and during the explosion are slightly off- first it's practically over the top of the house, but when hit it seems to travel some distance horizontally towards the house. And the blades hitting the roof: metal on metal? But the roof was tiled. And they should have jammed with a slight stall in the motion of the helicopter. But apart from that, well done!

     

     


  11. Enjoyed VB5-6 immensely. It was the first time the world had eve seen an IDE with so much power and capability.

    But give me a Mac and Visual Fortran would be the one now. Back in the day it was a well known fact Fortran performed better on a 68000 based processor than the 8080.


  12. Thanks for looking, sent off a rather detailed PM to Ian Patt explaining that although locating the right variable is the ultimate  goal,- even finding the decomp function with the right variable is well beyond our ken in any case. :) 

    ...

    Thinking about importing apis for 7z and zip- is there any other compression method worthy of consideration?

    ...

    Pausing and then resuming a VS upgrade works- but the "Downloading XX of YY" status values are off.

×