2017-05-09 3 views
0

MakeAppX를 사용하여 Win32 응용 프로그램을 UWP로 변환 했으므로 실행되지 않습니다. 시작 메뉴의 아이콘을 클릭하면 문자 그대로 커서에 바쁜 아이콘이 잠깐 나타납니다. 변환 된 UWP ... 아무 일도 일어나지 않습니다.

나는 ++ 메모장과 같은 과정을 완료하고 모든 그것은 DLL을 그리고 그

내 질문이 있습니다 (다만 EXE 변경, 동일한 매니페스트 파일을 사용하여) 잘 작동 :

  1. 가 어디 UWP를 수행을/임시 파일 등을 만드는 파일을 저장 하시겠습니까? 실행 파일을 실행하고 그 옆에 파일을 생성하면 UWP를 실행할 때 그 위치는 어디입니까?
  2. AppxManifest에서 해당 위치를 설정할 수 있습니까?
  3. 제대로 실행되었는지 여부는 알 수 있습니까?

편집 :

이 파일 권한 문제가 될 수 있을까요? 내 응용 프로그램이 'C : \ MyFolder'에 쓰기를해야합니다. &은 시작할 때 실행 파일 옆에 파일로드가있는 폴더를 생성합니다.

좀 더 자세히 살펴보면 this blog에 대해 알아보고 전환 준비에 대해 설명합니다. 위의 파일 액세스가 아마도 다음과 같은 행동을한다고 생각합니다.

  • 앱이 앱의 설치 디렉토리에 씁니다. 예를 들어, 귀하의 응용 프로그램은 귀하의 exe와 같은 디렉토리에 넣어 로그 파일에 씁니다. 이 기능은 지원되지 않으므로 로컬 앱 데이터 저장소와 같은 다른 위치를 찾아야합니다.

이것은 꽤 일시적인 문제인 것처럼 보입니다. 그 가정에서 맞습니까?

답변

0

나는이 간략한 것을 지키겠다. 나는 곧장 앞으로 나아갈 것이다.

win32 응용 프로그램을 UWP로 이식 할 때 발견 된 주요 문제는 응용 프로그램이 실행되지 않는 권한 때문이었습니다. 이제 왜 이런 일이 생길까요? 우리는 1 분 안에 그것에 도달 할 것입니다.

UWP 앱이란 무엇입니까? 만약 모든 것이 흑백이어야하고 멋진 것들을 모두 제거한다면 그들은 모두 exe's입니다. 응용 프로그램에서 실행되도록 설계, 설계, 설치, 표시 등 sandbox. Windows 10 컴퓨터에서을 실행하고 "C :/program files"로 이동하여 "숨김 폴더 표시"를 사용하도록 설정하면 "Windows Apps"라는 폴더가 표시되고 권한이 없습니다. 그 폴더에 대한 관리자가되는 방법에 대한 빠른 Google 검색을 수행하거나 폴더에 액세스 할 수있는 액세스 권한을 추가하십시오. 표시되는 내용 사전 설치된 모든 Windows 응용 프로그램과 자산을 볼 수 있습니다 일부 exe 파일이있는 라이브러리를 실행하고 실행하면 "응용 프로그램 환경에서만 프로그램을 실행할 수 있습니다"라는 오류 메시지가 표시됩니다.이 내용을 이해하는 데 이상적이지는 않지만 검정색 및 흰색 이것이 내가이 문제에 직면했을 때 나를 설명 해주는 것입니다.이제 우리가 알아 낸의 흑백 버전을 가지고

,의는 질문을 살펴 보자 다음 UWP 응용 프로그램에서

  • 를, 스토리지 (로컬, 로밍) 로밍의 개념이 그되어있다 컴퓨터의 Microsoft 계정에 링크되어 다른 Windows 장치에 저장된 데이터를 제공합니다. 예 : 모바일 에지 브라우저 및 PC 에지 브라우저의 검색 기록이 동기화됩니다. 비밀번호의 경우 비밀번호가 저장됩니다. 이렇게하면 모든 인증 기반 데이터가 유지되므로 사용자는 매번 그리고 모든 장치에 로그인 할 필요가 없습니다. 이제 로컬 스토리지는 직렬화 된 형식 컨테이너 기반 스토리지 시스템으로, 앱용 작은 데이터를 저장할 수 있습니다. 예 : 앱에서 처음으로 부울을 시작하거나 음악 볼륨 환경 설정 또는 이와 유사한 항목.

  • 그러면 우리는 데이터를 파일에 기록합니다. 이 문제는? 기존 wpf 앱과 달리 텍스트 파일은 패키지에 있으므로 앱이 닫힐 때 파일 작업을 사용하여 파일을 가져올 수 없습니다. 데이터를 공유하는 경우에만 이메일로 보내거나 onedrive에 업로드 할 수 있습니다.

  • 템플리트 (템플릿 10 프레임 워크에서만 사용됨)라고하는 저장 장치에 대한 또 다른 구현이 있습니다. 이는 응용 프로그램이 실행되는 동안 일부 데이터를 유지/저장하는 데 도움이됩니다. 1 페이지에 몇 가지 데이터가 필요하고 7 페이지에 필요한 경우에는 각 페이지에 데이터를 전달할 필요가 없습니다. 아주 편리합니다.

  • 또한 데이터베이스를 가지고 있기 때문에 SQLite는 많은 양의 데이터를 처리하는 데 환상적인 작업을 수행합니다.

이것은 저장 옵션에 관한 내용입니다. 경험 년 동안이 모든 것이 모든 경우를 다루기에 충분했습니다. GitHub에서 Template 10 오픈 소스의 스토리지 서비스를 확인하십시오. 훌륭한 작업입니다.

