this post was submitted on 12 Oct 2023
1214 points (94.5% liked)

linuxmemes

21434 readers
1141 users here now

Hint: :q!


Sister communities:


Community rules (click to expand)

1. Follow the site-wide rules

2. Be civil
  • Understand the difference between a joke and an insult.
  • Do not harrass or attack members of the community for any reason.
  • Leave remarks of "peasantry" to the PCMR community. If you dislike an OS/service/application, attack the thing you dislike, not the individuals who use it. Some people may not have a choice.
  • Bigotry will not be tolerated.
  • These rules are somewhat loosened when the subject is a public figure. Still, do not attack their person or incite harrassment.
  • 3. Post Linux-related content
  • Including Unix and BSD.
  • Non-Linux content is acceptable as long as it makes a reference to Linux. For example, the poorly made mockery of sudo in Windows.
  • No porn. Even if you watch it on a Linux machine.
  • 4. No recent reposts
  • Everybody uses Arch btw, can't quit Vim, and wants to interject for a moment. You can stop now.
  •  

    Please report posts and comments that break these rules!


    Important: never execute code or follow advice that you don't understand or can't verify, especially here. The word of the day is credibility. This is a meme community -- even the most helpful comments might just be shitposts that can damage your system. Be aware, be smart, don't fork-bomb your computer.

    founded 1 year ago
    MODERATORS
     
    you are viewing a single comment's thread
    view the rest of the comments
    [–] [email protected] 32 points 1 year ago (3 children)

    The reason you expect this is because Windows has a file lock behaviour that won’t let you delete a file when it’s in use, in Linux this limitation doesn’t exist.

    Raymond Chan, arguably one of the best software engineers in the world, and a Microsoft employee, has repeatedly lamented the near malware like work arounds developers have had to invent to overcome this limitation with uninstallers.

    Think about uninstalling a game. You need to run “uninstall.exe” but you don’t want uninstall.exe to exist after you’ve run it… but you can’t delete a file that’s in use. Uninstall.exe will always be in use when you run it….so how do you make it remove itself?

    Schedule a task? Side load a process? Inject a process? Many ways…. But most look like malware.

    Linux has never suffered this flaw.

    [–] [email protected] 6 points 1 year ago (1 children)

    This seems like a pretty specific use case, but also pretty common. A system function to delete the file that called it should cover that entirely, but I guess psudo-malware is acceptable?

    [–] [email protected] 5 points 1 year ago (1 children)

    Pseudo-malware is pretty much the way to go as a developer in my experience.

    I believe his suggestion of a javascript file that deletes itself works only works because javascript gets sandboxed and doesn't suffer from Windows "flaw" with file locks.

    https://devblogs.microsoft.com/oldnewthing/20230911-00/?p=108749

    While Raymond does offer a solution he's also completely side stepping any responsibility on Microsoft's part in creating and perpetuating this problem without offering their own native solution.

    [–] [email protected] 3 points 1 year ago

    That last bit IMO is one reason to argue against him being the best software engineer. He might have the skills, but they are offset by his conflict of interest with MS.

    [–] [email protected] 4 points 1 year ago (1 children)

    So what is the solution on windows?

    [–] [email protected] 1 points 1 year ago

    Generally the solution is to do something that looks like malware, or use a third party feature that side steps the problem, as happens with javascript.

    https://devblogs.microsoft.com/oldnewthing/20230911-00/?p=108749

    [–] [email protected] 1 points 1 year ago (1 children)

    I made a Batch uninstaller (to one of my other bat scripts I think), and it could remove itself without any problem just with the command "del whateverthenamewas.bat"

    [–] [email protected] 3 points 1 year ago (1 children)

    Yeah, because the bat file isn't actually running, it's just a list of commands cmd should execute.

    [–] [email protected] 3 points 1 year ago

    Yup, CMD acts as a parser / runtime and the process is bound to the CMD binary, the script file is being run by CMD which keeps a copy of it in its own working memory in RAM