In my experience Nsudo 8 is more universal and less buggy than other solutions, but if Nsudo 9 or something else works for you, there isn't a compelling reason to replace it.
FWIW, I also hit the same issue with a single-user Hyper-V VM (with enhanced session, so much likely involving some RDP magic too). It's not terribly complicated to tweak the script to use NSudo8 instead of SuperUser for an advanced user, but it makes the user experience for everyone else a bit... suboptimal. IMHO, that would be nice if @abbodi1406 considered replacing SU by the battle proven NSudo8 (Happy New Year everyone!)
Well given the elevation script is separate from the installer script, Is probably just matter of copying nsudo.exe in the bin folder and overwriting the elevation script with an older copy Not getting that, what changes for the end user if the elevation exe is X.exe over Y.exe (assuming they are both working)? To you !
Yup, just add NSudoC.exe in the bin folder and replace 'superUser64.exe Install.cmd' by 'NSudoC.exe -U:T -P:E "\"\"%~dp0bin\Install.cmd"' and it fixes the issue. Well, the scenario you describe (i.e having a dedicated Windows user for WMC with autologon) is likely quite common, so we're probably not the only ones who'll hit this weird behavior when using the 8.10 package. The user experience would be much better if it worked without tweaking the installation script, as the 8.8.x branch did
@Kévin Chalet Ok I got your sentence wrongly I thought that "suboptimal" was referred to a version with superuser replaced with nsudo 8, so I did wonder how a fix could make the experience suboptimal... So to address what you really meant, frankly I'm bored about "normal" users that dont think twice when using the work of many people who spent months or even years (like in the WMC case) perfecting a program, but are unable even to "add water and stir", because it's too complicate. There are users here that follow this thread since 2015, and after a decade got NOTHING from a decade of development, suggestions, fixes and so on. This is not incompetence, this is laziness.
I believe it has a lot to do with the fact WMC has always been regarded by many users as a "turnkey" Media Center option: it used to be installed by default on most high-end Windows versions and configuring it was only a matter of answering a few questions (thanks to its amazing wizards). Sadly, it's no longer true today and there are lots of roadblocks: it's no longer officially supported, CableCARD no longer works on recent versions of Windows 10, the fullscreen mode is buggy on Intel's 11th+ iGPUs, many countries moved to HEVC/AC4 which isn't supported by WMC, etc. If we're honest, it takes a lot of dedication to keep using WMC in 2024... and not everyone has the skills (or patience) required to deal with all that stuff. @abbodi1406 any objection if I publish a 8.10.1 version of your package with NSudo8 instead of SuperUser?
Speaking of that, I finally took the time to give Patchou's Media Center Themer a try during the holidays (I've always been a huge Media Center Studio fan) and OMG, what a wonderful piece of software it is! It makes authoring and deploying WMC themes a whole lot easier. Not sure why I haven't tried it sooner...
Unfortunately, the x86 console version of NSudo 8.2 is flagged as a malware by Windows Defender, so it's not ideal (surprisingly, neither the x86 graphical tool nor the x64 CLI/GUI are flagged ) I tried with gsudo and it seems to work on my Hyper-V VM machine (it's a signed executable, so it probably helps not being flagged). Do you guys have any experience (or concerns) with it?
Sure, but those people can use W7/W8/W8.1 with the official WMC or LTSC2015 + the old package w/o any major drawback. My personal idea is that if someone has the curiosity and the will to try WMC on "unsupported OSes" has very likely enough skill to launch a TI prompt and to type install.cmd Well at least for win11 the problem is already solved in the worst possible way, there isn't any public 32 bit version No, sorry. I didn't investigate a lot on alternate exe after I figured out that 8.2 worked practically everywhere. But maybe is worth to take a look to runasTI by bau / aveyo that requires no external exe at all. P.S. I didn't play a lot with the latest version from @abbodi1406, except for 9200 version. But I think there is a regression over the 8.8.1 I use since the stone age... looks like is not possible to set the miniguide to 3/4/5 rows (using epg123) something that I always do and that always worked since w7. Given you are experimenting right now, can you check if it behaves the same for you? P.S2 About nsudo graphical, likely it can be used in a batch using the start command
Yes TrustedInstaller ACLs on files and directories is superfluous it should only be set on real CBS package
@abbodi1406 okay, thanks. What about the symlinks (well, hard links to be exact): was it deliberate too?
You can say so i don't think hardlinks are useful without WinSxS and the new copy is more appropiate for proper NGEN operation
I disagree here. If nothing else hardlinks avoid a waste of space. Back on I time decided to make 8.7/8.8.x purposely to replace the duplicated files with proper hard links, and I never had a problem with them
Well, it sadly breaks important scenarios like the one @acer-5100 mentioned. I just double-checked and as I expected, the GACed assemblies were hard links on the original Windows 7 version. Regarding NGEN, I'd expect native images to be invalidated (and recreated) when the associated managed assembly is updated.
It's hardlinked because It's CBS do you see .NET Framework 4.x files/GAC hardlinked? what's the problem exactly with "non hardlink" scenario?
In the original WMC each file has three hard links: working directory/winsxs/msil. SxS links are useless in non DISM installations so below is what I did back in the "middle age" in 8.7/8.8 Code: echo Creating hard links mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_64\BDATunePIA\v4.0_6.3.0.0__31bf3856ad364e35\BDATunePIA.dll %SystemRoot%\ehome\BDATunePIA.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_64\mcplayerinterop\v4.0_6.3.0.0__31bf3856ad364e35\mcplayerinterop.dll %SystemRoot%\ehome\mcplayerinterop.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_64\mcstoredb\v4.0_6.3.0.0__31bf3856ad364e35\mcstoredb.dll %SystemRoot%\ehome\mcstoredb.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_64\mcupdate\v4.0_6.3.0.0__31bf3856ad364e35\mcupdate.exe %SystemRoot%\ehome\mcupdate.exe >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_64\Mcx2Dvcs\v4.0_6.3.0.0__31bf3856ad364e35\Mcx2Dvcs.dll %SystemRoot%\ehome\Mcx2Dvcs.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_64\Microsoft.MediaCenter.Interop\v4.0_6.3.0.0__31bf3856ad364e35\Microsoft.MediaCenter.Interop.dll %SystemRoot%\ehome\Microsoft.MediaCenter.Interop.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_64\Microsoft.MediaCenter.iTV.Media\v4.0_6.3.0.0__31bf3856ad364e35\Microsoft.MediaCenter.iTV.Media.dll %SystemRoot%\ehome\Microsoft.MediaCenter.iTV.Media.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_64\Microsoft.MediaCenter.Mheg\v4.0_6.3.0.0__31bf3856ad364e35\Microsoft.MediaCenter.Mheg.dll %SystemRoot%\ehome\Microsoft.MediaCenter.Mheg.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_64\Microsoft.MediaCenter.TV.Tuners.Interop\v4.0_6.3.0.0__31bf3856ad364e35\Microsoft.MediaCenter.TV.Tuners.Interop.dll %SystemRoot%\ehome\Microsoft.MediaCenter.TV.Tuners.Interop.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_32\ehexthost32\v4.0_6.3.0.0__31bf3856ad364e35\ehexthost32.exe %SystemRoot%\ehome\wow\ehexthost32.exe >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_32\ehexthost32\v4.0_6.3.0.0__31bf3856ad364e35\ehexthost32.exe.config %SystemRoot%\ehome\wow\ehexthost32.exe.config >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehCIR\v4.0_6.3.0.0__31bf3856ad364e35\ehCIR.dll %SystemRoot%\ehome\ehCIR.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehexthost\v4.0_6.3.0.0__31bf3856ad364e35\ehexthost.exe %SystemRoot%\ehome\ehexthost.exe >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehexthost\v4.0_6.3.0.0__31bf3856ad364e35\ehexthost.exe.config %SystemRoot%\ehome\ehexthost.exe.config >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehiActivScp\v4.0_6.3.0.0__31bf3856ad364e35\ehiActivScp.dll %SystemRoot%\ehome\ehiActivScp.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehiBmlDataCarousel\v4.0_6.3.0.0__31bf3856ad364e35\ehiBmlDataCarousel.dll %SystemRoot%\ehome\ehiBmlDataCarousel.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehiExtens\v4.0_6.3.0.0__31bf3856ad364e35\ehiExtens.dll %SystemRoot%\ehome\ehiExtens.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehiiTV\v4.0_6.3.0.0__31bf3856ad364e35\ehiiTV.dll %SystemRoot%\ehome\ehiiTV.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehiProxy\v4.0_6.3.0.0__31bf3856ad364e35\ehiProxy.dll %SystemRoot%\ehome\ehiProxy.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehiTVMSMusic\v4.0_6.3.0.0__31bf3856ad364e35\ehiTVMSMusic.dll %SystemRoot%\ehome\ehiTVMSMusic.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehiUPnP\v4.0_6.3.0.0__31bf3856ad364e35\ehiUPnP.dll %SystemRoot%\ehome\ehiUPnP.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehiUserXp\v4.0_6.3.0.0__31bf3856ad364e35\ehiUserXp.dll %SystemRoot%\ehome\ehiUserXp.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehiVidCtl\v4.0_6.3.0.0__31bf3856ad364e35\ehiVidCtl.dll %SystemRoot%\ehome\ehiVidCtl.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehiwmp\v4.0_6.3.0.0__31bf3856ad364e35\ehiwmp.dll %SystemRoot%\ehome\ehiwmp.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehiWUapi\v4.0_6.3.0.0__31bf3856ad364e35\ehiWUapi.dll %SystemRoot%\ehome\ehiWUapi.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehRecObj\v4.0_6.3.0.0__31bf3856ad364e35\ehRecObj.dll %SystemRoot%\ehome\ehRecObj.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\ehshell\v4.0_6.3.0.0__31bf3856ad364e35\ehshell.dll %SystemRoot%\ehome\ehshell.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\loadmxf\v4.0_6.3.0.0__31bf3856ad364e35\loadmxf.exe %SystemRoot%\ehome\loadmxf.exe >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\mcepg\v4.0_6.3.0.0__31bf3856ad364e35\mcepg.dll %SystemRoot%\ehome\mcepg.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\mcglidhostobj\v4.0_6.3.0.0__31bf3856ad364e35\mcglidhostobj.dll %SystemRoot%\ehome\mcglidhostobj.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\mcstore\v4.0_6.3.0.0__31bf3856ad364e35\mcstore.dll %SystemRoot%\ehome\mcstore.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\Microsoft.MediaCenter\v4.0_6.3.0.0__31bf3856ad364e35\Microsoft.MediaCenter.dll %SystemRoot%\ehome\Microsoft.MediaCenter.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\Microsoft.MediaCenter.Bml\v4.0_6.3.0.0__31bf3856ad364e35\Microsoft.MediaCenter.Bml.dll %SystemRoot%\ehome\Microsoft.MediaCenter.Bml.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\Microsoft.MediaCenter.iTV\v4.0_6.3.0.0__31bf3856ad364e35\Microsoft.MediaCenter.iTV.dll %SystemRoot%\ehome\Microsoft.MediaCenter.iTV.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\Microsoft.MediaCenter.iTv.Hosting\v4.0_6.3.0.0__31bf3856ad364e35\Microsoft.MediaCenter.iTv.Hosting.dll %SystemRoot%\ehome\Microsoft.MediaCenter.iTv.Hosting.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\Microsoft.MediaCenter.ITVVM\v4.0_6.3.0.0__31bf3856ad364e35\Microsoft.MediaCenter.ITVVM.dll %SystemRoot%\ehome\Microsoft.MediaCenter.ITVVM.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\Microsoft.MediaCenter.Playback\v4.0_6.3.0.0__31bf3856ad364e35\Microsoft.MediaCenter.Playback.dll %SystemRoot%\ehome\Microsoft.MediaCenter.Playback.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\Microsoft.MediaCenter.Shell\v4.0_6.3.0.0__31bf3856ad364e35\Microsoft.MediaCenter.Shell.dll %SystemRoot%\ehome\Microsoft.MediaCenter.Shell.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\Microsoft.MediaCenter.Sports\v4.0_6.3.0.0__31bf3856ad364e35\Microsoft.MediaCenter.Sports.dll %SystemRoot%\ehome\Microsoft.MediaCenter.Sports.dll >nul 2>&1 mklink /h %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\Microsoft.MediaCenter.UI\v4.0_6.3.0.0__31bf3856ad364e35\Microsoft.MediaCenter.UI.dll %SystemRoot%\ehome\Microsoft.MediaCenter.UI.dll >nul 2>&1 echo. The problem is that epg123/mychannels logo patches on the fly Microsoft.MediaCenter.Shell.dll (IIRC) which means that, in copied file scenario, it patches just one file, while WMC uses the other copy (the original one).