nativefier / nativefier

Make any web page a desktop application
MIT License
34.88k stars 2.2k forks source link

App does not prompt for media access on Mac OS Monterey (12.1) #1333

Open schloram opened 2 years ago

schloram commented 2 years ago

Homework

Bug description

The created Nativefier app does not ask for media access on Mac OSX Monterey when trying to access them. This was possible before with Big Sur.

Steps to reproduce

Verbose output (NOTE: I had to change some values because this is for a internal VOIP Client):

Running in verbose mode! This will produce a mountain of logs and is recommended only for troubleshooting or if you like Shakespeare.

    Hi! Nativefier is minimally maintained these days, and needs more hands.
    If you have the time & motivation, help with bugfixes and maintenance is VERY welcome.
    Please go to https://github.com/nativefier/nativefier and help how you can. Thanks.

Processing options...
rawOptions {
  icon: 'AppIcon.png',
  i: 'AppIcon.png',
  _: [ 'https://my.3cx.de/webclient/' ],
  name: '3CX',
  n: '3CX',
  'darwin-dark-mode-support': true,
  darwinDarkModeSupport: true,
  'disable-context-menu': true,
  disableContextMenu: true,
  'disable-dev-tools': true,
  disableDevTools: true,
  inject: [ '3cx.css' ],
  'title-bar-style': 'hiddenInset',
  titleBarStyle: 'hiddenInset',
  'background-color': '#363535',
  backgroundColor: '#363535',
  'user-agent': 'firefox',
  u: 'firefox',
  userAgent: 'firefox',
  'max-height': 600,
  maxHeight: 600,
  'max-width': 400,
  maxWidth: 400,
  'min-height': 600,
  minHeight: 600,
  'min-width': 400,
  minWidth: 400,
  bounce: true,
  counter: true,
  verbose: true,
  'app-version': '3.0.3',
  appVersion: '3.0.3',
  'build-version': '3.0.3',
  buildVersion: '3.0.3',
  'app-copyright': 'John Doe',
  appCopyright: 'John Doe',
  c: false,
  conceal: false,
  'no-overwrite': false,
  noOverwrite: false,
  overwrite: true,
  portable: false,
  widevine: false,
  'always-on-top': false,
  alwaysOnTop: false,
  'full-screen': false,
  fullScreen: false,
  'hide-window-frame': false,
  hideWindowFrame: false,
  m: false,
  'show-menu-bar': false,
  showMenuBar: false,
  maximize: false,
  'single-instance': false,
  singleInstance: false,
  tray: 'false',
  zoom: 1,
  'user-agent-honest': false,
  honest: false,
  userAgentHonest: false,
  'clear-cache': false,
  clearCache: false,
  'block-external-urls': false,
  blockExternalUrls: false,
  'disable-gpu': false,
  disableGpu: false,
  'enable-es3-apis': false,
  enableEs3Apis: false,
  'ignore-gpu-blacklist': false,
  ignoreGpuBlacklist: false,
  'disable-old-build-warning-yesiknowitisinsecure': false,
  disableOldBuildWarningYesiknowitisinsecure: false,
  'ignore-certificate': false,
  ignoreCertificate: false,
  insecure: false,
  flash: false,
  f: false,
  'fast-quit': false,
  fastQuit: false,
  '$0': 'nativefier',
  targetUrl: 'https://my.3cx.de/webclient/',
  out: undefined
}
Inferred arch x64
Normalized URL https://my.3cx.de/webclient/ to: https://my.3cx.de/webclient/
Running in verbose mode! This will produce a mountain of logs and is recommended only for troubleshooting or if you like Shakespeare.
Inferred platform darwin

