Expose StudioPublishService:PublishAs(...) to PluginSecurity & create respective permission

As a Roblox developer, it is currently impossible to automatically publish my changes to a Roblox place via command line or plugin.

If Roblox is able to address this issue, it would improve my development experience because I would be able to publish my game automatically after performing a plugin action, for example synchronizing game contents externally with Rojo or Lync.

Rojo currently uses a second party serializing program to generate an RBXL file which gets uploaded to Roblox using the Place Publishing API.

Lync is currently in development as a replacement for Rojo with the same goals and features in mind. If StudioPublishService:PublishAs(…) is not exposed to PluginSecurity, it too will need to use a serializing program.


What’s wrong with the normal publishing?

It cannot be automated in any fashion.

Why need to automate updates? Aren’t you making the Updates in studio already?

No, I’m using Rojo / Lync and GitHub to make changes.

Yo what? How you doing that for Roblox Studio!

This is what the open cloud publishing APIs are for. I don’t see how this benefits anything.

The current place cannot be published using the Open Cloud Place Publishing API. It requires a header for RBXL / RBXLX file contents, which is not something that plugins can create if using the contents of the current place.

See Place Publishing API | Roblox Creator Documentation

I don’t think Roblox will support this. A malicious plugin could insert something you don’t want and immediately publish the game. Possibly if it prompted the user if they wanted to publish? Seems reasonable, possibly mildly annoying depending on publish frequency.

Publishing is also not the same as saving, as the game you open in Studio can be different from what players join into. Sometimes, you may not want to publish but rather save, and having something automate this could be disruptive.

I think the publishing process can be made straight-forward:

  • If you’re using Team Create, the game will automatically save your changes.
  • If you opened a specific game, Roblox should tell you if you want to save your changes before closing.
  • If you opened an RBXL file, maybe you can have Lync monitor changes made to the file and automatically publish it. Roblox will also prompt you to save before closing.
1 Like

That makes sense. I forgot there was a difference with locally installed plugins vs marketplace plugins, and my oversight on the PublishAs parameters… though I should’ve totally expected either that or some SaveAs method either way, not sure why I even brought it up now.

I can see value in this change, and would like to see more openness in Roblox’s API to support third-party tooling. I still hold my skepticism that Roblox would add this due to their ambiguous (and often negative) approach towards third-party tooling support unfortunately, but I don’t think this is a bad change at all and would like to see this done.

Thanks for clearing up the concerns I had!

1 Like

Wrong. It would be nice if it was true though

User plugins have the same permissions as cloud plugins (only PluginSecurity)
I would be great if user plugins had access to LocalUserSecurity, but sadly you would need to use the CommandBar to do that.

I vaguely remembered plugins being able to run at a higher context… maybe that was when they were under BuiltinPlugins? I know Roblox protected that a while back to prevent running just any plugins under it, only theirs.

Updated to use PluginSecurity instead of LocalUserSecurity. In this case a new permission will need to be added for plugins as well.

this would really be helpful to me as I could quickly push out a update and get testers on the new version way quicker as sometimes i like to just invite people to try testing out things as there made.

1 Like

Since roblox refuses to add a “publish to all places in game” button, i would love this so i can code it into a plugin myself.

1 Like

Yep. You’re correct here. Its not supported anymore though because this is Roblox we’re talking about.

For the longest time until early 2021, changing the fflag DoNotLoadUnverifiedBuiltIns would allow unsigned builtins to run.

However, a suspicious shift from Roblox suddenly made it so both CoreScripts and BuiltInPlugins have to be signed before being loaded, with no way to disable the behaviour unless you’re willing to mess with the EXE’s raw assembly

ps: stop compiling the builtins not cool roblox