Question

I have sfx files from the program that I created using sevenzipsharp library. still when I execute directly with double-click the file sfx if using the wrong password but still extract the files in it with a size of 0 bytes, if anyone should I add another mode to function 'Compress' so that when I execute the file sfx wrong password files are not extracted at all.

error if wrong password

extracted files

Compress code:

public void Compress()
{
   SevenZipCompressor.SetLibraryPath("7z.dll");
   SevenZipCompressor cmp = new SevenZipCompressor();
   cmp.Compressing += new EventHandler<ProgressEventArgs>(cmp_Compressing);
   cmp.FileCompressionStarted += new EventHandler<FileNameEventArgs>(cmp_StartCompress);
   cmp.CompressionFinished += new EventHandler<EventArgs>(cmp_CompleteCompressed);
   cmp.ArchiveFormat = OutArchiveFormat.SevenZip;
   cmp.CompressionLevel = CompressionLevel.Normal;
   cmp.CompressionMethod = CompressionMethod.Lzma;
   cmp.CompressionMode = CompressionMode.Create;
   string password = txtPasswordEn.Text;
   string DirFile = tempFolder;
   string NameFileCompress = Path.Combine(txtOutputFileEn.Text, txtNameFile.Text) + (".zip");
   cmp.BeginCompressDirectory(DirFile, NameFileCompress, password, ".",true);
}

Create SFX Code:

public void CreateSfx()
{  
    string location = Path.Combine(txtOutputFileEn.Text, txtNameFile.Text);
    string nameZip = location + (".zip");
    string nameExe = location + (".exe");
    SfxModule mdl = SfxModule.Extended;
    SevenZipSfx sfx = new SevenZipSfx(mdl);
    sfx.ModuleFileName = @"7z.sfx";
    sfx.MakeSfx(nameZip, nameExe);
}
Était-ce utile?

La solution

I've just seen that you're not creating a .zip file but a .7z file (and then convert it to a self extracting archive).

For that file format, you can achieve file name encryption using the EncryptHeaders property:

cmp.EncryptHeaders = true;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top