none
Как скомпилировать только на PC? RRS feed

  • Вопрос

  • Здравствуйте. Хочу, чтобы моё приложение опубликовалось только на PC (т.к. не поддерживается на мобильных устройствах), но во время публикации (сертификации уже не стор) она всё-равно проходит проверку на мобильных устройствах (поэтому не проходит), а мне надо, чтобы только на ПК проверили.
    16 июня 2016 г. 6:45

Ответы

  • Приложения не зря называются универсальные, так как они должны работать на всех платформах. Галочка в магазине не влияет на сертификацию, а лишь на отображение для устройств.

    Теперь вам остается только найти кусок кода который валит вашу программу. Дам один из вредных советов. Спрячьте временно свой код комментариями, если не хотите последовать моему прошлому совету и завернуть всё try catch.

     try
     {
       //весь ваш код в каждом обработчике
       ...
     }
     catch { }
    После того как пройдете сертификацию снимайте комментарии пока не найдете камень преткновения. Учтите так делать не правильно, но если других вариантов на примете нет, то стоит хотя бы так решить проблему.
    16 июня 2016 г. 9:43
  • Ну так в C# сделайте все, что нужно, а потом транслируйте в плюсы.

    А вообще в этом коде есть участок, который проверяет наличие API доступных только на телефоне. Может если его убрать и проблема решится.

    • if (Windows::Foundation::Metadata::ApiInformation::IsTypePresent("Windows.UI.ViewManagement.StatusBar"))
    •    {
    •            StatusBar::GetForCurrentView()->HideAsync();
    •    }
    •  

     


    VB.Net - WPF, UWP

    16 июня 2016 г. 14:51

Все ответы

  • Приложения не зря называются универсальные, так как они должны работать на всех платформах. Галочка в магазине не влияет на сертификацию, а лишь на отображение для устройств.

    Теперь вам остается только найти кусок кода который валит вашу программу. Дам один из вредных советов. Спрячьте временно свой код комментариями, если не хотите последовать моему прошлому совету и завернуть всё try catch.

     try
     {
       //весь ваш код в каждом обработчике
       ...
     }
     catch { }
    После того как пройдете сертификацию снимайте комментарии пока не найдете камень преткновения. Учтите так делать не правильно, но если других вариантов на примете нет, то стоит хотя бы так решить проблему.
    16 июня 2016 г. 9:43
  • Пишите приложение на 8.1 только для ПК. Заодно и расширите аудиторию.

    VB.Net - WPF, UWP

    16 июня 2016 г. 9:49
  • Моё приложение транслировалось с C#(Unity) в C++, но С++ я почти не знаю

    Подскажите, как мне обернуть в try catch?:

    int CALLBACK wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
    {
    	RoInitializeWrapper roInit;
    	Windows::ApplicationModel::Core::CoreApplication::Run(ref new Infinite_Universe::App());
    	return 0;
    }

    или возможно тут необходимо:

    #include "pch.h"
    #include "App.h"
    
    using namespace Infinite_Universe;
    using namespace Platform;
    using namespace UnityPlayer;
    using namespace Windows::ApplicationModel::Activation;
    using namespace Windows::ApplicationModel::Core;
    using namespace Windows::Foundation;
    using namespace Windows::UI::Core;
    using namespace Windows::UI::ViewManagement;
    
    void App::Initialize(CoreApplicationView^ applicationView)
    {
    	m_AppCallbacks = ref new AppCallbacks();
    	m_AppCallbacks->SetCoreApplicationViewEvents(applicationView);
    	applicationView->Activated += ref new TypedEventHandler<CoreApplicationView ^, IActivatedEventArgs^>(this, &App::OnActivated);
    }
    
    void App::SetWindow(CoreWindow^ window)
    {
    	m_CoreWindow = window;
    
    	if (Windows::Foundation::Metadata::ApiInformation::IsTypePresent("Windows.UI.ViewManagement.StatusBar"))
    	{
    		StatusBar::GetForCurrentView()->HideAsync();
    	}
    
    	m_AppCallbacks->SetCoreWindowEvents(window);
    	m_AppCallbacks->InitializeD3DWindow();
    }
    
    void App::Load(String^ entryPoint)
    {
    }
    
    void App::Run()
    {
    		m_AppCallbacks->Run();
    }
    
    void App::Uninitialize()
    {
    	m_AppCallbacks = nullptr;
    }
    
    IFrameworkView^ App::CreateView()
    {
    	return this;
    }
    
    void App::OnActivated(CoreApplicationView^ sender, IActivatedEventArgs^ args)
    {
    	m_CoreWindow->Activate();
    }


    • Изменено glebov21 16 июня 2016 г. 14:27
    16 июня 2016 г. 14:17
  • Ну так в C# сделайте все, что нужно, а потом транслируйте в плюсы.

    А вообще в этом коде есть участок, который проверяет наличие API доступных только на телефоне. Может если его убрать и проблема решится.

    • if (Windows::Foundation::Metadata::ApiInformation::IsTypePresent("Windows.UI.ViewManagement.StatusBar"))
    •    {
    •            StatusBar::GetForCurrentView()->HideAsync();
    •    }
    •  

     


    VB.Net - WPF, UWP

    16 июня 2016 г. 14:51
  • как будет возможность(скорее всего в понедельник) попробую:

    - скомпилировать как 8.1 вместо universe

    - убрать указанный кусок кода (попробовать)

    Но в C# я не могу обернуть всё (точку входа), т.к. она в юнитовской библиотеке. В моём распоряжении только скрипты которые накидываются на 3d объекты.

    17 июня 2016 г. 6:16
  • - скомпилировать как 8.1 вместо universe

    Я думаю это самый простой и оптимальный вариант

    VB.Net - WPF, UWP

    17 июня 2016 г. 6:28