如何使用SevenZipSharp创建一个压缩的SFX文件



我将了解如何使用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:testfile.bat", "C:7zSFX.exe")
End Sub
End Class
更新:

@For Everyone:

请我祈祷有人会回答我的问题,至少你曾经创建一个SFX SevenZipSharp告诉我我做错了什么以及如何修复它,而不是回答说他们是用户权限问题,请阅读评论。

看起来可能有一些混乱的参数应该是什么。以下代码在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:Tempcc_seal.7z", "C:Tempsfxseal.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:Tempcc_seal.7z", "C:Tempsfxseal.exe")
    End Sub

它也为我工作没有错误。取出ModuleFileName行,我得到了和你一样的崩溃。

还要注意压缩器。MakeSfx的第一个参数需要是。7z文件,而不是。bat文件。它会"工作",但当你试图运行sfx.exe时,它会崩溃,因为它不是一个有效的7zip文件。所以你需要先压缩你的文件/目录。

确保7z。SFX在您的应用程序目录中,或者提供它的路径(它在codeplex源代码下载中)

我尝试了"7zxSD_All"。sfx"文件,它首先提取文件,然后Windows 7给出一个错误,关于它没有被正确安装(我假设Windows 7认为这是一个安装文件,而不是一个自提取文件)。"7 z。

你可能使用的是Windows 8,所以为了给你的应用程序足够的权限来写修改(C:)分区,即使你是管理员,你也应该以"作为管理员"模式运行应用程序。

相关内容

  • 没有找到相关文章