I feel like I am missing something, but not sure what it is.
I have two UWP apps which I have setup to use the video library as a temporary storage location. One app works fine and the other app says it does not have permission. From what I can tell the coding is exactly the same. I verified that the capabilities of the app is setup the same in both apps as well.
Any suggestions on what else to look at?
Non-working code:
public static async Task GetFileAsync()
{
var (authResult, message) = await Authentication.AquireTokenAsync();
var httpClient = new HttpClient();
HttpResponseMessage response;
var request = new HttpRequestMessage(HttpMethod.Get, MainPage.fileurl);
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", authResult.AccessToken);
response = await httpClient.SendAsync(request);
byte[] fileBytes = await response.Content.ReadAsByteArrayAsync();
StorageLibrary videoLibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Videos);
string saveFolder = videoLibrary.SaveFolder.Path;
string saveFileName = App.Date + "-" + App.Shift + ".xlsx";
saveLocation = saveFolder + "\\" + saveFileName;
using (MemoryStream stream = new MemoryStream())
{
stream.Write(fileBytes, 0, (int)fileBytes.Length);
using (spreadsheetDoc = SpreadsheetDocument.Open(stream, true))
{
await Task.Run(() =>
{
File.WriteAllBytes(saveLocation, stream.ToArray());
return TaskStatus.RanToCompletion;
});
}
}
}
public async static Task UpdateCell(string docName, string text,
uint rowIndex, string columnName)
{
StorageLibrary videoLibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Videos);
string saveFolder = videoLibrary.SaveFolder.Path;
string saveFileName = App.Date + "-" + App.Shift + ".xlsx";
saveLocation = saveFolder + "\\" + saveFileName;
await Task.Run(() =>
{
using (spreadsheetDoc = SpreadsheetDocument.Open(saveLocation, true))
{
WorksheetPart worksheetPart =
GetWorksheetPartByName(spreadsheetDoc, "DC11Rounds");
if (worksheetPart != null)
{
Cell cell = GetCell(worksheetPart.Worksheet,
columnName, rowIndex);
cell.CellValue = new CellValue(text);
cell.DataType =
new EnumValue<CellValues>(CellValues.String);
worksheetPart.Worksheet.Save();
}
}
return TaskStatus.RanToCompletion;
});
}
Working Code:
public static async Task GetFileAsync()
{
var (authResult, message) = await Authentication.AquireTokenAsync();
var httpClient = new HttpClient();
HttpResponseMessage response;
var request = new HttpRequestMessage(HttpMethod.Get, MainPage.fileurl);
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", authResult.AccessToken);
response = await httpClient.SendAsync(request);
byte[] fileBytes = await response.Content.ReadAsByteArrayAsync();
StorageLibrary videoLibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Videos);
string saveFolder = videoLibrary.SaveFolder.Path;
string saveFileName = App.Date + "-" + App.Shift + ".xlsx";
saveLocation = saveFolder + "\\" + saveFileName;
using (MemoryStream stream = new MemoryStream())
{
stream.Write(fileBytes, 0, (int)fileBytes.Length);
using (spreadsheetDoc = SpreadsheetDocument.Open(stream, true))
{
await Task.Run(() =>
{
File.WriteAllBytes(saveLocation, stream.ToArray());
return TaskStatus.RanToCompletion;
});
}
}
}
public async static Task UpdateCell(string docName, string text,
uint rowIndex, string columnName)
{
StorageLibrary videoLibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Videos);
string saveFolder = videoLibrary.SaveFolder.Path;
string saveFileName = App.Date + "-" + App.Shift + ".xlsx";
saveLocation = saveFolder + "\\" + saveFileName;
await Task.Run(() =>
{
using (spreadsheetDoc = SpreadsheetDocument.Open(saveLocation, true))
{
WorksheetPart worksheetPart =
GetWorksheetPartByName(spreadsheetDoc, "DC6Rounds");
if (worksheetPart != null)
{
Cell cell = GetCell(worksheetPart.Worksheet,
columnName, rowIndex);
cell.CellValue = new CellValue(text);
cell.DataType =
new EnumValue<CellValues>(CellValues.String);
worksheetPart.Worksheet.Save();
}
}
return TaskStatus.RanToCompletion;
});
}
Appmanifast File
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:iot="http://schemas.microsoft.com/appx/manifest/iot/windows10" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp iot rescap">
<Identity Name="0724a480-5e3e-4cd4-a2a5-0c7305491ce3" Publisher="CN=tkrupka" Version="1.0.0.0" />
<mp:PhoneIdentity PhoneProductId="0724a480-5e3e-4cd4-a2a5-0c7305491ce3" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties>
<DisplayName>DC11Rounds</DisplayName>
<PublisherDisplayName>tkrupka</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate" />
</Resources>
<Applications>
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="DC11Rounds.App">
<uap:VisualElements DisplayName="DC11Rounds" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="DC11Rounds" BackgroundColor="transparent">
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png">
</uap:DefaultTile>
<uap:SplashScreen Image="Assets\SplashScreen.png" />
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
<Capability Name="privateNetworkClientServer" />
<uap:Capability Name="enterpriseAuthentication" />
<uap:Capability Name="videosLibrary" />
<rescap:Capability Name="broadFileSystemAccess" />
</Capabilities>
</Package>
Working File
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
<Identity Name="9e9838f0-1e60-482a-b922-189cc5e928f9" Publisher="CN=XXXXXX" Version="1.0.0.0" />
<mp:PhoneIdentity PhoneProductId="9e9838f0-1e60-482a-b922-189cc5e928f9" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties>
<DisplayName>DC6Rounds</DisplayName>
<PublisherDisplayName>XXXXXX</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate" />
</Resources>
<Applications>
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="DC6Rounds.App">
<uap:VisualElements DisplayName="DC6Rounds" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="DC6Rounds" BackgroundColor="black">
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png">
</uap:DefaultTile>
<uap:SplashScreen Image="Assets\SplashScreen.png" BackgroundColor="black" />
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
<Capability Name="privateNetworkClientServer" />
<uap:Capability Name="enterpriseAuthentication" />
<uap:Capability Name="videosLibrary" />
</Capabilities>
</Package>
Getting this error when trying to add restricted capabilities:
Severity Code Description Project File Line Suppression State Warning The element 'Capabilities' in namespace 'http://schemas.microsoft.com/appx/manifest/foundation/windows10' has invalid child element 'Capability' in namespace 'http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities'. List of possible elements expected: 'CapabilityChoice' in namespace 'http://schemas.microsoft.com/appx/manifest/foundation/windows10' as well as 'Capability' in namespace 'http://schemas.microsoft.com/appx/manifest/uap/windows10' as well as 'Capability' in namespace 'http://schemas.microsoft.com/appx/manifest/foundation/windows10' as well as 'Capability' in namespace 'http://schemas.microsoft.com/appx/manifest/uap/windows10/4' as well as 'Capability' in namespace 'http://schemas.microsoft.com/appx/manifest/uap/windows10/6' as well as 'Capability' in namespace 'http://schemas.microsoft.com/appx/manifest/uap/windows10/7' as well as 'Capability' in namespace 'http://schemas.microsoft.com/appx/manifest/uap/windows10/3' as well as 'Capability' in namespace 'http://schemas.microsoft.com/appx/manifest/uap/windows10/2' as well as 'CustomCapabilityChoice' in namespace 'http://schemas.microsoft.com/appx/manifest/foundation/windows10' as well as 'CustomCapability' in namespace 'http://schemas.microsoft.com/appx/manifest/uap/windows10/4' as well as 'Dev.... DC11Rounds C:\Users\XXXXXX\GitVault\DC11Rounds\DC11Rounds\DC11Rounds\Package.appxmanifest 31
Tried this:
//StorageLibrary storageLibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Documents);
//string saveFolder = storageLibrary.SaveFolder.Path;
StorageFolder saveFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
Received this:
Message=Could not find a part of the path 'C:\Users\XXXXXX\GitVault\DC11Rounds\DC11Rounds\DC11Rounds\bin\x86\Debug\AppX\Windows.Storage.StorageFolder\20181205-Days.xlsx'.
Realized I made a mistake and forgot a .path. SO I still have the same issue.
I added the broadFileSystemAccess, used document library, changed my minimum target value, and made the editorial changes because of the change in Minimum target. The project now works! Thanks to both of you. Not sure how to mark as Answered since most of this is in comments