我将了解如何使用SevenZipSharp库创建SFX。
首先,我需要说我找不到任何属性来设置压缩级别,以及所有这些。
当我尝试制作文件的SFX时,我收到此错误:
"Object reference not set to an instance of an object."
如果我尝试制作文件夹的SFX,我会收到此错误:
"Access to the path 'C:\test' is denied."
(但不是真的,我是管理员,我用更多可用的文件夹对它进行了测试......)
这是我正试图理解所有这一切的完整课程......:
Imports SevenZip
Public Class Form1
Dim dll As String = "7z64.dll"
Private Function SevenZipSharp_Compress_SFX(ByVal Input_DirOrFile As String, _
ByVal OutputFileName As String) As Boolean
Try
' Set library path
SevenZipCompressor.SetLibraryPath(dll)
' Create compressor
Dim Compressor As SevenZipSfx = New SevenZipSfx(SfxModule.Default)
' Set SFX parameters
' ¿?
' Start compression
Compressor.MakeSfx(Input_DirOrFile, OutputFileName)
Catch ex As Exception
'Return False ' File not compressed
Throw New Exception(ex.Message)
End Try
Return True ' File compressed
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
SevenZipSharp_Compress_SFX("C:\test\file.bat", "C:\7zSFX.exe")
End Sub
End Class
更新:
@For Everyone:
请为那些将回答我的问题的人祈祷,至少你曾经创建过一个SFX SevenZipSharp来告诉我我做错了什么以及如何修复它,而不回答说它们是用户许可问题,请阅读评论。
答案 0 :(得分:2)
您可能正在使用Windows 8,因此为了使您的应用程序具有在(C :)分区中进行写入修改的足够权限,您应该以“以管理员身份”模式运行应用程序,即使您是管理员。 / p>
答案 1 :(得分:2)
看起来可能存在一些关于论据应该是什么的混淆。以下代码适用于codeplex上最新的SevenZipSharp代码。
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim compressor As SevenZipSfx = New SevenZipSfx("7z.sfx")
compressor.MakeSfx("C:\Temp\cc_seal.7z", "C:\Temp\sfxseal.exe")
End Sub
我尝试使用SevenZipSfx(SfxModule.Default),就像你的例子一样,但模块名称没有设置,我相信“对象引用没有设置为对象的实例”错误来自,因为我这样做了:
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim compressor As SevenZipSfx = New SevenZipSfx(SfxModule.Default)
compressor.ModuleFileName = "7z.sfx"
compressor.MakeSfx("C:\Temp\cc_seal.7z", "C:\Temp\sfxseal.exe")
End Sub
它也没有错误地为我工作。取出ModuleFileName行,我遇到了和你一样的崩溃。
另请注意,compress.MakeSfx的第一个参数需要是.7z文件,而不是.bat文件。它会“工作”,但是当你尝试运行sfx.exe时,它会崩溃,因为它不是一个有效的7zip文件。因此,您需要先压缩文件/目录。
确保7z.sfx在您的应用程序目录中,或提供它的路径(它在codeplex源代码下载)
我首先使用“7zxSD_All.sfx”文件尝试了它,它提取文件然后Windows 7给出了关于它没有正确安装的错误(我假设Windows 7认为它是安装文件而不是自解压文件)。 “7z.sfx”虽然奏效了。