8

Windows 8 没入型アプリを非常に単純に最小化し、ファイルをエクスプローラーで開く関数を作成したいと考えています。

 public async void OpenFile( string filePath)
 {
     StorageFile File = await StorageFile.GetFileFromApplicationUriAsync
                              (new Uri(filePath, UriKind.RelativeOrAbsolute)); ;

     if (File != null)
     {
         await Launcher.LaunchUriAsync(new Uri(File.Path));
     }
 }

このコードにより、権限エラーが発生します。何か案は?

4

3 に答える 3

7

私が思い出す限り、MSはそれを許可しません。アプリは、権限が制限されたサンドボックスで実行されているかのように設計する必要があります。

アプリのインストール ディレクトリ、アプリ データの場所、ダウンロード フォルダーなどの特定のファイル システムの場所には、既定で Windows ストア アプリを使用してアクセスできます。アプリは、ファイル ピッカーを介して、または機能を宣言することによって、追加の場所にアクセスすることもできます。

私はプロトコル ハンドラーのアプローチを試しましたが、2 回拒否されました:D これを行う方法を見つけて公開したとしても、MS が考えを変えず、アプリをストアから削除しないという意味ではありません。

ハンス・パッサンが言ったように:

アイデアをかき消してください。これを機能させることはできません。

于 2013-01-21T16:54:46.277 に答える
5

これは、私の観点から見ると、純粋に内部アプリ用です

これは、意図したアプローチの中心的な問題です。Windows ストア エコシステムには "内部アプリ" という概念はありません。ストア アプリを別のコンピューターで実行する唯一の方法は、ストアからのみ取得できるライセンス キーを取得することです。

これは、開発用コンピューターでストア アプリを開発しているときに見落とされがちです。このライセンスキーは、アプリの実行とデバッグには必要ないようです。しかし、実際には 1 つあり、Visual Studio が 1 か月に 1 回ダイアログを表示して、開発者のライセンス キーを再取得するようにせがむときに取得します。これは一時的なキーであり、1 か月間のみ有効であり、アプリを確実に実行するのに十分な時間を与えることを純粋に意図しています。そのキーを別のマシンに転送したり、1 か月の有効期限を超えてキー (およびプログラム) を存続させたりするメカニズムはありません。

もちろん、内部アプリをストアに公開することもできます。ただし、他のストア アプリと同様に、検証手順によって適合性と安定性が吟味されます。WACK のような機械的なテストだけでなく、アプリを公開する前に 2 人の担当者がテストします。プロトコル ハンドラのハッキングなど、サンドボックスの制限を回避するために何かをしようとすると、アプリを拒否することを躊躇しません。

承認されると、すべてのWindows 8 ユーザーがダウンロードできるようになります。ところで、あなたの社内の秘密や慣行に興味を持つハッカーを含めてください。パジャマから出る必要がないのでとても便利です。

典型的な基幹業務アプリは、当面はデスクトップ アプリのままです。


この回答には更新が必要です。現在、専用サーバーからアプリを公開するメカニズムがあります。これはサイドローディングと呼ばれます。アプリには依然として証明書が必要であり、多額の費用がかかりますが、Microsoft Store サーバーではなく、民間企業が管理するプライベート サーバーから展開できます。

概要はこちらから入手できます

于 2013-01-21T17:24:30.980 に答える
0

これには特定の API がありますが、誰も気づいていないようです。

var success = await Windows.System.Launcher.LaunchFolderAsync(KnownFolders.DocumentsLibrary);

この API のより高度な形式には、次のオプションがあります。

FolderLauncherOptions options = new FolderLauncherOptions();
options.ItemsToSelect.Add(file1);
bool success = await Windows.System.Launcher.LaunchFolderAsync(folder, options);

options.DesiredRemainingView を使用して目的のビューを設定することもできます。

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

于 2015-12-04T23:59:57.043 に答える