Performing async options post-processing.
Grabbing Firefox version data from https://product-details.mozilla.org/1.0/firefox_versions.json
Got icon from options. Using it, no inferring needed
Sanitized filename for 3CX : 3CX
Got latest Firefox version 95.0.2
options {
  packager: {
    appCopyright: 'John Doe',
    appVersion: '3.0.3',
    arch: 'x64',
    asar: false,
    buildVersion: '3.0.3',
    darwinDarkModeSupport: true,
    dir: '/usr/local/Cellar/nativefier/45.0.8/libexec/lib/node_modules/nativefier/app',
    electronVersion: '13.6.3',
    icon: 'AppIcon.png',
    name: '3CX',
    out: '/path/to/app/3cx-mac-client',
    overwrite: true,
    platform: 'darwin',
    portable: false,
    targetUrl: 'https://my.3cx.de/webclient/',
    tmpdir: false,
    upgrade: false,
    upgradeFrom: undefined,
    win32metadata: { ProductName: '3CX', InternalName: '3CX', FileDescription: '3CX' }
  },
  nativefier: {
    accessibilityPrompt: true,
    alwaysOnTop: false,
    backgroundColor: '#363535',
    basicAuthPassword: undefined,
    basicAuthUsername: undefined,
    blockExternalUrls: false,
    bookmarksMenu: undefined,
    bounce: true,
    browserwindowOptions: undefined,
    clearCache: false,
    counter: true,
    crashReporter: undefined,
    disableContextMenu: true,
    disableDevTools: true,
    disableGpu: false,
    diskCacheSize: undefined,
    disableOldBuildWarning: false,
    enableEs3Apis: false,
    fastQuit: false,
    fileDownloadOptions: undefined,
    flashPluginDir: undefined,
    fullScreen: false,
    globalShortcuts: undefined,
    hideWindowFrame: false,
    ignoreCertificate: false,
    ignoreGpuBlacklist: false,
    inject: [ '3cx.css' ],
    insecure: false,
    internalUrls: undefined,
    lang: undefined,
    maximize: false,
    nativefierVersion: '45.0.8',
    processEnvs: undefined,
    proxyRules: undefined,
    showMenuBar: false,
    singleInstance: false,
    titleBarStyle: 'hiddenInset',
    tray: 'false',
    userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7; rv:95.0.2) Gecko/20100101 Firefox/95.0.2',
    userAgentHonest: false,
    verbose: true,
    versionString: undefined,
    width: 400,
    height: 600,
    minWidth: 400,
    minHeight: 600,
    maxWidth: 400,
    maxHeight: 600,
    widevine: false,
    x: undefined,
    y: undefined,
    zoom: 1
  }
}

Preparing Electron app...
Copying electron app from /usr/local/Cellar/nativefier/45.0.8/libexec/lib/node_modules/nativefier/app to /var/folders/6v/2y5rzrp51m52yd7nzvsbvzsmvcbrq3/T/nativefier-16-59-9-app--17786-e6w7E5Bj8bem
Writing app config to /var/folders/6v/2y5rzrp51m52yd7nzvsbvzsmvcbrq3/T/nativefier-16-59-9-app--17786-e6w7E5Bj8bem/nativefier.json {
  accessibilityPrompt: true,
  alwaysOnTop: false,
  appBundleId: undefined,
  appCategoryType: undefined,
  appCopyright: 'John Doe',
  appVersion: '3.0.3',
  arch: 'x64',
  asar: false,
  backgroundColor: '#363535',
  basicAuthPassword: undefined,
  basicAuthUsername: undefined,
  blockExternalUrls: false,
  bounce: true,
  browserwindowOptions: undefined,
  buildDate: 1640015950267,
  buildVersion: '3.0.3',
  clearCache: false,
  counter: true,
  crashReporter: undefined,
  darwinDarkModeSupport: true,
  derefSymlinks: undefined,
  disableContextMenu: true,
  disableDevTools: true,
  disableGpu: false,
  disableOldBuildWarning: false,
  diskCacheSize: undefined,
  download: undefined,
  electronVersionUsed: '13.6.3',
  enableEs3Apis: false,
  executableName: undefined,
  fastQuit: false,
  fileDownloadOptions: undefined,
  flashPluginDir: undefined,
  fullScreen: false,
  globalShortcuts: undefined,
  height: 600,
  helperBundleId: undefined,
  hideWindowFrame: false,
  ignoreCertificate: false,
  ignoreGpuBlacklist: false,
  insecure: false,
  internalUrls: undefined,
  isUpgrade: false,
  junk: undefined,
  lang: undefined,
  maximize: false,
  maxHeight: 600,
  maxWidth: 400,
  minHeight: 600,
  minWidth: 400,
  name: '3CX',
  nativefierVersion: '45.0.8',
  osxNotarize: undefined,
  osxSign: undefined,
  portable: false,
  processEnvs: undefined,
  protocols: undefined,
  proxyRules: undefined,
  prune: undefined,
  quiet: undefined,
  showMenuBar: false,
  singleInstance: false,
  targetUrl: 'https://my.3cx.de/webclient/',
  titleBarStyle: 'hiddenInset',
  tray: 'false',
  usageDescription: undefined,
  userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7; rv:95.0.2) Gecko/20100101 Firefox/95.0.2',
  userAgentHonest: false,
  versionString: undefined,
  width: 400,
  widevine: false,
  win32metadata: { ProductName: '3CX', InternalName: '3CX', FileDescription: '3CX' },
  x: undefined,
  y: undefined,
  zoom: 1,
  oldBuildWarningText: ''
}
Copying 1 files to inject in app.
Copying injection file "3cx.css" to "/var/folders/6v/2y5rzrp51m52yd7nzvsbvzsmvcbrq3/T/nativefier-16-59-9-app--17786-e6w7E5Bj8bem/inject/inject-b8328d.css"
Updating /var/folders/6v/2y5rzrp51m52yd7nzvsbvzsmvcbrq3/T/nativefier-16-59-9-app--17786-e6w7E5Bj8bem/package.json 'name' field to 3cx-nativefier-ed397d

