私はこの短い説明を続けていきます。私はまっすぐ進むようにしようと思います。最初のものが最初です。
私がwin32アプリケーションをUWPに移植する作業をしていたとき、私が見つけた主な問題は、アプリケーションが実行されないためのアクセス許可でした。なぜこれが起こるのですか?私たちはちょうどそれでそれに入るでしょう。
UWPアプリとは何ですか? もし全てが黒と白でなければならないし、それらからすべての素晴らしいものを取り除くなら、それらはすべてexe's
です。 アプリケーションで実行するように設計、設計、インストール、表示されます。 これを試してみてください:windows10マシンでを実行し、「C:/ program files」に移動して「隠しフォルダを表示」を有効にしておくと、「Windows Apps」という名前のフォルダが表示され、あなたはそのフォルダの管理者になる方法を簡単にGoogle検索したり、自分自身をフォルダにアクセスしてアクセスするようにしたりすることができます。表示される内容プレインストールされたすべてのWindowsアプリとそのアセットが表示されますいくつかのexeを持つライブラリを試してみてください。それを試して実行すると、 "アプリケーション環境でのみプログラムを実行できます"というエラーが表示されます。これは理解するのに理想的ではないかもしれませんが、ホワイトこれは、私が問題に直面していたときに私を説明したものです。今、私たちはそれを考え出したの黒と白のバージョンを持っていることを
、の質問を見てみましょう:UWPアプリケーションで
を、ストレージ(ローカル、ローミング)ローミングの概念が存在し、それらされていますマシンのMicrosoftアカウントにリンクされ、他のWindowsデバイスに保存されたデータを提供します。たとえば、モバイルエッジブラウザとPCエッジブラウザの検索履歴が同期されます。パスワードの場合、私たちはパスワードボールトを持っています。これにより、すべての認証ベースのデータが保持されるため、ユーザーは毎回、またすべてのデバイスにログインする必要はありません。今はローカルストレージですが、これはシリアライズされたフォーマットコンテナベースのストレージシステムで、アプリケーション用の小さなデータを保存できます。例:アプリ初回起動ブール、音楽ボリュームの設定など。
次に、データをファイルに書き込む方法があります。これの問題?伝統的なwpfアプリケーションとは異なり、テキストファイルはパッケージに含まれているため、アプリケーションが終了したときにファイル操作を使用してファイルを取得することはできません。データを共有する場合にのみ、電子メールまたはonedriveにアップロードすることができます。
Tempという名前のストレージの別の実装があります(テンプレート10のフレームワークのみ)。これは、アプリケーションの実行中にいくつかのデータを保持/保存するのに役立ちます。 1ページ目にデータが必要な場合や7ページ目にデータを必要とする場合は、各ページにデータを渡す必要はありません。非常に便利です。
あなたもデータベースを持っていると、SQLiteは大量のデータを扱う際に素晴らしい仕事をします。
これは私の長年の経験のなかで、すべてのケースをカバーするのに十分なストレージオプションに関するものです。 GitHubのTemplate 10オープンソースのストレージサービスをチェックしてください。素晴らしい仕事です。
アプリケーションマニフェストが必要なファイルなので、アプリが公開されたり、場合によっては機能が制限されたりすることがあります。たとえば、デバイスのマイクを使用する必要があると宣言していない今すぐ音声認識を起動しようとすると、ユーザがアクセスを拒否したという質問にあなたを惑わせるアクセス拒否のエラーがスローされますが、OSがアクセスを拒否したために実際に許可要求のプロンプトが生成されませんでしたあなたのアプリがマイクの使用を宣言していないため、マイクに接続する必要があります。それは単なる例です。不足しているビジュアルアセットでは、アプリが認定を受けられません。
あなたのアプリケーションが完璧に動作しているかどうかを知る唯一の方法は、タスクマネージャです。あなたのexeを適切に診断すると、アプリが利用する処理とリソースの種類を知ることができます。それが私がチェックする方法です。今、私はまだ良い方法を見つけていません。しかし、これは私のために働く。
最後にあなたの編集については、ご注意ください Windowsアプリケーションはファイルシステムにアクセスできません。 C:/ SomeFolderやアプリケーションサンドボックスの外にあるファイルにはアクセスできません。あなたがアクセスできる唯一のものはあなたのパッケージとそれが内部に保持するものです。 Uri
パスをms:appx-//
とし、 "Assets/fonts/myFont.TTF"のようなパスを使用すると、アプリケーションまたはアプリケーションサンドボックス内のファイルにアクセスできます。 ファイルシステムにアクセスできる唯一の方法は、FilePicker
を使用して、クイックウィンドウのダイアログボックスを開き、ファイルを添付することです。必要に応じてキャストして読むことができるStorageFile
クラスオブジェクトを返します。しかし、FilePixker
の入っていない状態では、あなたのアプリはファイルシステムにアクセスすることができず、ホストシステムにあるファイルは使用できません。
私たちはこれに着手していますが、あなたのアプリは別のアプリに保存されているデータにアクセスすることはできません。保存されるデータは、それを保存したアプリ専用です。しかし、Uri
を使って他のアプリと通信することができます。これはアプリケーション間通信と呼ばれます。または、2つのアプリ間でデータを転送する方法をGoogleですばやく検索すると、頭がおかしくなります。また、Windows 10周年のアップデートAppServices
が許可された後、いくつかのライブラリとエントリポイントと終了ポイントを公開することで、別のアプリケーションからデータにアクセスすることができます。私はあなたの質問の範囲ではなかったので、私はこのセグメントを急いでしまったが、あなたが必要とするか、コメントで尋ねる場合は、オンラインでそれを読んでください。
私は何をお勧めしますか?あなたは起動時ファイルを取得し、リソースを収集しているので、ファイルシステムへのアクセスが増え、WPFがより適切な解決策であると言えます。あなたがあなたのアプリを使ってやりたいwpf(たとえメトロのUIナゲットが利用可能であるか)を下位の基盤技術に保ちながら行いますが、ファイルシステムへのアクセスと対話が必要な場合はwpfに固執することをお勧めします。
しかし、アプリを起動するたびにファイルを手動で追加することができます(悲しい音が鳴ります)。ファイルをオンラインにしてemをemで取得し、オンラインでアップデートしてアップロードできますアプリの起動時にピックアップ)UWPは行く方法です。
UWPプラットフォームでの飛躍を開始するには、かなり洗練された設定サービス、ファイルサービス、パスワード保管庫とボックスの準備ができているボイラープレートコードがたくさんあるので、テンプレート10を使用することを検討してください。
私はあなたの質問に答えてくれることを望みました。何かがある場合は、下記のコメントセクションを自由に使用することができます。
フォーマットには申し訳ありませんが、モバイルデバイスを使用して回答しています。後で私がオフィスにいるときに編集します
私は起動プロセスをデバッグして停止する場所を確認する必要があると思います – GPPK