gpt4 book ai didi

.net - 如何使用 SevenZipSharp 创建压缩的 SFX 文件?

转载 作者:行者123 更新时间:2023-12-01 12:45:50 24 4
gpt4 key购买 nike

我将了解如何使用 SevenZipSharp 库创建 SFX。

首先,我需要说明的是,我找不到任何属性来设置压缩级别,等等。

当我尝试制作文件的 SFX 时,出现此错误:

"Object reference not set to an instance of an object."

如果我尝试制作文件夹的 SFX,我会收到此错误:

"Access to the path 'C:\test' is denied."

(但这不是真的,我是管理员,我已经用更多可用文件夹对其进行了测试...)

这是我试图理解所有这些的完整类(class)......:

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

UPDATE:

@对于所有人:

请我祈祷有人能回答我的问题至少你曾经创建过一个 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:\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 行,我遇到了和你一样的崩溃。

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

确保 7z.sfx 在您的应用程序目录中,或提供它的路径(它在 codeplex 源下载中)

我先用“7zxSD_All.sfx”文件试了一下,它解压了这个文件,然后 Windows 7 给出了一个关于它没有正确安装的错误(我假设 Windows 7 认为它是一个安装文件而不是一个自解压文件). “7z.sfx”虽然有效。

关于.net - 如何使用 SevenZipSharp 创建压缩的 SFX 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16069470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com