Zerlegte, per DeflateStream komprimierte Datei wieder zusammenführen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von kafffee.

    @Coldfire

    Okay, ich kann mir also von VS eine GUID erstellen lassen und die verwenden.

    Was ist wenn ich die nicht explizit im Skript setze, wird dann automatisch eine erzeugt? Bzw. wenn ich die nicht explizit ändere bei jeder neuen Version, bleibt sie dann gleich?

    @xChRoNiKx

    Hab mal ein bisschen recherchiert, da gibt es doch zwei Methoden:

    jrsoftware.org/ishelp/index.php?topic=isxfunc_getsha1offile

    jrsoftware.org/ishelp/index.php?topic=isxfunc_getmd5offile

    Jetzt muss ich noch rausfinden, wie ich die am Besten anwende...

    Edit:

    So sollte es gehen. Ich probiers mal aus und lass es euch wissen. Ich denke ich schreibe auch ein kleines Tool das mir den Code erzeugt...:

    Spoiler anzeigen

    HTML-Quellcode

    1. [Files]
    2. Source: "dependencies\dotNetFx45_Full_setup.exe"; DestDir: {tmp}; Flags: deleteafterinstall; AfterInstall: InstallFramework; Check: FrameworkIsNotInstalled
    3. Source: "D:\Dokumente\Visual Studio 2013\Projects\Hurricane\Source\Hurricane\bin\Release\Hurricane.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: IsFileCorrupt('D:\Dokumente\Visual Studio 2013\Projects\Hurricane\Source\Hurricane\bin\Release\Hurricane.exe', '<ChecksummeABCDEF>')
    4. [Code]
    5. var CancelWithoutPrompt: boolean;
    6. function InitializeSetup(): Boolean;
    7. begin
    8. CancelWithoutPrompt := false;
    9. result := true;
    10. end;
    11. function IsFileCorrupt(argPfad: String; argCheckSum: String): Boolean;
    12. begin
    13. if GetSHA1OfFile(argPfad)=argChecksum then
    14. Result := true
    15. else
    16. begin
    17. MsgBox('Eine Installationsdatei ist beschädigt. Bitte versuche, den Installer erneut herunterzuladen. Falls das Problem besteht, kontaktiere bitte den Entwickler.', mbError, MB_OK);
    18. CancelWithoutPrompt := true;
    19. WizardForm.Close;
    20. Result := false
    21. end;
    22. end;


    Edit 2: Yep es funktioniert :)

    An die richtigen Checksummen kommt man so:

    VB.NET-Quellcode

    1. Sub Main()
    2. Dim MeinHash As String = ""
    3. Console.WriteLine("Bitte gebe den Pfad einer Datei ein:")
    4. Dim Pfad As String = Console.ReadLine
    5. Using cryptoProvider As New SHA1CryptoServiceProvider()
    6. MeinHash = BitConverter.ToString(cryptoProvider.ComputeHash(File.ReadAllBytes(Pfad)))
    7. End Using
    8. MeinHash = MeinHash.Replace("-", "").ToLower
    9. Console.WriteLine(MeinHash)
    10. Clipboard.SetText(MeinHash)
    11. Console.ReadLine()
    12. End Sub


    Edit 3:
    @xChRoNiKx

    Hab jetzt tatsächlich ein kleines Tool geschrieben, das ein InnoSetup Skript erstellt (bzw. die betroffenen Sections), das mir nach der Installation die Dateien auf Integrität überprüft und zusätzlich die Ordnerstrukturen ohne zusätzliches Editieren des Codes übernimmt. Ich hoffe das hilft dir/euch, wenn ihr das gleiche Problem habt wie ich.

    Ist hier zu finden:

    github.com/kafffee/InnoSetupCheckSumHelper

    oder auch im SourceCode-Austausch, sobald es freigeschaltet wird. :)

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „kafffee“ ()