Converting icons...
Converting icon AppIcon.png to /var/folders/6v/2y5rzrp51m52yd7nzvsbvzsmvcbrq3/T/nativefier-16-59-9-iconconv--17786-4AO5jmgcQZ3i/icon.icns. Calling shell command: "/usr/local/Cellar/nativefier/45.0.8/libexec/lib/node_modules/nativefier/icon-scripts/convertToIcns" "AppIcon.png" "/var/folders/6v/2y5rzrp51m52yd7nzvsbvzsmvcbrq3/T/nativefier-16-59-9-iconconv--17786-4AO5jmgcQZ3i/icon.icns"
Conversion succeeded and produced icon at /var/folders/6v/2y5rzrp51m52yd7nzvsbvzsmvcbrq3/T/nativefier-16-59-9-iconconv--17786-4AO5jmgcQZ3i/icon.icns
Copying icons if necessary
No copying necessary on macOS; aborting

Packaging... This will take a few seconds, maybe minutes if the requested Electron isn't cached yet...
  electron-packager Electron Packager 15.4.0
  electron-packager Node v17.2.0
  electron-packager Host Operating system: darwin 21.2.0 (x64) +0ms
  electron-packager Packager Options: {"appCopyright":"John Doe","appVersion":"3.0.3","arch":"x64","asar":false,"buildVersion":"3.0.3","darwinDarkModeSupport":true,"dir":"/var/folders/6v/2y5rzrp51m52yd7nzvsbvzsmvcbrq3/T/nativefier-16-59-9-app--17786-e6w7E5Bj8bem","electronVersion":"13.6.3","icon":"/var/folders/6v/2y5rzrp51m52yd7nzvsbvzsmvcbrq3/T/nativefier-16-59-9-iconconv--17786-4AO5jmgcQZ3i/icon.icns","name":"3CX","out":"/path/to/app/3cx-mac-client","overwrite":true,"platform":"darwin","portable":false,"targetUrl":"https://my.3cx.de/webclient/","tmpdir":false,"upgrade":false,"win32metadata":{"ProductName":"3CX","InternalName":"3CX","FileDescription":"3CX"},"appBundleId":"com.electron.nativefier.3cx-nativefier-ed397d"} +0ms
  electron-packager Target Platforms: darwin +1ms
  electron-packager Target Architectures: x64 +0ms
  electron-packager Application name: 3CX +0ms
  electron-packager Target Electron version: 13.6.3 +0ms
  electron-packager Ignored path regular expressions: [
  '/package-lock\\.json$',
  '/yarn\\.lock$',
  '/\\.git($|/)',
  '/node_modules/\\.bin($|/)',
  '\\.o(bj)?$'
] +0ms
  electron-packager Downloading Electron with options {"platform":"darwin","arch":"x64","version":"13.6.3","artifactName":"electron"} +0ms
