Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: fixes an mspack issue with a cab #8

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 65 additions & 31 deletions .build/libmspack4n.msbuild
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,10 @@
MSBuild Task Reference: https://msdn.microsoft.com/en-us/library/7z253716.aspx
-->

<PropertyGroup>
<MSBuildCommunityTasksPath>$(MSBuildProjectDirectory)</MSBuildCommunityTasksPath>
</PropertyGroup>
<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets" />

<PropertyGroup>
<RootDir>..\</RootDir>
<BuildDir>$(MSBuildProjectDirectory)</BuildDir>
<TheTempDir>$(RootDir)\.temp</TheTempDir>
<TheDeployDir>$(RootDir)\.deploy</TheDeployDir>
<AssemblyCopyright>Copyright Scott Willeke ©2013-2016</AssemblyCopyright>
<Description>A .NET version of the libmspack libmspack library that enables programatically reading and extracting the content of Microsoft cab files.</Description>
Expand All @@ -33,7 +29,7 @@

<ItemGroup>
<DeployFiles Include="$(MSPackOutDir)\mspack.dll"></DeployFiles>
<DeployFiles Include="$(RootDir)\packages\LessIO.0.6.16\lib\net40\LessIO.dll"></DeployFiles>
<DeployFiles Include="$(RootDir)\packages\LessIO.1.0.34\lib\net40\LessIO.dll"></DeployFiles>
<DeployFiles Include="$(RootDir)\libmspack4n\bin\Release\libmspackn.dll"></DeployFiles>
<DeployFiles Include="$(RootDir)\libmspack4n\bin\Release\libmspackn.pdb"></DeployFiles>
<!-- Enables running tests in deploy dir: -->
Expand All @@ -45,6 +41,17 @@
<DeployFiles Include="$(RootDir)\libmspack4ntest\bin\Release\xunit.assert.dll" />
</ItemGroup>

<ItemGroup>
<ZipIncludedFiles Include="$(MSPackOutDir)\mspack.dll"></ZipIncludedFiles>
<ZipIncludedFiles Include="$(RootDir)\packages\LessIO.1.0.34\lib\net40\LessIO.dll"></ZipIncludedFiles>
<ZipIncludedFiles Include="$(RootDir)\libmspack4n\bin\Release\libmspackn.dll"></ZipIncludedFiles>
<ZipIncludedFiles Include="$(RootDir)\libmspack4n\bin\Release\libmspackn.pdb"></ZipIncludedFiles>
</ItemGroup>

<ItemGroup>
<TestFiles Include="$(RootDir)\libmspack4ntest\test_files\**\*.*"/>
</ItemGroup>

<Target Name="Init">
<ConvertToAbsolutePath Paths="$(RootDir)">
<Output TaskParameter="AbsolutePaths" PropertyName="RootDir"/>
Expand Down Expand Up @@ -89,27 +96,29 @@

<Target Name="SetProjectVersion">

<!-- This all from https://artemigos.github.io/coding/2017/07/10/assembly-versioning-with-msbuild.html - Thanks! -->
<ItemGroup>
<AssemblyInfoFiles Include="$(RootDir)\libmspack4n\Properties\AssemblyInfo.cs" />
<Attr Include="AssemblyVersion">
<_Parameter1>$(TheVersion)</_Parameter1>
</Attr>
<Attr Include="AssemblyFileVersion">
<_Parameter1>$(TheVersion)</_Parameter1>
</Attr>
<Attr Include="AssemblyCopyright">
<_Parameter1>$(AssemblyCopyright)</_Parameter1>
</Attr>
</ItemGroup>

<AssemblyInfo
OutputFile="@(AssemblyInfoFiles)"
CodeLanguage="C#"
AssemblyTitle="$(TheProjName)"
AssemblyDescription="$(Description)"
AssemblyConfiguration=""
AssemblyCompany="Scott Willeke"
AssemblyVersion="$(TheVersion)"
AssemblyFileVersion="$(TheVersion)"
AssemblyCopyright="$(AssemblyCopyright)"
>
</AssemblyInfo>

<WriteCodeFragment
AssemblyAttributes="@(Attr)"
Language="C#"
OutputFile="$(RootDir)\libmspack4n\Properties\AssemblyInfo.cs"
/>

</Target>

<Target Name="Clean" DependsOnTargets="Init">
<RemoveDir Directories="$(TheDeployDir)" />
<RemoveDir Directories="$(TheTempDir)" />
</Target>