이제 매니페스트에 대해 이야기하면 애플리케이션 매니페스트가 필요한 파일이고 앱에서 누락 된 내용이 있으면 앱이 게시되거나 일부 경우에는 기능이 제한됩니다. 예를 들어 기기의 마이크를 사용해야한다고 선언하지 않았습니다. 이제는 음성 인식을 시도 할 때 사용자가 액세스를 거부했지만 OS가 액세스를 거부 할 때 실제로 권한 요청 프롬프트가 생성되지 않는다는 질문에 당신을 몰아 넣는 액세스 거부 오류가 발생합니다 앱이 마이크 사용의 필요성을 알리지 않았으므로 마이크에 연결합니다. 그것은 단지 예일뿐입니다. 누락 된 시각적 자산으로 인해 앱이 인증을받을 수 없습니다.

응용 프로그램이 완벽하게 실행되고 있는지를 알 수있는 유일한 방법은 작업 관리자입니다. exe를 올바르게 진단하면 응용 프로그램에서 사용할 수있는 처리 및 리소스의 종류를 알 수 있습니다. 그것이 내가 확인하는 방법이다. 이제는 더 나은 방법을 찾지 못했습니다. 그러나 이것은 나를 위해 일합니다.

마지막으로 수정에 대한 내용입니다. Windows 응용 프로그램은 파일 시스템에 액세스 할 수 없습니다. 따라서 C :/SomeFolder 또는 응용 프로그램 샌드 박스 외부에있는 파일에는 액세스 할 수 없습니다. 당신이 접근 할 수있는 유일한 것은 당신의 패키지와 그것이 내부에 보유하고있는 것입니다. Uri 경로를 ms:appx-//으로 사용하고 "Assets/fonts/myFont.TTF"와 같은 경로를 사용하면 응용 프로그램 컨텍스트에서 패키지 또는 응용 프로그램 샌드 박스 내의 파일에 액세스 할 수 있습니다. 파일 시스템에 액세스 할 수있는 유일한 방법은 빠른 창 대화 상자를 열고 파일을 첨부 할 수있는 FilePicker을 사용하는 것입니다. 원할 경우 캐스팅하고 읽을 수있는 StorageFile 클래스 객체를 반환합니다. 그러나 FilePixker이없는 상태에서 앱은 파일 시스템에 액세스 할 수 없으므로 호스트 시스템에있는 파일을 사용할 수 없습니다.

앱을 사용하는 동안 앱이 다른 앱에 저장된 데이터에 액세스 할 수 없음은 물론입니다. 저장된 데이터는 데이터를 저장 한 앱 전용입니다. 하지만 앱 간 통신이라고하는 특정 앱에 Uri을 사용하여 다른 앱과 통신 할 수 있으며, 두 앱간에 데이터를 전송하는 방법에 대한 Google의 빠른 검색을 통해 첫 출발을 확보 할 수 있습니다. 또한, 창문 10 주년 업데이트 AppServices이 허용되면 몇 가지 라이브러리와 진입 점 및 출입구를 노출함으로써 다른 앱의 데이터에 액세스 할 수 있습니다. 질문의 범위가 아니기 때문에이 세그먼트를 통해 돌진했으나 댓글에 질문하거나 질문 할 필요가 있으면 온라인으로 읽어보십시오.

Nai 무엇을 권하고 싶습니다. 실행 시간 파일을 가져오고 리소스를 수집 할 때 파일 시스템에 더 많은 액세스 권한을 가질 수 있기 때문에 WPF가 더 적절한 솔루션이라고 할 수 있습니다. 더 낮은 기본 기술에서 당신을 지켜주는 동안 당신이 당신의 app (심지어 메트로 UI 덩어리가 가능합니다)로하고 싶어 할지도 모르는 wpf로해라. 그렇지만 파일 시스템에 접근하고 상호 작용이 필요하다면 나는 wpf를 고수 할 것을 제안 할 것이다.

하지만 앱을 시작할 때마다 수동으로 파일을 추가하거나 (슬픈 듯이 들리거나) 온라인으로 파일을 가져올 수 있으며 em을 사용하고 온라인으로 업데이트 된 파일을 업로드 할 수 있습니다 앱 실행에서 선택) UWP를 사용하는 것이 좋습니다.

UWP 플랫폼에서 뛰어 들면서 Template 10을 사용하는 것은 매우 정교한 설정 서비스, 파일 서비스, 암호 저장실과 함께 많은 보일러 플레이트 코드와 함께 상자가 준비되어 있기 때문에 고려하십시오.

나는 귀하의 질문에 답변 해 주셨으며, 아래에있는 의견 섹션을 자유롭게 사용해보십시오.

서식을 사용하여 죄송합니다. 모바일 장치를 사용하여 답변드립니다. 나중에 사무실에있을 때 편집하겠습니다.

1

응용 프로그램이 설치 디렉토리에 쓰는 경우 준비 가이드에서 설명한대로 로컬 응용 프로그램 데이터 폴더에 기록하도록 해당 코드를 변경해야합니다.

앱 설치 스택이 앱의 원활한 차등 업데이트 및 제거를 원활하게 수행 할 수 있도록하려면 설치 디렉토리에 대한 쓰기 작업이 허용되지 않습니다.

Btw, 앱 실행 실패를 통해 디버깅하려면 Visual Studio에서 다음을 수행 할 수 있습니다. 디버그 -> 기타 디버그 타겟 -> 설치된 앱 패키지 디버그 -> 설치된 앱 목록에서 앱을 선택합니다.

+0

감사합니다. 시작 프로세스를 디버그하여 멈추는 위치를 확인해야한다고 생각합니다. – GPPK