Сборка Unity UWP / WSA из командной строки с не тестовым сертификатом - PullRequest
0 голосов
/ 30 мая 2019

У меня проблема с созданием проекта Unity через командную строку с сертификатом, который я получил от Sectigo Limited с подписанием кода.Причина, по которой я пошел на получение сертификата Sectigo Limited вместо получения сертификата в Магазине Windows, заключается в том, что мы планируем, чтобы пользователи загружали приложение напрямую и загружали его, поэтому мы не хотим, чтобы они устанавливали их в режим разработчика дляустановить его, и мы не хотим распространять через Windows Store.Поэтому, когда я получил сертификат от Sectigo Limited, я установил его в качестве сертификата для использования в Unity в настройках издателя.Я ввел пароль, а затем использовал следующую команду для создания проекта.

Unity.exe -quit -batchmode -silent-crashes -serial %UNITY_SERIAL% -username %UNITY_EMAIL% -password "%UNITY_PASSWORD%" -projectPath "sensei-v2" -logFile "%BUILD_BINARIESDIRECTORY%\build.log" -buildTarget WindowsStoreApps -executeMethod BuildSensei.BuildWindowsUWP -outputDirectory %BUILD_BINARIESDIRECTORY%

BuildSensei.BuildWindowsUWP - эта функция на случай, если вам интересно:

PlayerSettings.SplashScreen.showUnityLogo = false;

string[] scenes = { "Assets/MyProject/Scenes/Login.unity", "Assets/MyProject/Scenes/Main.unity" };

string outputDirectory = "C:/Users/PavanJakhu/source/repos/myproject/Builds/UWP/MyProject-2.3.1.0";
if (Directory.Exists(outputDirectory))
{
    Directory.Delete(outputDirectory, true);
}
if (!Directory.Exists(outputDirectory))
{
    Directory.CreateDirectory(outputDirectory);
}

BuildPlayerOptions options = new BuildPlayerOptions()
{
    scenes = scenes,
    locationPathName = outputDirectory,
    target = BuildTarget.WSAPlayer,
    targetGroup = BuildTargetGroup.WSA,
    options = BuildOptions.None
};
var result = BuildPipeline.BuildPlayer(options);

Debug.Log("Build result: " + result.summary.result + "\nTotal time: " + result.summary.totalTime + "\nPlatform: " + result.summary.platform);

Затем я пытаюсь собратьРешение Visual Studio через MSBuild с помощью этой команды:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\msbuild.exe" "C:/Users/PavanJakhu/source/repos/myproject/Builds/UWP/MyProject-2.3.1.0\MyProject\MyProject.sln" /nologo /nr:false /p:AppxBundlePlatforms="x64" /p:AppxPackageDir="C:/Users/PavanJakhu/source/repos/myproject/Builds/UWP/MyProject-2.3.1.0\MyProject\AppxPackages\\" /p:UapAppxPackageBuildMode=SideloadOnly /p:AppxBundle=Never /p:platform="x64" /p:configuration="Master" /p:VisualStudioVersion="16.0"

Я получаю следующие две ошибки:

error APPX0105: Cannot import the key file 'Sensei-Code-Signing-Cert.pfx'. The key file may be password protected. To correct this, try to import the certificate manually into the current user's personal certificate store.
error APPX0107: The certificate specified is not valid for signing. For more information about valid certificates, see http://go.microsoft.com/fwlink/?LinkID=241478.

Если я открою решение и проверим сертификат и нажму «Выбрать сертификат», яувидеть этот диалог.Choose Certificate dialog

Что кажется неверным, поскольку все значения просто "(нет)".Если я нажимаю «Выбрать сертификат», появляется родное диалоговое окно Windows с сертификатами в личном хранилище, и я выбираю сертификат, полученный от Sectigo Limited, а затем создаю его с помощью приведенной выше команды.Он создает файл AppX, и я могу установить его на компьютеры, не находясь в режиме разработчика.

Я попытался установить и переустановить сертификат в своих личных и доверенных хранилищах.Я также попытался использовать тестовый сертификат, сгенерированный в Unity, затем изменить атрибут Publisher в теге Identity в файле манифеста приложения для экспортированного проекта Visual Studio, а затем подписать сгенерированный файл AppX сертификатом Sectigo Limited с помощью SignTool.exe, но я получаюследующая ошибка:

error 0x8007000B: The app manifest publisher name (CN=Arfront Technologies Inc.) must match the subject name of the signing certificate (CN=Arfront Technologies Inc., O=Arfront Technologies Inc., STREET=4141 Yonge Street, STREET=Suite 402, L=Toronto, S=Ontario, PostalCode=M2P2A8, C=CA).

Затем я попытался создать другой самозаверяющий сертификат с тем же именем субъекта, что и сертификат Sectigo Limited, но с той же ошибкой.

Итак, язастрял сейчас и не знаю, как еще сделать.Как мне создать приложение UWP с подписью, чтобы не загружать его в режим разработчика?

...