<Target Name="EnsureDependencies" DependsOnTargets="Init">
Expand Down Expand Up @@ -162,31 +171,56 @@
cl /O2 -I.. -I. /DHAVE_CONFIG_H /c *.c
-->
<MakeDir Directories="$(MSPackOutDir)" />
<Exec Command="cl.exe /O2 -I$(MSPackSrcDir) /DHAVE_CONFIG_H /c $(MSPackSrcDir)\*.c"
WorkingDirectory="$(MSPackOutDir)" />
<Exec Command="cl.exe /arch:SSE2 /O2 -I$(MSPackSrcDir) /DHAVE_CONFIG_H /c $(MSPackSrcDir)\*.c"
WorkingDirectory="$(MSPackOutDir)"
/>
<!--
link *.obj /DLL /DEF:mspack.def /IMPLIB:mspack.lib /OUT:mspack.dll
-->
<Exec Command="link.exe $(MSPackOutDir)\*.obj /DLL /DEF:$(MSPackSrcDir)\mspack.def /IMPLIB:$(MSPackOutDir)\mspack.lib /OUT:$(MSPackOutDir)\mspack.dll"
<Exec Command="link.exe $(MSPackOutDir)\*.obj /DLL /MACHINE:X86 /DEF:$(MSPackSrcDir)\mspack.def /IMPLIB:$(MSPackOutDir)\mspack.lib /OUT:$(MSPackOutDir)\mspack.dll"
WorkingDirectory="$(MSPackOutDir)" />
</Target>
</Target>

<Target Name="Deploy" DependsOnTargets="Build;Clean">

<MakeDir Directories="$(TheDeployDir)" />

<Copy
SourceFiles="%(DeployFiles.FullPath)"
DestinationFolder="$(TheDeployDir)"
/>

<!--
copy test files:
Note: This is a recursive copy syntax based on https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2015/msbuild/copy-task?view=vs-2015#example-1
-->
<Copy
SourceFiles="@(TestFiles)"
DestinationFiles="@(TestFiles->'$(TheDeployDir)\test_files\%(RecursiveDir)%(Filename)%(Extension)')"
/>

</Target>

<Target Name="Zip" DependsOnTargets="Deploy">
<!-- see https://github.com/loresoft/msbuildtasks/blob/master/Source/MSBuild.Community.Tasks/Zip.cs -->
<Zip
Files="@(DeployFiles)"
Flatten="True"
ZipFileName="$(TheDeployDir)\$(TheZipFileName)"

<!-- ZipDirectory built-in task: https://learn.microsoft.com/en-us/visualstudio/msbuild/zipdirectory-task?view=vs-2022 -->
<MakeDir Directories="$(TheTempDir)" />
<!-- the deploy dir has test files in it too (maybe), so we move deploy files to a staging directory -->
<MakeDir Directories="$(TheTempDir)\zipstaging" />
<Copy
SourceFiles="%(ZipIncludedFiles.FullPath)"
DestinationFolder="$(TheTempDir)\zipstaging"
/>
<ZipDirectory
SourceDirectory="$(TheTempDir)\zipstaging"
DestinationFile="$(TheTempDir)\$(TheZipFileName)"
/>
<!-- Now copy the temp zip file into the deploy directory -->
<Copy
SourceFiles="$(TheTempDir)\$(TheZipFileName)"
DestinationFolder="$(TheDeployDir)"
/>

</Target>

<Target Name="NugetPackage" DependsOnTargets="Deploy">
Expand Down Expand Up @@ -219,7 +253,7 @@
/>

