Background: We are developing a managed package with several tabs. One tab should only be visible to all System Administrators and the other tabs should only be visible to any user that gets assigned our permission set.
Problem: When I create a beta release of our managed package and install it on an org that doesn't have our packaged installed, I expect it to honor the admin profile and permission set settings and such that were specified to only show tabs as specified. However, in my tests, I am always seeing all the tabs for the admins and for users that have access to the app.
When looking at the documentation and past questions on stack exchange, I am getting mixed messages on what is possible:
Per the documentation on installing managed packages, tab settings are supposed to be determined by the package creator
, but looking at Tab visibility for the tab packaged in a managed package and this really old request that doesn't look like it was ever resolved makes me think that I really don't have control over tab visibility settings after all.
Am I on a fool's errand to try to get the tab visibilities to do what I want on install, or is there a trick or setting or something that I am missing? I understand that previous settings from previous installs cannot be adjusted by my package, but I am having this issue from a fresh install.
Would it be better to just break up the tabs into two separate apps: one that is only visible to the system admins and one that is only visible to the permission set, or is there a better way to get this figured out?
Edit: details on what I ended up doing
The chosen answer is correct: there is no way of stopping this behavior during install. The target picked by the admin will get automatic access to all your custom permissions and tabs, whether or not you want them to.
We have admins go to our install wizard to finish configuring the application and I was able to figure out how to remove and add custom permissions to/from profiles and such to appropriately get the effect I wanted.