It seems that I cannot validate in Xcode due this error:
The product archive is invalid. The Info.plist must contain a LSApplicationCategoryType key, whose value is the UTI for a valid category. For more details, see "Submitting your Mac apps to the App Store".
I tried adding the key along with one of the suggested LSApplicationCategoryType values but unfortunately it still does not build.
As for the command-line Go app... it still gives the same error as well, despite having the Bundle ID matching what is in the app's configuration within App Store Connect (also tried with and without LSApplicationCategoryType).
I think I shall put this one on the back burner for a while. I am happy that I can notarize a non-Swift app via the cmd-line and will leave it at that. After going through this process I have actually lost interest in working with the Apple store... which is probably exactly what Apple wants? Anyways, thank you for the assistance.
Post
Replies
Boosts
Views
Activity
Okay I figured out the xcode issue. While I had the the correct bundle ID in the UI, the incorrect bundle ID was listed under the app's General tab.
Now Xcode is reporting 2 errors... an icon error (which is okay as I was just building the default app). Then there is also this error:
App Store Connect Operation Error
The product archive is invalid. The Info.plist must contain a LSApplicationCategoryType key, whose value is the UTI for a valid category. For more details, see "Submitting your Mac apps to the App Store".
I am going to go back to the cmd line to see if I can validate my original app now.
I might also try adding LSApplicationCategoryType to my Info.plist as well due to that Xcode suggestion.
EDIT: still same error unfortunately when validating via cmd line
Hi Quinn:
OK, let’s change tack a little:
Use Xcode to create a dummy app that the same name and same bundle ID as your main app. You’re not going to ship this, it’s just for testing.
Build an archive from that (Product > Archive).
Try validating that from the Xcode Organizer (Window > Organizer > your archive > Validate App).
Does that work?
So after trying your recommended task, I have some interesting results. I tried validating my app in Xcode, and got this:
App Store Connect Operation Error
No suitable application records were found. Verify your bundle identifier ‘com.myname.evilpoopemoji’ is correct.
Of course myname is my actual name. And this bundle identifier definitely exists in my account.
And I get that error regardless of whether or not I "Distribute" or "Validate" within xcode.
btw thanks again for helping me trouble shoot this...
Thanks for the clarification:
For Mac App Store distribution, sign the code with 3rd Party Mac Developer Application (or the new-style Apple Distribution) and the installer with 3rd Party Mac Developer Installer, and then don’t notarise but validate. Unfortunatelly the error persists... hmmmm
Just to clarify this:
I also tried signing in the above productbuild command instead of using productsign, but ended with same result I had also tried the below command (removing need for productsign as it creates the .pkg and signs it) as I was unsure if temporarily naming the package to epe.pkg was causing an issue:
productbuild --component evilpoopemoji.app /Applications --sign "3rd Party Mac Developer Installer: My Name (ID NUMBER)"	evilpoopemoji.pkg --product evilpoopemoji.app/Contents/Info.plist
Hi quinn the eskimo, here's the actual project details... btw I don't think I'll be uploading this to the store, but I wish to figure it out for future apps.
evilpoopemoji.app
└── Contents
		├── Info.plist
		├── MacOS
		│ └── evilpoopemoji
		├── Resources
		│ ├── README
		│ └── icon.icns
		└── _CodeSignature
				└── CodeResources
Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>evilpoopemoji</string>
<key>CFBundleExecutable</key>
<string>evilpoopemoji</string>
<key>CFBundleIdentifier</key>
<string>com.myname.evilpoopemoji</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CFBundleGetInfoString</key>
<string>evilpoopemoji by rootVIII</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleIconFile</key>
<string>icon.icns</string>
</dict>
</plist>
shell commands that I am using:
codesign -f -s	"Developer ID Application: My Name (ID NUMBER)" evilpoopemoji.app	--options=runtime --deep
productbuild --component evilpoopemoji.app /Applications epe.pkg
productsign --sign "3rd Party Mac Developer Installer: My Name (ID NUMBER)" --keychain ~/Library/Keychains/login.keychain	epe.pkg evilpoopemoji.pkg
xcrun altool --validate-app -f evilpoopemoji.pkg -u <my email>	-p <my one-time password> -t osx --output-format xml
I also tried signing in the above productbuild command instead of using productsign, but ended with same result
As mentioned before... If I sign with the package/installer with 'Developer ID Installer', I am able to notarize/staple the project without issues. The issue only happens when validating after using the '3rd Party Mac Developer Installer'.
Here is the project: https://github.com/rootVIII/evilpoopemoji
Hmmm unfortunately the same error persists. Here is my current Info.plist (I moved the README as suggested too):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>myapp</string>
<key>CFBundleExecutable</key>
<string>myapp.app</string>
<key>CFBundleIdentifier</key>
<string>name.myapp</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CFBundleGetInfoString</key>
<string>myapp by my name</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleIconFile</key>
<string>icon.icns</string>
</dict>
</plist>
Also as a side note... the CFBundleIdentifier is taken from my Identifiers found in Certificates, Identifiers & Profiles
Thanks Quinn I'll give that a shot momentarily!