<Exec
Command="nuget pack &quot;$(PackageDir)\$(TheProjName).nuspec&quot; -NoDefaultExcludes -Verbosity Normal"
Command="$(NugetPath) pack &quot;$(PackageDir)\$(TheProjName).nuspec&quot; -NoDefaultExcludes -Verbosity Normal"
WorkingDirectory="$(PackageDir)"
ContinueOnError="true"
>
Expand Down
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.cab filter=lfs diff=lfs merge=lfs -text
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,13 @@ lib/libmspack/mspack/bin/*.*
*.obj
*.suo
*.csproj.user
*.vcxproj.user
/src/.deploy
libmspack4n/bin/
libmspack4n/obj/
libmspack4ntest/bin/
libmspack4ntest/obj/
/.deploy
.vs/
/.temp/
/libmspack4n/.vs/
21 changes: 16 additions & 5 deletions lib/libmspack-for-debugging-only.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,21 @@
<ProjectGuid>{12163A1B-35F9-4349-B1FC-51412F618B97}</ProjectGuid>
<RootNamespace>libmspack</RootNamespace>
<ProjectName>libmspack-for-debugging-only</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
Expand All @@ -40,7 +43,9 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>false</LinkIncremental>
<TargetName>mspack</TargetName>
<OutDir>$(ProjectDir)libmspack\mspack\</OutDir>
<OutDir>$(ProjectDir)libmspack\mspack\bin</OutDir>
<PublicIncludeDirectories>$(MSBuildProjectDirectory)\libmspack\mspack;$(PublicIncludeDirectories)</PublicIncludeDirectories>
<AllProjectIncludesArePublic>true</AllProjectIncludesArePublic>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
Expand All @@ -51,13 +56,15 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>C:\projects\lessmsi.libmspack4n\Packages\libmspack\mspack;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<AdditionalIncludeDirectories>$(MSBuildProjectDirectory)\libmspack\mspack;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>DEBUG;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
<SupportJustMyCode>false</SupportJustMyCode>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<ModuleDefinitionFile>$(ProjectDir)libmspack\mspack\mspack.def</ModuleDefinitionFile>
<ShowProgress>LinkVerbose</ShowProgress>
</Link>
<PreBuildEvent>
<Command>echo #define inline __inline &gt; $(ProjectDir)libmspack\mspack\config.h
Expand All @@ -68,6 +75,10 @@ echo #define HAVE_MEMCMP 1 &gt;&gt; $(ProjectDir)libmspack\mspack\config.h</Comm
<PreBuildEvent>
<Message>Generating config.h</Message>
</PreBuildEvent>
<PostBuildEvent>
<Command>xcopy /y "$(OutDir)$(TargetName).dll" "$(ProjectDir)..\.deploy\"
xcopy /y "$(OutDir)$(TargetName).pdb" "$(ProjectDir)..\.deploy\"</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
Expand Down
20 changes: 15 additions & 5 deletions lib/libmspack/mspack/cabd.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ static int cabd_read_headers(
struct mscabd_cabinet_p *cab, off_t offset, int salvage, int quiet);
static char *cabd_read_string(
struct mspack_system *sys, struct mspack_file *fh, int *error);
static char* cabd_read_string_ex(
struct mspack_system* sys, struct mspack_file* fh, int allow_empty_str, int* error);

static struct mscabd_cabinet *cabd_search(
struct mscab_decompressor *base, const char *filename);
Expand Down Expand Up @@ -396,15 +398,17 @@ static int cabd_read_headers(struct mspack_system *sys,
if (cab->base.flags & cfheadPREV_CABINET) {
cab->base.prevname = cabd_read_string(sys, fh, &err);
if (err) return err;
cab->base.previnfo = cabd_read_string(sys, fh, &err);
// in at least one CAB the nextname was set but nextinfo was empty; so we allow an empty nextinfo here
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NOTE: This is the core fix here on the mspack side. Some of these multipart cabs seem to have empty nextinfo's and we need to safely ignore that

cab->base.previnfo = cabd_read_string_ex(sys, fh, 1, &err);
if (err) return err;
}

/* read name and info of next cabinet in set, if present */
if (cab->base.flags & cfheadNEXT_CABINET) {
cab->base.nextname = cabd_read_string(sys, fh, &err);
if (err) return err;
cab->base.nextinfo = cabd_read_string(sys, fh, &err);
// in at least one CAB the nextname was set but nextinfo was empty; so we allow an empty nextinfo here
cab->base.nextinfo = cabd_read_string_ex(sys, fh, 1, &err);
if (err) return err;
}

Expand Down Expand Up @@ -534,8 +538,14 @@ static int cabd_read_headers(struct mspack_system *sys,
return MSPACK_ERR_OK;
}

static char *cabd_read_string(struct mspack_system *sys,
struct mspack_file *fh, int *error)
static char* cabd_read_string(struct mspack_system* sys,
struct mspack_file* fh, int* error)
{
return cabd_read_string_ex(sys, fh, 0, error);
}

