Ben you amaze me once more, thank you for the deep insight and I am very glad is not just me. I completely agree with you (b) is the best option, I prefer having things outside VM unless of course is true VM functionality. I may look at VM code in the future too, I think I have done it for squeak. The problem with touching VM code is that may be difficult to know how you will effect the system even if the debugger does not complain. But none the less the knowledge can become handy.
On Thu, Sep 4, 2014 at 7:53 PM, Ben Coman <[email protected]> wrote: > I can confirm this behaviour. It looks like FilePlugin cannot 'rename' > a folder across drives, although it can rename a file across drives. A hack > to demonstrate from Workspace... > > filePlugin := FilePluginPrims allInstances first. > filePlugin rename: 'C:\Temp\Test\file1.txt' to: > 'C:\Temp\Test\file2.txt'. "-->sucess" > filePlugin rename: 'E:\Temp\Test\file1.txt' to: 'E:\Temp\Test\file2.txt'. > "-->sucess" > filePlugin rename: 'C:\Temp\Test\file2.txt' to: 'E:\Temp\Test\file3.txt'. > "-->sucess" > > filePlugin rename: 'C:\Temp\Test\folder1' to: 'C:\Temp\Test\folder2'. > "-->sucess" > filePlugin rename: 'E:\Temp\Test\folder1' to: 'E:\Temp\Test\folder2'. > "-->sucess" > filePlugin rename: 'C:\Temp\Test\folder2' to: 'E:\Temp\Test\folder3'. > "-->fail" > > I think that is more of a design constraint that a bug. VBscript has a > similar problem [1]. I cloned Pharo-vm off github and in > ".../platforms/wind32/plugins/FilePlugin/sqWin32FilePrims.c" found function > sqFileRenameOldSizeNewSize uses win32api function MoveFileW which is > documented [2] as "The MoveFile function will move (rename) either a file > or a directory (including its children) either in the same directory or > across directories. The one caveat is that the MoveFile function will fail > on directory moves when the destination is on a different volume." > > Unix platforms don't encounter this since all volumes are mounted under > one root. (e.g. OSX mounting usb drives under /Volumes). I guess the Unix > equivalent might be renaming to folder across network shares, though I'm > not familiar with how different OS's handles that. > > However we should consider consistency across platforms. Cross volume > folder renames could be checked for, and modified to a copy/delete > strategy. To state the obvious, the options of where to do this are: > a. In PharoLauncher > b. In Pharo in > WindowsStore(FileSystemStore)>>rename:ifAbsent:to:ifPresent:fileSystem: > c. In VM > > Off the cuff, I'd vote for (b.), but others will better idea of the > approach to take. Now if indeed a copy/delete fallback strategy is > considered beneficial, it would need to consider how timestamps are handled. > > [1] > https://groups.google.com/forum/#!topic/microsoft.public.scripting.vbscript/gz7mv5r50xs > [2] > http://msdn.microsoft.com/en-us/library/windows/desktop/aa365239(v=vs.85).aspx > > cheers -ben > > btw, Since this was my first time looking a VM code, I'm happy to report > it was dead easy to clone pharo-vm from github and review (without yet > trying to compile). Actually I cloned on OSX so I could `find` the win32 > FilePlugin code. > > > > kilon alios wrote: > > So I manage to get Launcher running with downloading pharolauncher zip and > then downloading pharo 3 and joining the two folders. Launcher now runs but > I dont want it to store images in my c drive so I go to preferences and > tell it where in my D drive to save images (D:\software\PharoImages) I > press enter and I am getting this error > > WindowsStore(Object)>>primitiveFailed: > WindowsStore(Object)>>primitiveFailed > WindowsStore(FileSystemStore)>>rename:ifAbsent:to:ifPresent:fileSystem: > FileSystem>>rename:ifAbsent:to:ifPresent: > FileSystem>>rename:to: > FileReference>>moveTo: > PhLRelocateImageDirectoryCommand>>execute in Block: [ :child | child > moveTo: (self target resolvePath:...etc... > Array(SequenceableCollection)>>collect: > PhLRelocateImageDirectoryCommand>>execute > PhLRelocateImageDirectoryCommand>>executeOrInform > PhLDirectoryBasedImageRepository class>>migrateFrom:to: > PhLDirectoryBasedImageRepository class>>location: > PhLDirectoryBasedImageRepository class>>locationString: > SettingDeclaration>>realValue: > SettingDeclaration>>index: > EditableDropListMorph(DropListMorph)>>listSelectionIndex: > EditableDropListMorph>>content: > PluggableTextFieldMorph>>acceptTextInModel > PluggableTextFieldMorph(PluggableTextMorph)>>acceptBasic > PluggableTextFieldMorph>>accept > TextMorphForFieldView(TextMorphForEditView)>>acceptContents > TextEditor>>accept > TextMorphForFieldView(TextMorphForEditView)>>keyStroke: > TextMorphForFieldView>>keyStroke: > TextMorphForFieldView(TextMorph)>>handleKeystroke: > KeyboardEvent>>sentTo: > TextMorphForFieldView(Morph)>>handleEvent: > TextMorphForFieldView(Morph)>>handleFocusEvent: > HandMorph>>sendFocusEvent:to:clear: in Block: [ ... > BlockClosure>>on:do: > > > > On Mon, Sep 1, 2014 at 12:06 PM, kilon alios <[email protected]> > wrote: > >> I am not back to my work pc, so if you have any ideas how to proceed I am >> open to suggestions. >> >> >> On Thu, Aug 28, 2014 at 5:17 PM, Tim Mackinnon <[email protected]> wrote: >> >>> Kilon - it would be good if we could percevear to try and get a fix and >>> detailed instructions for other less confident users… At least test Ben’s >>> updated installer so we can clear this. >>> >>> I appreciate the aggravation you are putting up with. >>> >>> Tim >>> >>> On 28 Aug 2014, at 10:35, kilon alios <[email protected]> wrote: >>> >>> My work pc is dual boot to ubuntu and win 7 . I am not a fan of linux >>> either, loads of problems there but nowhere near as bad as windoom. >>> >>> I need windoom because of a Greek OCR I use at work to scan legal >>> documents. I have no choice other than to continue using it. >>> >>> I dont care what the corporate world does or the fact that almost 100% >>> of my fellow lawyers use windoom and some still DOS. Thats their problem :D >>> >>> It would be nice to support what 95% of people use out there, but alas >>> I cant take it anymore. Coding should be fun, Windoom kills my inner child. >>> Sorry for those that have to tolerate this crap, but I am lucky enough not >>> to . >>> >>> /ranting off >>> >>> >>> On Thu, Aug 28, 2014 at 11:50 AM, Ben Coman <[email protected]> wrote: >>> >>>> kilon alios wrote: >>>> >>>>> ok thing get worse and worse >>>>> >>>>> I try to run pharo as administrator and pharo opens and exits >>>>> immediately , it creates a stderr which contains the following >>>>> >>>>> http://pastebin.com/v9Hpx9pK >>>>> >>>>> I found the folder you mentioned and I deleted it , now pharo does not >>>>> open at all even when run without "run as administrator" >>>>> Boy I hate Windoom. I also tried Tim link , nothing, pharo opens but >>>>> does nothing, no gui, nothing. I know it opens because i can see its >>>>> process in the task manager which i have to terminate manually. >>>>> I do all my coding and art on macos, I only have windows at work so i >>>>> can test my code on windoom too, but this was the last straw, I had enough >>>>> with this uber crappy OS for 17 years now. I am dropping support for it >>>>> and >>>>> sticking to MacOS only. >>>>> Thanks guys for your help but it does not worth it. I hope no other >>>>> windows user experience my problem. >>>>> >>>>> >>>> I empathize. I've been a Linux advocate for years, but never made the >>>> full desktop switch since I needed a Windows system for corporate >>>> compatibility. Then I got a mac-mini to experiment with iPad Mobile Device >>>> Management, and found it easier to get Latex working on it than on Windows >>>> (for processing Pillar output), and now I find myself using it for Pharo >>>> more every day, and my Windows box is starting to be neglected (except I >>>> still need to migrate my old Thunderbird email archive). >>>> >>>> However success in the corporate world still hinges a lot on Windows >>>> compatibility. I will still have a go at updating PharoLauncher Installer >>>> to avoid this problem. >>>> cheers, Ben >>>> >>>> P.S. @Tim, Your alternate-VM feature sound interesting. I'll check it >>>> out. >>>> >>>> >>> >>> >> > >