Packaging app for platform darwin x64 using electron v13.6.3
  electron-packager Creating /path/to/app/3cx-mac-client/darwin-x64-template +2ms
  electron-packager Extracting /Users/rschlosser/Library/Caches/electron/1257abd35a3e246bfa6bbfdf499ffeaea4cbd1de726c24768a98684fb4cfb3c1/electron-v13.6.3-darwin-x64.zip to /path/to/app/3cx-mac-client/darwin-x64-template +1ms
  electron-packager Initializing app in /path/to/app/3cx-mac-client/3CX-darwin-x64 from /path/to/app/3cx-mac-client/darwin-x64-template template +0ms
  electron-packager Ignored paths based on the out param: [
  '/path/to/app/3cx-mac-client/3CX-darwin-x64',
  '/path/to/app/3cx-mac-client/3CX-darwin-arm64',
  '/path/to/app/3cx-mac-client/3CX-linux-ia32',
  '/path/to/app/3cx-mac-client/3CX-linux-x64',
  '/path/to/app/3cx-mac-client/3CX-linux-armv7l',
  '/path/to/app/3cx-mac-client/3CX-linux-arm64',
  '/path/to/app/3cx-mac-client/3CX-linux-mips64el',
  '/path/to/app/3cx-mac-client/3CX-mas-x64',
  '/path/to/app/3cx-mac-client/3CX-mas-arm64',
  '/path/to/app/3cx-mac-client/3CX-win32-ia32',
  '/path/to/app/3cx-mac-client/3CX-win32-x64',
  '/path/to/app/3cx-mac-client/3CX-win32-arm64'
] +2s
  electron-packager Validating bundled Electron app +0ms
  electron-packager Checking for a package.json file +0ms
  electron-packager Checking for the main entry point file +0ms
  electron-packager Validation complete +3ms
  electron-packager Copying icon "/var/folders/6v/2y5rzrp51m52yd7nzvsbvzsmvcbrq3/T/nativefier-16-59-9-iconconv--17786-4AO5jmgcQZ3i/icon.icns" to app's Resources as "electron.icns" +0ms
  electron-packager Renaming Electron to 3CX in /path/to/app/3cx-mac-client/3CX-darwin-x64/Electron.app/Contents/MacOS +148ms
  electron-packager Renaming Electron Helper to 3CX Helper in /path/to/app/3cx-mac-client/3CX-darwin-x64/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/MacOS +3ms
  electron-packager Renaming Electron Helper (Renderer) to 3CX Helper (Renderer) in /path/to/app/3cx-mac-client/3CX-darwin-x64/Electron.app/Contents/Frameworks/Electron Helper (Renderer).app/Contents/MacOS +0ms
  electron-packager Renaming Electron Helper (Plugin) to 3CX Helper (Plugin) in /path/to/app/3cx-mac-client/3CX-darwin-x64/Electron.app/Contents/Frameworks/Electron Helper (Plugin).app/Contents/MacOS +1ms
  electron-packager Renaming Electron Helper (GPU) to 3CX Helper (GPU) in /path/to/app/3cx-mac-client/3CX-darwin-x64/Electron.app/Contents/Frameworks/Electron Helper (GPU).app/Contents/MacOS +0ms
  electron-packager Renaming Electron Helper.app to 3CX Helper.app in /path/to/app/3cx-mac-client/3CX-darwin-x64/Electron.app/Contents/Frameworks +1ms
  electron-packager Renaming Electron Helper (Renderer).app to 3CX Helper (Renderer).app in /path/to/app/3cx-mac-client/3CX-darwin-x64/Electron.app/Contents/Frameworks +0ms
  electron-packager Renaming Electron Helper (Plugin).app to 3CX Helper (Plugin).app in /path/to/app/3cx-mac-client/3CX-darwin-x64/Electron.app/Contents/Frameworks +1ms
  electron-packager Renaming Electron Helper (GPU).app to 3CX Helper (GPU).app in /path/to/app/3cx-mac-client/3CX-darwin-x64/Electron.app/Contents/Frameworks +0ms

Finalizing build...
App built to /path/to/app/3cx-mac-client/3CX-darwin-x64, move to wherever it makes sense for you and run the app bundle.

Expected behavior

Actual behavior

I tested this on 4 different Macs. Two with Big Sur and two with Monterey. The Big Sur Macs work perfectly and have the excpected behavior listed above.

The other two Monterey Macs do not prompt anything at all. I also tried to reset the Microphone permissions on my mac with tccutil reset Microphone. I also deleted the whole ~/Library/Application Support/com.apple.TCC directory and restarted. Nothing helped.

This happens with every Nativefier created app but does not happen with native apps (like Goggle Chrome) or other Electron based Apps (like Jitsi Meet).

Context

kellertobias commented 2 years ago

This seems to be missing in the compiled app:

electron_1.systemPreferences.askForMediaAccess('microphone')
electron_1.systemPreferences.askForMediaAccess('camera')

maybe add command line arguments to enable these requests (just as it happens with the enableEs3Apis, ignoreCertificate etc.)