static char *cabd_read_string_ex(struct mspack_system *sys,
struct mspack_file *fh, int allow_empty_string, int *error)
{
off_t base = sys->tell(fh);
char buf[256], *str;
Expand All @@ -550,7 +560,7 @@ static char *cabd_read_string(struct mspack_system *sys,
/* search for a null terminator in the buffer */
for (i = 0, ok = 0; i < len; i++) if (!buf[i]) { ok = 1; break; }
/* reject empty strings */
if (i == 0) ok = 0;
if (i == 0 && !allow_empty_string) ok = 0;

if (!ok) {
*error = MSPACK_ERR_DATAFORMAT;
Expand Down
17 changes: 16 additions & 1 deletion lib/libmspack/mspack/cabd_dotnet_wrapper.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@


void trace(struct mscab_decompressor *self, const char *format, ...) {
#ifdef DEBUG
struct mscab_decompressor_p* selfp;
struct mspack_system *sys;
va_list ap;
Expand All @@ -39,6 +40,7 @@ void trace(struct mscab_decompressor *self, const char *format, ...) {
vsprintf(buffer, format, ap);
va_end(ap);
sys->message(NULL, buffer);
#endif
}
//prototype
void trace_struct_info(struct mscab_decompressor *self);
Expand All @@ -48,8 +50,21 @@ struct mscabd_cabinet* mspack_invoke_mscab_decompressor_open(struct mscab_decomp
struct mscabd_cabinet *cab;
//trace_struct_info(self);
cab = self->open(self, filename);
if (!cab) {
#ifdef DEBUG
printf("failed to open cab");
#endif
return cab;
}
fol = (struct mscabd_folder_p *) cab->files->folder;
//trace(self, "mspack_invoke_mscab_decompressor_open: fol->data.cab->base.filename: '%s'", fol->data.cab->base.filename);
if (!fol) {
#ifdef DEBUG
printf("cab files folder is not valid");
#endif
}

if (fol)
trace(self, "mspack_invoke_mscab_decompressor_open: fol->data.cab->base.filename: '%s'", fol->data.cab->base.filename);
return cab;
}

Expand Down
Binary file modified lib/libmspack/test/test_files/cabd/bad_folderindex.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/bad_nofiles.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/bad_nofolders.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/bad_signature.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/multi_basic_pt1.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/multi_basic_pt2.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/multi_basic_pt3.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/multi_basic_pt4.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/multi_basic_pt5.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/normal_255c_filename.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/normal_2files_1folder.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_nodata.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_nofiles.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_nofolder.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_shortextheader.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_shortfile1.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_shortfile2.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_shortfolder.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_shortheader.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_str_nofname.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_str_noninfo.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_str_nonname.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_str_nopinfo.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_str_nopname.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_str_shortfname.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_str_shortninfo.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_str_shortnname.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_str_shortpinfo.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/partial_str_shortpname.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/reserve_---.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/reserve_--D.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/reserve_-F-.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/reserve_-FD.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/reserve_H--.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/reserve_H-D.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/reserve_HF-.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/reserve_HFD.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/search_basic.cab
Binary file not shown.
Binary file modified lib/libmspack/test/test_files/cabd/search_tricky1.cab
Binary file not shown.
8 changes: 6 additions & 2 deletions libmspack4n.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.24720.0
# Visual Studio Version 17
VisualStudioVersion = 17.9.34728.123
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "libmspack4n", "libmspack4n\libmspack4n.csproj", "{3903631A-A516-4A7C-B614-EF7DF4251E5F}"
EndProject
Expand All @@ -14,6 +14,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
.build\IncludeNativeLib.targets = .build\IncludeNativeLib.targets
.build\libmspack4n.msbuild = .build\libmspack4n.msbuild
.build\libmspack4n.nuspec = .build\libmspack4n.nuspec
test.bat = test.bat
EndProjectSection
EndProject
Global
Expand All @@ -34,4 +35,7 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {339A863E-0F0D-4F02-9AED-8E817DDBBD6F}
EndGlobalSection
EndGlobal
16 changes: 8 additions & 8 deletions libmspack4n/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
Expand All @@ -8,12 +8,12 @@
// </auto-generated>
//------------------------------------------------------------------------------

[assembly: System.Reflection.AssemblyTitle("libmspack4n")]
[assembly: System.Reflection.AssemblyDescription("A .NET version of the libmspack libmspack library that enables programatically re" +
"ading and extracting the content of Microsoft cab files.")]
[assembly: System.Reflection.AssemblyCompany("Scott Willeke")]
[assembly: System.Reflection.AssemblyVersion("0.8")]
[assembly: System.Reflection.AssemblyFileVersion("0.8")]
[assembly: System.Reflection.AssemblyCopyright("Copyright Scott Willeke ©2013-2016")]
using System;
using System.Reflection;

[assembly: AssemblyVersion("0.0.1")]
[assembly: AssemblyFileVersion("0.0.1")]
[assembly: AssemblyCopyright("Copyright Scott Willeke ©2013-2016")]

// Generated by the MSBuild WriteCodeFragment class.

Loading