XSplit installer removes directory junctions



  • On my computer, C:\Users is a directory junction to D:\Users. This will be relevant later.

    I was going to do some streaming using XSplit earlier today when XSplit GameCaster told me there was an update.

    I told GameCaster to update and it did.

    It played the Windows error sound partway through installation, but no message boxes appeared.

    When the installation finished, I got another error sound and a message box on the screen about not finding a log file.

    At this point, I noticed that most of my desktop icons had vanished. The only ones still there were added by Explorer itself based on what I had set Control Panel's Personalize -> Desktop Icon Settings.

    After rebooting the computer, logging in failed. I don't remember the exact error, but it was something like "profile is missing."

    I rebooted to Safe Mode and checked inside C:\Users only to find that only my profile directory existed... and the only files in my profile were XSplit's files.

    XSplit had removed the directory junction and installed its files directly to the C drive.

    I opened up a Command Prompt, used cd /d C:\ and rename c:\users c:\users.fucked then mklink /j C:\Users D:\Users to fix it. One more reboot and my PC is back to normal.

    This is new to the current version of the XSplit installer as XSplit has never had this problem before.


  • Discourse touched me in a no-no place

    Submit bugrep?



  • Already did.

    For whatever reason, bug reports are done through XSplit's forums, which I never have posted on.

    Since I'm a new user, my post is being hidden until it can be reviewed. Luckily, Split Media Labs isn't a US company or else it'd probably be delayed since it's a holiday weekend.



  • See, this is why you should always set your Users directory to read-only 🐠



  • Hey, at least it didn't delete D:\Users.



  • Read-only files can still be deleted.



  • So can / if you add --no-preserve-root



  • I'm guessing it uses some file system call that checked if C:\Users was a real directory or something, since directory junctions are essentially symlinks with slightly different semantics for network shares.


  • Java Dev

    @powerlord said:

    Luckily, Split Media Labs isn't a US company or else it'd probably be delayed since it's a holiday weekend.

    This weekend's a Christian holiday weekend - Quite a number of European countries will have Monday off.



  • Holy shit, that's a nightmare scenario there.

    Do you think your directory junction stunt caused the bug? It certainly saved your ass after it happened.



  • @powerlord said:

    I'm guessing it uses some file system call that checked if C:\Users was a real directory or something, since directory junctions are essentially symlinks with slightly different semantics for network shares.

    I'm guessing they're using a version of Windows installer to service updates to the installed application?
    Relocating the Users folder to another partition is not supported and may break both updates and OS upgrades.

    IIRC the lack of support is related to the scope of transactions on the NTFS filesystem, which cannot span multiple volumes. Microsoft may be taking some liberties in how to access the C:\Users folder to make transactions work correctly.



  • inb4 blakeyrant about doing it wrong 🚎



  • @Arantor said:

    inb4 blakeyrant about doing it wrong

    What? The XSplit installer is a piece of shit. It steals focus like 48 times, tells you to close applications XSplit has absolutely nothing to do with (one time: Outlook!), and loves to open cascades of DOS windows for God-knows what reason.

    This doesn't surprise me one bit.



  • It wasn't the XSplit part I was riffing on, more the 'relocating C:\Users to D:\Users part'...



  • @Arantor said:

    It wasn't the XSplit part I was riffing on, more the 'relocating C:\Users to D:\Users part'...

    Why would I rant about that? That's perfectly valid.

    I personally wouldn't have done it that way, but there's also no problem with doing it that way.



  • And here was me expecting you to shout that it's doing it wrong, etc. since recent arguments on that subject seemed directly relevant...



  • @blakeyrat said:

    That's perfectly valid.

    No it isn't.


  • FoxDev

    So it's not valid to redirect a folder because MS can'twon't make Windows Update handle it properly?
    Also, one of those screenshots includes a mouse pointer; IME, Windows makes it harder to include the mouse pointer in a screenshot than not :wtf:



  • If you're going to do things that MS officially lists as "not supported", then shit is going to break. Of course, finding out exactly what is "not supported" is hard, and trying to come up with good reasons why perfectly sensible administration options are "not supported" is harder.

    I first encountered this particular issue after feeling all proud of myself for working out that the easy way to put Windows XP and all the installed programs on one partition, and all the user's files on another, was to do a standard installation and then just make a junction from C:\Documents and Settings to D:\Documents and Settings. Set the machine up that way, installed it in customer's site: done and dusted.

    Wasn't until a couple of weeks later that the customer reported that she was unable to delete any files. Turns out that the Recycle Bin is built on top of filesystem rename operations, and that those fail when Explorer tries to rename a file that's actually held on drive D: into a subfolder of C:\Recycler because whoever coded it was not expecting pathnames to contain cross-filesystem symlinks. Bleaugh.

    I expect that the Windows Update failures will come down to similarly sloppy coding.


  • FoxDev

    @flabdablet said:

    If you're going to do things that MS officially lists as "not supported", then shit is going to break.

    True; however, it then raises the question of why it's possible at all, given it's not supported.



  • @RaceProUK said:

    one of those screenshots includes a mouse pointer; IME, Windows makes it harder to include the mouse pointer in a screenshot than not

    GreenShot will do that for you, IIRC, and is nice in all kinds of other ways as well.



  • @RaceProUK said:

    why it's possible at all

    Because the filesystem people inside MS more or less know what they're doing, but the UI is built by the kind of person who thinks that The Ribbon is worthwhile in a way that getting basic functionality right is not.

    Oh, and Windows Update has always been a broken buggy piece of shit that should never have made it out the door. For something so incredibly under-capable, it has so many failure modes.



  • Meh. Ok, whatever.

    Like I said, I wouldn't have done it that way anyway.



  • @flabdablet said:

    If you're going to do things that MS officially lists as "not supported", then shit is going to break. Of course, finding out exactly what is "not supported" is hard, and trying to come up with good reasons why perfectly sensible administration options are "not supported" is harder.

    You can moved named folders where ever you like. That's explicitly supported. That's what you're supposed to be doing instead of moving /Users itself, I suppose.



  • @blakeyrat said:

    explicitly supported

    Maybe by Microsoft. As you yourself have lamented on numerous occasions, occasionally very poorly by application vendors.

    Bitter experience has taught me that it is never worth setting up a Windows box in any configuration other than the mainstream one where everything is all jammed together in a single huge volume, preferably one assigned drive letter C. Moving away from this configuration in any direction always ends up wasting more time than it saves.

    As a working netadmin I have had plenty of occasions to wish that this were not so. But it is. So nowadays I just hold my nose and do it, and therefore treat all my Windows installations as essentially disposable. Back that shit up, yo.



  • The only official way of doing it requires that you do it during the OS install.

    Which is a problem if you add a new drive later.



  • You can also mess with libraries. Eg. add D:\Documents as your documents library and E:\Download as your Downloads... Then either don't use the defaults on the C drive, or remove them altogether. That should cover most needs in terms of search and backup.



  • Incidentally, I've never had trouble with linking C:\Users to D:\Users on Windows 7... until now.


  • Java Dev

    Seems like another way to break broken applications.



  • @powerlord said:

    do it during the OS install

    And even if you do it that way, even MS's shit still breaks.

    Not linking to anything new here - @ragnax had both of these covered - but here's the pull quote from the last one that I personally found the most hilarious of all:

    Note If you use the unattend settings to set up the operating systems that are listed in this article, we will provide commercially reasonable efforts to support your scenario.

    Making Windows Update work properly has apparently remained commercially unreasonable for decades.



  • @PleegWat said:

    Seems like another way to break broken applications.

    Not really, if you keep your original C:/Users/XXX/Documents as a graveyard of bad applications' crap.



  • This is a huge WTF in itself. "Oh, sure, you can use this variable to move the Users folder, but then your system will not work". WELL WHAT'S THE POINT THEN



  • @PleegWat said:

    This weekend's a Christian holiday weekend -

    Isn't it Buddha's birthday?


  • Discourse touched me in a no-no place

    @Zemm said:

    Isn't it Buddha's birthday?

    YKYHBRTMWTDWTFW you misread that as @­Buddy…



  • @powerlord said:

    For whatever reason, bug reports are done through XSplit's forums, which I never have posted on.

    Do they also use Discourse?



  • @cartman82 said:

    Not really, if you keep your original C:/Users/XXX/Documents as a graveyard of bad applications' crap.

    Bad juju can and will still happen with old applications that use legacy APIs to access the documents folder and get served some weird kind of 'merged' view of the folders in your documents library. I know from personal experience that this can at the very least crash the Rollercoaster Tycoon 3 game when you use the custom scenery functionality.

    There is no good solution for this other than forcing application developers to FIX THEIR SHIT.


  • ♿ (Parody)

    @Maciejasjmj said:

    Do they also use Discourse?

    Had exactly that thought. Looking them up, the answer is: [spoiler]They do not use Discourse.[/spoiler]


  • Notification Spam Recipient

    Interestingly enough, MS updated the article to include Windows 10.



  • Wait, so in Windows how do you put your home directories on a separate partition?


  • Notification Spam Recipient

    Any way you want, right after accepting that things will break if you do it.



  • @gordonjcp said:

    Wait, so in Windows how do you put your home directories on a separate partition?

    Long answer:

    First thing is to give that partition a drive letter, and only ever refer to it that way. Your fancy schmancy junction point and symlink concepts might be all very well for those ubergeeks over in the file system silo, but here in the user experience silo we understand that they just make our heads hurt.

    Moving special folders from e.g. C:\Users\gordonjcp\Documents to D:\Users\gordonjcp\Documents after the gordonjcp user account is all set up is relatively easy; there are even supported ways to do that. However, if you want your profile root to be D:\Users instead of C:\Users so that new user accounts will automatically get their home folders allocated there by default, I know of only two reliable ways to make that happen.

    One is to use something like nLite or the Windows Automated Installation Kit or the Microsoft Deployment Workbench to generate a custom Windows installer, and have Windows set up that way from the get-go.

    The other is to do a standard setup, then boot into a live Windows environment using something like Hiren's Boot CD before the resulting Windows installation gets a chance to run its OOBE, then load all the registry hives you can find and change every instance of C:\Users to D:\Users by hand. Even before OOBE there will be quite a few of these. Some of them may also show up as C?\Users and other similarly not-quite-there constructions. Having fixed up the target system's registry, move its C:\Users folder to D:\Users before booting it up and letting its OOBE go ahead.

    You can do the registry fixup and folder move thing post-OOBE, but you'll have a hell of a lot more instances of C:\Users to find and replace.

    This process minimizes the number of moving parts that will no longer fit together, but does not reduce it to zero. If \Users is not on the same drive as \Windows - also, if \ProgramData is not on the same drive as \Windows - shit will break because various Windows subsystems make naive assumptions about what they can move into place using rename (intra-filesystem move) operations.

    Short answer:

    You might think you want to do that, but you're wrong.


  • Notification Spam Recipient

    @flabdablet said:

    move into place using rename (intra-filesystem move) operations.
    TRWTF is not having transparent copy-delete if nodal rename doesn't work. 😛


    Filed under: Once implemented, it only gets worse down the line...



  • @Tsaukpaetra said:

    TRWTF is not having transparent copy-delete if nodal rename doesn't work.

    What if the D: drive was mapped to a shared folder on the C: drive?


  • Notification Spam Recipient

    @anotherusername said:

    D: drive was mapped to a shared folder on the C: drive?

    Although I think the proper terminology would be to "mount the partition to an (empty) folder on the NTFS-formatted C: drive", this is exactly part of the shenanigans I mentioned in the Filed Under category...



  • @anotherusername said:

    What if the D: drive was mapped to a shared folder on the C: drive?

    Doesn't matter. The problem lies with atomic rename operations, which Microsoft uses to perform safely journalled updates to Windows components, and which aren't available across volumes; neither physical nor logical, iirc.



  • No, I meant if you shared C:\Dfiles\ on the network and then mapped \\localhost\Dfiles as a D: drive.


  • Notification Spam Recipient

    Oh!
    You meant like subst C:\DFiles d:?

    Yeah, that's not supported either.



  • Why does Windows lack so many of the features Linux has? 🍹



  • Actually, most programs deal with a directory junction of the Users directory (or a specific user's directory) just fine.

    And by "most" I mean "every Microsoft program I've installed, including Windows, all Windows Updates, multiple versions of Office, Visual Studio, Visio, etc..., Java, Eclipse, Steam and Steam games, GOG Galaxy and GOG games..."

    In fact, XSplit's installer is the only program I've ever run into that has issues with it.



  • Eclipse? Steam? Holy shit.


Log in to reply