[squeak-dev] [BUG] ERROR: File not in Directory: [...] while
trying to create a SAR-archive on Windows
David T. Lewis
lewis at mail.msen.com
Sat Jan 24 00:42:35 UTC 2015
Hi Tim and Tobias,
I put a proposed fix for this in the inbox.
The update is:
ZipDirectoryMember>>localFileName: aString
| dir entry parent fsPath |
super localFileName: aString.
fileName last = $/ ifFalse: [ fileName := fileName, '/' ].
parent := FileDirectory default.
aString last = parent pathNameDelimiter
ifTrue: [fsPath := parent fullNameFor: aString]
ifFalse: [fsPath := parent fullNameFor: aString, parent slash].
(parent directoryExists: fsPath) ifTrue: [
dir := FileDirectory on: fsPath.
entry := dir directoryEntry.
self setLastModFileDateTimeFrom: entry modificationTime
]
This separates the host file system test (Windows in the case) from
the path naming in the zip archive. It also expands the path name to
be fully qualified ("C:\foo\bar" not just "bar") because this is important
on Windows and also should work on Unix.
Please give this a try and see if it solves the problem for you. If
nobody complains, I'll move it to trunk in a day or so.
Dave
On Thu, Jan 22, 2015 at 09:22:25PM +0100, Tim Oesterreich wrote:
> Hello all,
>
>
>
> |package folder|
>
>
>
> "Name of the Monticello-package that should be archived"
>
> package := 'SWAProject'.
>
> "Name of the resources folder in Contents/Resources/"
>
> folder := 'SWA-Resources'.
>
>
>
> zip := ZipArchive new.
>
> mczStream := RWBinaryOrTextStream on: (String new: 10000).
>
> workingCopy := MCWorkingCopy forPackage: (MCPackage new name: package).
>
> version := workingCopy newVersion fileOutOn: mczStream.
>
> (zip addString: mczStream contents as: package, '.mcz')
> desiredCompressionLevel: 0.
>
> zip addTree: Smalltalk imagePath match: [:e | e fullName startsWith:
>
> Smalltalk imagePath , FileDirectory slash , folder].
>
> zip addString: 'self fileInMonticelloZipVersionNamed: ''' , package,
> '.mcz''.
>
> (self membersMatching: ''' , folder , FileDirectory slash , '*.*'') do: [ :f
> | self
>
> extractMember: f].' as: 'install/preamble'.
>
> zip writeToFileNamed: package , '.sar'.
>
>
>
> This code should create a SAR-Archive from a Monticello-Package including
> all resources in the specified folder
>
> However it throws the error "File not in Directory: SWA-Resources#" on a
> Windows-System, while working fine on a Mac.
>
> It seems like there is an issue with the handling of platform-dependent
> directory seperators (\ on Windows, / on UNIX).
>
>
>
> Best
>
> -Tim
>
>
>
>
More information about the Squeak-dev
mailing list
|