YehudaKremer / msix

Create Msix installer for flutter windows-build files.
https://pub.dev/packages/msix
MIT License
280 stars 70 forks source link

[HELP] Understand certifcation steps #43

Closed richard457 closed 3 years ago

richard457 commented 3 years ago

I am planing to release my flutter app to the windows store and I understand that I need to certify my app first, when I try to google about this topic I see a lot of misleading information about certification and Also I want to make publishing to windows store part of CI/CD with github actions. please if possible guide me to the right tutorial or anything that can help me understand what I need to do to have all I need from this file of yours

#msix_config:
  #display_name: MyApp
  #publisher_display_name: MyName
  #identity_name: MyCompany.MySuite.MyApp
  #certificate_path: C:/<PathToCertificate>/<MyCertificate.pfx>
  #certificate_password: 1234 (require if using .pfx certificate)
  #publisher: CN=My Company, O=My Company, L=Berlin, S=Berlin, C=DE
richard457 commented 3 years ago

Found this https://sahajrana.medium.com/how-to-generate-a-pfx-certificate-for-flutter-windows-msix-lib-a860cdcebb8 and followed the steps now I am getting this error when I build any help? AppxManifest.xml" as the manifest for the package. MakeAppx : error: Failure at appxFactory->CreateManifestReader(manifestStream, &manifestReader) - 0x80080204 - The specified package format is not valid: The package manifest is not valid. MakeAppx : error: Error info: /*[local-name()="Package" and namespace-uri()="http://schemas.microsoft.com/appx/manifest/foundation/windows10"]/*[local-name()="Identity" and namespace-uri()="http://schemas.microsoft.com/appx/manifest/foundation/windows10"][1]/@Publisher 'subject=C=RW, ST=Some-State, L=Kigali, O=Yegobox Ltd, CN=yegobox.com, emailAddress=yegobox@gmail.com' violates pattern constraint of '(CN|L|O|OU|E|C|S|STREET|T|G|I|SN|DC|SERIALNUMBER|Description|PostalCode|POBox|Phone|X21Address|dnQualifier|(OID\.(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))+))=(([^,+="<>#;])+|".*")(, ((CN|L|O|OU|E|C|S|STREET|T|G|I|SN|DC|SERIALNUMBER|Description|PostalCode|POBox|Phone|X21Address|dnQualifier|(OID\.(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))+))=(([^,+="<>#;])+|".*")))*'. The attribute 'Publisher' with value 'subject=C=RW, ST=Some-State, L=Kigali, O=Yegobox Ltd, CN=yegobox.com, emailAddress=yegobox@gmail.com' failed to parse. Cleaning up output file "\\?\E:\demos\flipper-new\flipper\build\windows\runner\Release\flipper.msix". MakeAppx : error: Failure at (CreatePackage( overwrite, hashAlgorithm, fileList, outputPath, manifestStream.Get(), forceCompressionNone, performanceOptions, encryptPackage, encryptionOptions, cgmPath, mainPackagePathForResourceExemption, makepriExeFullPath)) - 0x80080204 - The specified package format is not valid: The package manifest is not valid. MakeAppx : error: Package creation failed. MakeAppx : error: 0x80080204 - The specified package format is not valid: The package manifest is not valid.

YehudaKremer commented 3 years ago

Hello Richard

If you done testing your app and you want to publish it to the windows store, you don't need sign it

but for testing or local publish, you have to manually sign it with the build in TEST certificate or with your own certificate (like you trying to do)

try to remove the subject= part from subject=C=RW, ST=Some-State, L=Kigali, O=Yegobox Ltd, CN=yegobox.com, emailAddress=yegobox@gmail.com and try again, please update if you its still don't work.

richard457 commented 3 years ago

Now when following the above advise I get new error ERROR: PRI191: 0x80004005 - Appx manifest not found or is invalid. Please ensure well-formed manifest file is present. Or specify an index name with /in switch. Required white space was missing.

YehudaKremer commented 3 years ago

hey

this is the full error? no more details?

richard457 commented 3 years ago

yes the full error is this `Microsoft (R) MakePRI Tool Copyright (C) 2013 Microsoft. All rights reserved.

Usage:

MakePri.exe new /pr <project root> /cf <config file> [options]

Example:

MakePri.exe new /pr C:\MyApp\src\ /cf C:\MyApp\priconfig.xml /mn
C:\MyApp\AppXManifest.xml /of C:\MyApp\src\resources.pri /o

Description:

Creates a PRI file at [outputfile] by indexing all files in the
[projectroot]and its subdirectories as directed by the [configxml]. The     
index will be assigned [indexname] to reference resources in the application

Required Parameters:

/ProjectRoot(pr)  : <FOLDERPATH> Root location of project files
/ConfigXml(cf)    : <FILEPATH> Configuration file location. Use
                    'Makepri.exe createconfig' command to generate one

Options:

/OutputFile(of)   : <FILEPATH> Output location of PRI file, default is
                    [current directory]\resources.pri
/Manifest(mn)     : <FILEPATH> Location of the application or component's
                    manifest. This parameter is ignored if [indexname]
                    is given. Default is [projectroot]\AppXManifest.xml
/IndexName(in)    : <STRING> Name for the generated index of resources.
                    Typically matches the AppX package name, class library
                    simple name, etc. May be supplied via the
                    [manifest] parameter.
                    If IndexName is not specified and an AppX manifest
                    file is not present, the default name 'Application'
                    will be used.
/VersionMajor(vma): <INTEGER> [Deprecated] Major version number for
                    index, default is 1
/IndexLog(il)     : <FILEPATH> XML Log of indexed resources, no file
                    generated by default
/AutoMerge(am)    : This flag is not recommended for normal use with AppX
                    packages. It causes Makepri.exe to set the auto
                    merge flag within the PRI file. Default is not set.
/ReverseMap(rm)   : Generate a reverse mapping section in the PRI file
                    which can be used for debugging purposes.
/MappingFile(mf)  : <MAPPINGFILETYPE> Generate a mapping file in the given
                    file format.
/SchemaFile(sf)   : <FILEPATH> Output location of XML resource schema
                    description.
/IndexOptions(io) : <OPTIONS> Options to provide detailed control over
                    behavior of resource indexers.
/Overwrite(o)     : Overwrite an existing output file of the same name
                    without prompting
/Verbose(v)       : Causes verbose messages to be output to the console
/Help(h, ?)       : Display the usage help text
/ExtensionDll(ex) : <FILEPATH> Location of the MRT environment extension
                    DLL. This DLL must be signed by a Microsoft-issued
                    certificate. Default is an empty path (no DLL
                    will be used).

FOLDERPATH       - is a valid path to a folder
FILEPATH         - is a path to a file, either relative to the current
                   directory or absolute`
YehudaKremer commented 3 years ago

Hello i publish new version (2.4.1) that automatically sign the .msix file for you, also update the documentation.