2011-04-12 50 views
2

我一直在寻找SevenZipSharp创建一个自解压zip文件。该项目页面说,他们有一个特殊的类SevenZipSfx这样做。不过,我已经搜索了对象浏览器和版本0.64的文档,我找不到任何参考。如何使用SevenZipSharp创建SFX ZIP?

有没有人知道这个班是否失踪,或者是否有与我失踪的“特殊班”有不同的含义?

+0

一般SFXs是你预先考虑到您的.zip文件的二进制'复制/ B SfxStub.exe + MyZip.zip MySfx.exe' - 也许它是一个单独的项目/ .exe? – Rup 2011-04-12 15:39:16

+0

好吧,就像从互联网上找到一个随机EXE并将其附加到一个zip然后尝试运行它听起来一样疯狂,我试过了。不工作。所以虽然这个概念可能是Unpacker.exe + Data.zip。那稍微复杂一点。 – QueueHammer 2011-04-12 17:50:35

回答

3

它看起来像Sfx类不是默认生成的。 Grab the source code from Codeplex(或check out the trunk code)并将条件编译常量SFX添加到项目设置并重建。令人讨厌的是,签名不在其源代码控制中,因此您必须禁用程序集的代码签名。

或者,如果这是一个一次性的SFX那么你可以使用在SevenZip \解压目录中的文件建立它自己。如果你看看SevenZipSfx soruce,你会发现它只是将从程序集资源获取的那些文件中的一个文件加载到.7z存档。

+0

谢谢,Rup。我创建了一个工作项目位置:http://sevenzipsharp.codeplex.com/workitem/10956 – 2012-07-03 00:44:14

+0

@Rup你可以一步一步讲解如何“**添加条件编译常数SFX到项目**”吗? – ElektroStudios 2013-04-17 17:10:09

+0

@ElektroHacker在Solution Explorer窗格中,SevenZip(或SevenZip2010项目),单击鼠标右键,选择属性。在生成选项卡上会出现一个字段“条件编译符号”。挑构建配置你是从顶部,调试或发布下拉兴趣,然后追加',SFX'的“条件编译符号”字段。如果你现在重建,那应该就够了。如果你错过当你建立再.SNK文件中的错误,你必须去签约选项卡中的项目属性,取消选中“程序集签名”复选框。 – Rup 2013-04-17 17:53:34

0

此代码的工作对我来说,配备了一个目录中的文件中:

string destination = @"c:\my test.7z"; 
string pathToZip = @"C:\Program Files\7-Zip\7z.exe"; 
string directoryPath = @"c:\my test"; 

ProcessStartInfo p = new ProcessStartInfo(); 
p.FileName = pathToZip; 
p.Arguments = string.Format("a -mx=9 \"{0}\" \"{1}\" -sfx", destination, directoryPath); 

Process x = Process.Start(p); 

99.9%的工作