2

Microsoft Desktop App Converter (AKA Desktop Bridge) を使用しようとしていますが、発行者名にコンマ、スペース、ピリオドが含まれています。

例えば。CN="Acme, Inc."

これは動作しません:

DesktopAppConverter.exe -Installer .\Installer.msi -Destination AppxFolder -PackageName "AcmeApp" -Publisher "CN=Acme, Inc." -Version 1.0.0.0 -MakeAppx

次のような引用符をエスケープするさまざまな方法を試しました。

-Publisher "CN=\`"Acme`, Inc.\`""

結果:

引数 'Inc.' を受け入れる位置パラメーターが見つかりません。

これ:

-Publisher 'CN="Acme, Inc."'

結果:

無効な入力のため、Appx マニフェストの検証に失敗しました:「発行者」に値「CN=Acme, Inc.」を割り当てることはできません。元のエラー: '"1" 個の引数を指定して "SetPackageIdentityPublisher" を呼び出す例外: "スキーマに対する AppxManifest.xml の検証がエラーで失敗しました: XML でエラーが見つかりました (0): 'Publisher' 属性が無効です - 値「CN=アクメ株式会社」そのデータ型 'http://schemas.microsoft.com/appx/manifest/types:ST_Publisher_2010_v2' によると無効です - パターン制約が失敗しました。

これ:

-Publisher 'CN="Acme\`, Inc."'

結果:

無効な入力のため、Appx マニフェストの検証に失敗しました:「発行者」に値「CN=Acme`, Inc.」を割り当てることはできません。元のエラー: '"1" 個の引数を指定して "SetPackageIdentityPublisher" を呼び出す例外: "スキーマに対する AppxManifest.xml の検証がエラーで失敗しました:
XML (0) でエラーが見つかりました: 'Publisher' 属性が無効です - 値「CN=アクメ株式会社」そのデータ型 'http://schemas.microsoft.com/appx/manifest/types:ST_Publisher_2010_v2' によると無効です - パターン制約が失敗しました。

これ:

-Publisher "CN=Acme, Inc."

結果:

無効な入力のため、Appx マニフェストの検証に失敗しました:「発行者」に値「CN=Acme, Inc.」を割り当てることはできません。元のエラー: '"1" 個の引数を指定して "SetPackageIdentityPublisher" を呼び出す例外: "スキーマに対する AppxManifest.xml の検証がエラーで失敗しました: XML (0) でエラーが見つかりました: 'Publisher' 属性が無効です - 値「CN=アクメ株式会社」' http://schemas.microsoft.com/appx/manifest/types:ST_Publisher_2010_v2 ' - パターン制約に失敗しました。

これ:

 -Publisher "CN='Acme\, Inc.'"

結果:

引数 'System.Object[]' を受け入れる位置パラメーターが見つかりません。

これ:

-Publisher "CN=Acme\, Inc."

結果:

無効な入力のため、Appx マニフェストの検証に失敗しました: 'Publisher' に値 'CN=Acme\, Inc.' を割り当てることはできません。元のエラー: '"1" 個の引数を指定して "SetPackageIdentityPublisher" を呼び出す例外: "スキーマに対する AppxManifest.xml の検証がエラーで失敗しました: XML (0) でエラーが見つかりました: 'Publisher' 属性が無効です - 値「CN=Acme\, Inc.」' http://schemas.microsoft.com/appx/manifest/types:ST_Publisher_2010_v2 ' - パターン制約に失敗しました。

発行者名を完全に設定する必要があるため、非常に面倒です。そうしないと、コード署名証明書の発行者名と一致しないため、後で署名が機能しなくなります。

これを行う正しい方法は何ですか?

4

4 に答える 4

0

二重引用符に加えてコンマをエスケープする必要があります。また、enire 共通名を二重引用符ではなく単一引用符で囲むと、2 回エスケープする必要がなくなります (PowerShellActive Directory の場合)。

... -Publisher 'CN=\"Acme\, Inc.\"' ...

識別名のエスケープ文字の詳細については、Richard L. Mueller によるこの記事を参照してください。

于 2016-09-15T20:09:42.563 に答える
0

appxmanifest に関する Microsoft のドキュメントによると、発行元名が引用符 (") で囲まれている限り、問題なく発行元名にコンマを含めることができます。

https://msdn.microsoft.com/en-us/library/windows/apps/br211441.aspx

したがって、本当の問題は、引用符付きの発行者名を AppConverter に渡す方法です。

解決策は、次のように発行者を渡すときに " with \"\" を表すことのようです:

-Publisher 'CN=\"\"Company, Name\"\"'

完全なコマンドは次のとおりです。

DesktopAppConverter.exe -Installer myInstaller.exe -InstallerArguments "/S" -Destination . -PackageName "MyApp" -Publisher 'CN=\"\"Company, Name\"\"' -Version 0.0.0.1 -MakeAppx

ただし、DesktopAppConverter にはバグがあるようです。私が得る結果はこれです:

CN="会社、名前

2 番目の " が結果にありません。DesktopAppConverter が 2 番目の \"\" 特殊文字を認識できない理由はわかりませんが、そのため、残念ながらここで立ち往生しています。

更新:解決策が見つかりました。試行錯誤の結果、二重引用符 "" を追加すると、2 番目の引用符の認識に役立つことがわかりました。したがって、次のように動作します。

-Publisher 'CN=\"\"Company, Name""\"\"'
于 2016-10-06T05:01:13.923 に答える
0

Desktop App Convert (DAC) のパブリッシャー引数に「コンマ」を含めることはサポートされていません。これは、AppxManifest.xml file(DAC によって生成された APPX に含まれる) の Identity ノードの Publisher 要素を設定するために、この値が使用されるためです。

サンプルAppxManifest.xmlファイルでのテストは次のとおりです。

<Identity Version="0.0.0.2" Publisher="CN=Awesome,Apps-Inc" ProcessorArchitecture="x86" Name="MyNotesFW"/>

APPX ファイルを作成しようとすると、次のエラーが発生します。

MakeAppx : error: Error info: error C00CE169: App manifest validation error: The app manifest must be valid as per schema: Line 3, Column 58, Reason: 'CN=Awesome,Apps-Inc' 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 'CN=Awesome,Apps-Inc' failed to parse.**

于 2017-02-15T22:55:26.013 に答える