The User Profile service is not available on Sharepoint Foundation and therefore high trust apps are not supported. However I found that after installing a high trust app it worked until restarting IIS, and after that it would generate authentication errors. Re-uploading the app package to the app site fixed the authentication errors and allowed the app to run properly again.
I could not find an API to automate this re-upload process, so instead it can be done using a headless browser.
Here’s an example in casperjs (note that on Windows casperjs must be installed in a path without spaces):
[sourcecode language=’js’]
var url = ‘https://yourdomain.com/sites/appcatalog/_layouts/15/start.aspx#/AppCatalog/Forms/AllItems.aspx’
var file = ‘sharepoint-package.app’
var user = ‘username’
var pass = ‘password’
var casper = require(‘casper’).create();
casper.start();
casper.setHttpAuth(user, pass);
casper.thenOpen(url, function() {
this.echo(this.getTitle());
this.waitForSelector(‘#idHomePageNewDocument-WPQ2’, function() {
this.echo(“Found selector”);
});
});
casper.thenClick(‘#idHomePageNewDocument-WPQ2’, function() {
this.echo(“Clicked button”);
this.waitForSelector(‘.ms-dlgFrameContainer > iframe’, function() {
this.echo(“Got the iframe”);
});
});
casper.withFrame(1, function() {
this.waitForSelector(‘#aspnetForm’, function() {
this.echo(“Found form”);
this.fill(‘#aspnetForm’, {
‘ctl00$PlaceHolderMain$ctl01$ctl04$InputFile’: file,
}, false);
this.wait(3000, function() {
this.click(‘#ctl00PlaceHolderMainctl00RptControlsbtnOK’);
this.echo(“Clicked button”);
});
});
});
[/sourcecode]