kellertobias commented 2 years ago

However it is also missing the request to do screen access (screen sharing) and I couldn't fix that so easily

schloram commented 2 years ago

This bug still persists with Nativefier 46.0.0

pespinel commented 2 years ago

Same issue with Nativefier 46.0.4

lucek8123 commented 2 years ago

I made workaround for that problem. Unfortunately it doesn't work with screen sharing.

  1. Right click on the app that made with nativefire and select "Show Package Contents"
  2. Go to "Contents" folder
  3. Go to "MacOS" folder
  4. Open Automator app
  5. Make new app file.
  6. Add "Run Shell Script"
  7. Drag and drop file that is in previously opened folder to text field in action editor. Right click on file while holding option key and select option “copy … as pathname”. Then paste pathname in text field in Automator.
  8. Save automator app(edit: you can do it to applications folder. When you do it the app normally showing in launchpad).

Now you can change the application icon by right-clicking on the automator application, selecting "About" and dragging the icon to the icon in the upper left corner.

When you run this app it should can prompt for media access.

I hope I helped.

pgrenaud commented 2 years ago

@lucek8123 Isn't your workaround missing some code? You mention a shell script but did not provide any code to add to it.

pgrenaud commented 2 years ago

I'm having a similar problem, but let me know if you would prefer that I open a separate issue.

@schloram I think I'm trying to package the same webapp (internal 3CX endpoint), but I'm having the issue you're having on macOS Big Sur. I'm not getting prompt for any permissions and the microphone is not working. When moving the same nativefier .app on a macOS Catalina machine, I do get prompt for the microphone and camera permissions (macOS system popups).

I also tried using another URL following @ronjouch test case (https://github.com/nativefier/nativefier/issues/1246#issuecomment-869591822) with the following command and I'm getting the exact same results (only getting prompt for microphone permission on macOS Catalina):

nativefier "https://webaudiodemos.appspot.com/AudioRecorder/index.html"

It's hard to tell if this is a nativefier issue or a electron issue. I found two electron issues about the same topic, but they are not describing exactly the issue we're having: https://github.com/electron/electron/issues/31875 https://github.com/electron/electron/issues/29861

Build environment:

Where it works: macOS Catalina (10.15.7)

Where it doesn't work: macOS Big Sur (11.6.3)

lucek8123 commented 2 years ago

@lucek8123 Isn't your workaround missing some code? You mention a shell script but did not provide any code to add to it.

I said:

Drag and drop file that is in previously opened folder to text field in action editor

So you should drag and drop file from finder to automator shell script text field. That should make path to executable file on text field. (you can watch it here)

Only one thing that I didn't say is that you should build your nativefire app with tag --fast-quit because when you open the automator app and when you close it the automator app still running.

My workaround works because it running nativefire app on another, automatomator app that can prompt for media access. That app make the same as opening app from terminal. Terminal can prompt access for camera, microphone, and screen sharing(I tested it with OBS Studio) so that automator script use that. Only screen sharing is unsupported. I think the nativefire apps haven't support for it, because when i tested OBS Studio it support it.

pgrenaud commented 2 years ago

@lucek8123 Ok, wow, that does not make any sens to me, but it does work. Thanks for the video by the way. I just launch the app through my terminal (see below) and I got the permission prompts. But of course, it grants the permissions to the Terminal app, not the nativefier app, so I see why you made an automator app as a "shortcut" to launch the real app.

I did find this answer describing this fix. I didn't have to run the tccutil reset Microphone, only invoke my nativefier app through the terminal.

@schloram Could you try doing this to see if it does prompt for permissions? Open the terminal and run the following command (replace both APPNAME by you application name), assuming your app is installed in the Applications directory:

/Applications/APPNAME.app/Contents/MacOS/APPNAME 

Regardless though, I do not know what does that mean for the source of the issue. The fact that it works in the terminal mean that the permission are actually requested properly by the app. But the fact that it does not work by itself is strange. Maybe it means that another layer of macOS security is interfering, like the fact that the nativefier apps are not signed? If that was the case, it's probably an electron issue, not nativefier issue.

pgrenaud commented 2 years ago

Hey, I have actually found a way to manually add the Microphone permission for the nativefier app! 🎉 But unfortunately, the way to do it is not nice. 😕

Walktrough:

  1. Install this utility: brew install tccutil (https://github.com/jacobsalmela/tccutil)
  2. Open the file $(brew --prefix)/bin/tccutil in a text editor (located at /usr/local/bin/tccutil on Intel mac)
  3. Edit the variable tcc_db (line 32) like this and make sure to replace USERNAME by your macOS username:
    tcc_db =  '/Users/USERNAME/Library/Application Support/com.apple.TCC/TCC.db'
  4. Run the following command to obtain the CFBundleIdentifier of your nativefier app and make sure to replace APPNAME by you application name:
    defaults read /Applications/APPNAME.app/Contents/Info CFBundleIdentifier
  5. Run the following command to grant the Microphone permission to your nativefier app and make sure to replace BUNDLEID by the output of the previous command:
    sudo $(brew --prefix)/bin/tccutil --service kTCCServiceMicrophone --insert "BUNDLEID"
  6. For the Camera permission, repeat step 5 and replace kTCCServiceMicrophone by kTCCServiceCamera
  7. Quit and relaunch your nativefier app
schloram commented 2 years ago

@pgrenaud @lucek8123 Thanks for your input. I appreciate it. But since your solutions are more like hacks I'm hesitant to apply them. I don't want to "bend" my OS to force a behavior the nativefier app should handle out of the box.

To be honest I suspect the bug inside nativefier because I don't have any problems with any native electron app (e.g Jitsi) to access my microphone/camera.

As long as this is not fixed I will use the app in my browser.

schloram commented 2 years ago

@pgrenaud Just a heads up: Seems like 3CX has just released a working Mac OS app now (the last one was crap hence my nativefier approach). So actually no need to use nativefier anymore for 3CX. Just wanted to let you know. :)

pgrenaud commented 2 years ago

@schloram Ha ha! I never said that that my workaround was a viable solution. It is definitely a very hacky workaround. In the end, it's just another demonstration that something is wrong with nativefier with the asking permission process, but that the permissions themselves work fine. There is definitely something that needs to be fixed.

And thanks for the heads up about the macOS app! I just got the update on our system. But I have to say that I am quite disappointed with the totally useless menu bar icon, that is also awfully ugly (it does not respect the macOS design guidelines at all). It is a step in the right direction, but I would hope that they remove that (which probably won't happen anyway).

kyrios commented 2 years ago

Hey, I have actually found a way to manually add the Microphone permission for the nativefier app! 🎉 But unfortunately, the way to do it is not nice. 😕

On which version of macOS could you make this work? On Monterey I'm getting sqlite3.OperationalError: unable to open database file

Checking the tccutil code the problem seems to be that this file actually isn't existing in '/Users//Library/Application Support/com.apple.TCC/TCC.db'. Additionaly the check for existance in tccutil seems to be buggy. So there is no error and tccutil fails in line 130.


        if not os.path.isfile(tcc_db):
            print("TCC Database has not been found.")
            sys.exit(1)
        conn = sqlite3.connect(tcc_db)
        c = conn.cursor()

Did you manually create the file?

Some googleing around I found this presentation (slide 7) where it's explained that Apple removed this possibility due to a hack from Dropbox. https://objectivebythesea.com/v4/talks/OBTS_v4_aGrant.pdf

artakvg777 commented 2 years ago

Any updates on this issue?

thomasbachem commented 1 year ago

This seems to be fixed for me in 50.0.1. I can just launch the nativefied app, and it will properly ask for permissions (in this case for Google Meet). NOTE: I am using --user-agent-honest.

emsawicki commented 1 year ago

@lucek8123 is there a way that you could take a look at my case? I followed the steps you provided, yet my app doesn't launch. I end up with an error that says that directory doesn't exists :/ Zrzut ekranu 2023-05-4 o 21 33 19

lucek8123 commented 1 year ago

@lucek8123 is there a way that you could take a look at my case? I followed the steps you provided, yet my app doesn't launch. I end up with an error that says that directory doesn't exists :/

Zrzut ekranu 2023-05-4 o 21 33 19

I see why this error is. You didn’t provided full pathname. Just instead of of drag and drop, right click on file while holding option key and select option “copy … as pathname”. Then paste it into editor in automator. Example commands in automator: “/Users/Lucek/Desktop/ChatGPT.app/Contents/MacOS/ChatGPT”, “/Applications/Chess.com.app/Contents/MacOS/Chess.com”.

emsawicki commented 1 year ago

@lucek8123 Thanks! I was able to create and run shell script app.

It didn't prompt for camera and microphone access thou, so I'm still stuck :(