Update libraries and build

Former-commit-id: 46e81c0b1580478c8ac91a797b4d3412e0934577 [formerly 8d78712f20894e56981d0f7b29946594b848192b]
Former-commit-id: 6e8dc301effd33cdf73eb087e3d87dfa74835716
This commit is contained in:
Jaifroid 2017-06-25 22:29:44 +01:00
parent c9bf00b070
commit 01f8713675
64 changed files with 5284 additions and 9949 deletions

View File

@ -0,0 +1,750 @@
#
# Add-AppxDevPackage.ps1 is a PowerShell script designed to install app
# packages created by Visual Studio for developers. To run this script from
# Explorer, right-click on its icon and choose "Run with PowerShell".
#
# Visual Studio supplies this script in the folder generated with its
# "Prepare Package" command. The same folder will also contain the app
# package (a .appx file), the signing certificate (a .cer file), and a
# "Dependencies" subfolder containing all the framework packages used by the
# app.
#
# This script simplifies installing these packages by automating the
# following functions:
# 1. Find the app package and signing certificate in the script directory
# 2. Prompt the user to acquire a developer license and to install the
# certificate if necessary
# 3. Find dependency packages that are applicable to the operating system's
# CPU architecture
# 4. Install the package along with all applicable dependencies
#
# All command line parameters are reserved for use internally by the script.
# Users should launch this script from Explorer.
#
# .Link
# http://go.microsoft.com/fwlink/?LinkId=243053
param(
[switch]$Force = $false,
[switch]$GetDeveloperLicense = $false,
[string]$CertificatePath = $null
)
$ErrorActionPreference = "Stop"
# The language resources for this script are placed in the
# "Add-AppDevPackage.resources" subfolder alongside the script. Since the
# current working directory might not be the directory that contains the
# script, we need to create the full path of the resources directory to
# pass into Import-LocalizedData
$ScriptPath = $null
try
{
$ScriptPath = (Get-Variable MyInvocation).Value.MyCommand.Path
$ScriptDir = Split-Path -Parent $ScriptPath
}
catch {}
if (!$ScriptPath)
{
PrintMessageAndExit $UiStrings.ErrorNoScriptPath $ErrorCodes.NoScriptPath
}
$LocalizedResourcePath = Join-Path $ScriptDir "Add-AppDevPackage.resources"
Import-LocalizedData -BindingVariable UiStrings -BaseDirectory $LocalizedResourcePath
$ErrorCodes = Data {
ConvertFrom-StringData @'
Success = 0
NoScriptPath = 1
NoPackageFound = 2
ManyPackagesFound = 3
NoCertificateFound = 4
ManyCertificatesFound = 5
BadCertificate = 6
PackageUnsigned = 7
CertificateMismatch = 8
ForceElevate = 9
LaunchAdminFailed = 10
GetDeveloperLicenseFailed = 11
InstallCertificateFailed = 12
AddPackageFailed = 13
ForceDeveloperLicense = 14
CertUtilInstallFailed = 17
CertIsCA = 18
BannedEKU = 19
NoBasicConstraints = 20
NoCodeSigningEku = 21
InstallCertificateCancelled = 22
BannedKeyUsage = 23
ExpiredCertificate = 24
'@
}
function PrintMessageAndExit($ErrorMessage, $ReturnCode)
{
Write-Host $ErrorMessage
if (!$Force)
{
Pause
}
exit $ReturnCode
}
#
# Warns the user about installing certificates, and presents a Yes/No prompt
# to confirm the action. The default is set to No.
#
function ConfirmCertificateInstall
{
$Answer = $host.UI.PromptForChoice(
"",
$UiStrings.WarningInstallCert,
[System.Management.Automation.Host.ChoiceDescription[]]@($UiStrings.PromptYesString, $UiStrings.PromptNoString),
1)
return $Answer -eq 0
}
#
# Validates whether a file is a valid certificate using CertUtil.
# This needs to be done before calling Get-PfxCertificate on the file, otherwise
# the user will get a cryptic "Password: " prompt for invalid certs.
#
function ValidateCertificateFormat($FilePath)
{
# certutil -verify prints a lot of text that we don't need, so it's redirected to $null here
certutil.exe -verify $FilePath > $null
if ($LastExitCode -lt 0)
{
PrintMessageAndExit ($UiStrings.ErrorBadCertificate -f $FilePath, $LastExitCode) $ErrorCodes.BadCertificate
}
# Check if certificate is expired
$cert = Get-PfxCertificate $FilePath
if (($cert.NotBefore -gt (Get-Date)) -or ($cert.NotAfter -lt (Get-Date)))
{
PrintMessageAndExit ($UiStrings.ErrorExpiredCertificate -f $FilePath) $ErrorCodes.ExpiredCertificate
}
}
#
# Verify that the developer certificate meets the following restrictions:
# - The certificate must contain a Basic Constraints extension, and its
# Certificate Authority (CA) property must be false.
# - The certificate's Key Usage extension must be either absent, or set to
# only DigitalSignature.
# - The certificate must contain an Extended Key Usage (EKU) extension with
# Code Signing usage.
# - The certificate must NOT contain any other EKU except Code Signing and
# Lifetime Signing.
#
# These restrictions are enforced to decrease security risks that arise from
# trusting digital certificates.
#
function CheckCertificateRestrictions
{
Set-Variable -Name BasicConstraintsExtensionOid -Value "2.5.29.19" -Option Constant
Set-Variable -Name KeyUsageExtensionOid -Value "2.5.29.15" -Option Constant
Set-Variable -Name EkuExtensionOid -Value "2.5.29.37" -Option Constant
Set-Variable -Name CodeSigningEkuOid -Value "1.3.6.1.5.5.7.3.3" -Option Constant
Set-Variable -Name LifetimeSigningEkuOid -Value "1.3.6.1.4.1.311.10.3.13" -Option Constant
$CertificateExtensions = (Get-PfxCertificate $CertificatePath).Extensions
$HasBasicConstraints = $false
$HasCodeSigningEku = $false
foreach ($Extension in $CertificateExtensions)
{
# Certificate must contain the Basic Constraints extension
if ($Extension.oid.value -eq $BasicConstraintsExtensionOid)
{
# CA property must be false
if ($Extension.CertificateAuthority)
{
PrintMessageAndExit $UiStrings.ErrorCertIsCA $ErrorCodes.CertIsCA
}
$HasBasicConstraints = $true
}
# If key usage is present, it must be set to digital signature
elseif ($Extension.oid.value -eq $KeyUsageExtensionOid)
{
if ($Extension.KeyUsages -ne "DigitalSignature")
{
PrintMessageAndExit ($UiStrings.ErrorBannedKeyUsage -f $Extension.KeyUsages) $ErrorCodes.BannedKeyUsage
}
}
elseif ($Extension.oid.value -eq $EkuExtensionOid)
{
# Certificate must contain the Code Signing EKU
$EKUs = $Extension.EnhancedKeyUsages.Value
if ($EKUs -contains $CodeSigningEkuOid)
{
$HasCodeSigningEKU = $True
}
# EKUs other than code signing and lifetime signing are not allowed
foreach ($EKU in $EKUs)
{
if ($EKU -ne $CodeSigningEkuOid -and $EKU -ne $LifetimeSigningEkuOid)
{
PrintMessageAndExit ($UiStrings.ErrorBannedEKU -f $EKU) $ErrorCodes.BannedEKU
}
}
}
}
if (!$HasBasicConstraints)
{
PrintMessageAndExit $UiStrings.ErrorNoBasicConstraints $ErrorCodes.NoBasicConstraints
}
if (!$HasCodeSigningEKU)
{
PrintMessageAndExit $UiStrings.ErrorNoCodeSigningEku $ErrorCodes.NoCodeSigningEku
}
}
#
# Performs operations that require administrative privileges:
# - Prompt the user to obtain a developer license
# - Install the developer certificate (if -Force is not specified, also prompts the user to confirm)
#
function DoElevatedOperations
{
if ($GetDeveloperLicense)
{
Write-Host $UiStrings.GettingDeveloperLicense
if ($Force)
{
PrintMessageAndExit $UiStrings.ErrorForceDeveloperLicense $ErrorCodes.ForceDeveloperLicense
}
try
{
Show-WindowsDeveloperLicenseRegistration
}
catch
{
$Error[0] # Dump details about the last error
PrintMessageAndExit $UiStrings.ErrorGetDeveloperLicenseFailed $ErrorCodes.GetDeveloperLicenseFailed
}
}
if ($CertificatePath)
{
Write-Host $UiStrings.InstallingCertificate
# Make sure certificate format is valid and usage constraints are followed
ValidateCertificateFormat $CertificatePath
CheckCertificateRestrictions
# If -Force is not specified, warn the user and get consent
if ($Force -or (ConfirmCertificateInstall))
{
# Add cert to store
certutil.exe -addstore TrustedPeople $CertificatePath
if ($LastExitCode -lt 0)
{
PrintMessageAndExit ($UiStrings.ErrorCertUtilInstallFailed -f $LastExitCode) $ErrorCodes.CertUtilInstallFailed
}
}
else
{
PrintMessageAndExit $UiStrings.ErrorInstallCertificateCancelled $ErrorCodes.InstallCertificateCancelled
}
}
}
#
# Checks whether the machine is missing a valid developer license.
#
function CheckIfNeedDeveloperLicense
{
$Result = $true
try
{
$Result = (Get-WindowsDeveloperLicense | Where-Object { $_.IsValid } | Measure-Object).Count -eq 0
}
catch {}
return $Result
}
#
# Launches an elevated process running the current script to perform tasks
# that require administrative privileges. This function waits until the
# elevated process terminates, and checks whether those tasks were successful.
#
function LaunchElevated
{
# Set up command line arguments to the elevated process
$RelaunchArgs = '-ExecutionPolicy Unrestricted -file "' + $ScriptPath + '"'
if ($Force)
{
$RelaunchArgs += ' -Force'
}
if ($NeedDeveloperLicense)
{
$RelaunchArgs += ' -GetDeveloperLicense'
}
if ($NeedInstallCertificate)
{
$RelaunchArgs += ' -CertificatePath "' + $DeveloperCertificatePath.FullName + '"'
}
# Launch the process and wait for it to finish
try
{
$AdminProcess = Start-Process "$PsHome\PowerShell.exe" -Verb RunAs -ArgumentList $RelaunchArgs -PassThru
}
catch
{
$Error[0] # Dump details about the last error
PrintMessageAndExit $UiStrings.ErrorLaunchAdminFailed $ErrorCodes.LaunchAdminFailed
}
while (!($AdminProcess.HasExited))
{
Start-Sleep -Seconds 2
}
# Check if all elevated operations were successful
if ($NeedDeveloperLicense)
{
if (CheckIfNeedDeveloperLicense)
{
PrintMessageAndExit $UiStrings.ErrorGetDeveloperLicenseFailed $ErrorCodes.GetDeveloperLicenseFailed
}
else
{
Write-Host $UiStrings.AcquireLicenseSuccessful
}
}
if ($NeedInstallCertificate)
{
$Signature = Get-AuthenticodeSignature $DeveloperPackagePath -Verbose
if ($Signature.Status -ne "Valid")
{
PrintMessageAndExit ($UiStrings.ErrorInstallCertificateFailed -f $Signature.Status) $ErrorCodes.InstallCertificateFailed
}
else
{
Write-Host $UiStrings.InstallCertificateSuccessful
}
}
}
#
# Finds all applicable dependency packages according to OS architecture, and
# installs the developer package with its dependencies. The expected layout
# of dependencies is:
#
# <current dir>
# \Dependencies
# <Architecture neutral dependencies>.appx
# \x86
# <x86 dependencies>.appx
# \x64
# <x64 dependencies>.appx
# \arm
# <arm dependencies>.appx
#
function InstallPackageWithDependencies
{
$DependencyPackagesDir = (Join-Path $ScriptDir "Dependencies")
$DependencyPackages = @()
if (Test-Path $DependencyPackagesDir)
{
# Get architecture-neutral dependencies
$DependencyPackages += Get-ChildItem (Join-Path $DependencyPackagesDir "*.appx") | Where-Object { $_.Mode -NotMatch "d" }
# Get architecture-specific dependencies
if (($Env:Processor_Architecture -eq "x86" -or $Env:Processor_Architecture -eq "amd64") -and (Test-Path (Join-Path $DependencyPackagesDir "x86")))
{
$DependencyPackages += Get-ChildItem (Join-Path $DependencyPackagesDir "x86\*.appx") | Where-Object { $_.Mode -NotMatch "d" }
}
if (($Env:Processor_Architecture -eq "amd64") -and (Test-Path (Join-Path $DependencyPackagesDir "x64")))
{
$DependencyPackages += Get-ChildItem (Join-Path $DependencyPackagesDir "x64\*.appx") | Where-Object { $_.Mode -NotMatch "d" }
}
if (($Env:Processor_Architecture -eq "arm") -and (Test-Path (Join-Path $DependencyPackagesDir "arm")))
{
$DependencyPackages += Get-ChildItem (Join-Path $DependencyPackagesDir "arm\*.appx") | Where-Object { $_.Mode -NotMatch "d" }
}
}
Write-Host $UiStrings.InstallingPackage
$AddPackageSucceeded = $False
try
{
if ($DependencyPackages.FullName.Count -gt 0)
{
Write-Host $UiStrings.DependenciesFound
$DependencyPackages.FullName
Add-AppxPackage -Path $DeveloperPackagePath.FullName -DependencyPath $DependencyPackages.FullName -ForceApplicationShutdown
}
else
{
Add-AppxPackage -Path $DeveloperPackagePath.FullName -ForceApplicationShutdown
}
$AddPackageSucceeded = $?
}
catch
{
$Error[0] # Dump details about the last error
}
if (!$AddPackageSucceeded)
{
if ($NeedInstallCertificate)
{
PrintMessageAndExit $UiStrings.ErrorAddPackageFailedWithCert $ErrorCodes.AddPackageFailed
}
else
{
PrintMessageAndExit $UiStrings.ErrorAddPackageFailed $ErrorCodes.AddPackageFailed
}
}
}
#
# Main script logic when the user launches the script without parameters.
#
function DoStandardOperations
{
# List all .appx files in the script directory
$PackagePath = Get-ChildItem (Join-Path $ScriptDir "*.appx") | Where-Object { $_.Mode -NotMatch "d" }
$PackageCount = ($PackagePath | Measure-Object).Count
# List all .appxbundle files in the script directory
$BundlePath = Get-ChildItem (Join-Path $ScriptDir "*.appxbundle") | Where-Object { $_.Mode -NotMatch "d" }
$BundleCount = ($BundlePath | Measure-Object).Count
# List all .eappx files in the script directory
$EncryptedPackagePath = Get-ChildItem (Join-Path $ScriptDir "*.eappx") | Where-Object { $_.Mode -NotMatch "d" }
$EncryptedPackageCount = ($EncryptedPackagePath | Measure-Object).Count
# List all .eappxbundle files in the script directory
$EncryptedBundlePath = Get-ChildItem (Join-Path $ScriptDir "*.eappxbundle") | Where-Object { $_.Mode -NotMatch "d" }
$EncryptedBundleCount = ($EncryptedBundlePath | Measure-Object).Count
$NumberOfPackagesAndBundles = $PackageCount + $BundleCount + $EncryptedPackageCount + $EncryptedBundleCount
# There must be exactly 1 package/bundle
if ($NumberOfPackagesAndBundles -lt 1)
{
PrintMessageAndExit $UiStrings.ErrorNoPackageFound $ErrorCodes.NoPackageFound
}
elseif ($NumberOfPackagesAndBundles -gt 1)
{
PrintMessageAndExit $UiStrings.ErrorManyPackagesFound $ErrorCodes.ManyPackagesFound
}
if ($PackageCount -eq 1)
{
$DeveloperPackagePath = $PackagePath
Write-Host ($UiStrings.PackageFound -f $DeveloperPackagePath.FullName)
}
elseif ($BundleCount -eq 1)
{
$DeveloperPackagePath = $BundlePath
Write-Host ($UiStrings.BundleFound -f $DeveloperPackagePath.FullName)
}
elseif ($EncryptedPackageCount -eq 1)
{
$DeveloperPackagePath = $EncryptedPackagePath
Write-Host ($UiStrings.EncryptedPackageFound -f $DeveloperPackagePath.FullName)
}
elseif ($EncryptedBundleCount -eq 1)
{
$DeveloperPackagePath = $EncryptedBundlePath
Write-Host ($UiStrings.EncryptedBundleFound -f $DeveloperPackagePath.FullName)
}
# The package must be signed
$PackageSignature = Get-AuthenticodeSignature $DeveloperPackagePath
$PackageCertificate = $PackageSignature.SignerCertificate
if (!$PackageCertificate)
{
PrintMessageAndExit $UiStrings.ErrorPackageUnsigned $ErrorCodes.PackageUnsigned
}
# Test if the package signature is trusted. If not, the corresponding certificate
# needs to be present in the current directory and needs to be installed.
$NeedInstallCertificate = ($PackageSignature.Status -ne "Valid")
if ($NeedInstallCertificate)
{
# List all .cer files in the script directory
$DeveloperCertificatePath = Get-ChildItem (Join-Path $ScriptDir "*.cer") | Where-Object { $_.Mode -NotMatch "d" }
$DeveloperCertificateCount = ($DeveloperCertificatePath | Measure-Object).Count
# There must be exactly 1 certificate
if ($DeveloperCertificateCount -lt 1)
{
PrintMessageAndExit $UiStrings.ErrorNoCertificateFound $ErrorCodes.NoCertificateFound
}
elseif ($DeveloperCertificateCount -gt 1)
{
PrintMessageAndExit $UiStrings.ErrorManyCertificatesFound $ErrorCodes.ManyCertificatesFound
}
Write-Host ($UiStrings.CertificateFound -f $DeveloperCertificatePath.FullName)
# The .cer file must have the format of a valid certificate
ValidateCertificateFormat $DeveloperCertificatePath
# The package signature must match the certificate file
if ($PackageCertificate -ne (Get-PfxCertificate $DeveloperCertificatePath))
{
PrintMessageAndExit $UiStrings.ErrorCertificateMismatch $ErrorCodes.CertificateMismatch
}
}
$NeedDeveloperLicense = CheckIfNeedDeveloperLicense
# Relaunch the script elevated with the necessary parameters if needed
if ($NeedDeveloperLicense -or $NeedInstallCertificate)
{
Write-Host $UiStrings.ElevateActions
if ($NeedDeveloperLicense)
{
Write-Host $UiStrings.ElevateActionDevLicense
}
if ($NeedInstallCertificate)
{
Write-Host $UiStrings.ElevateActionCertificate
}
$IsAlreadyElevated = ([Security.Principal.WindowsIdentity]::GetCurrent().Groups.Value -contains "S-1-5-32-544")
if ($IsAlreadyElevated)
{
if ($Force -and $NeedDeveloperLicense)
{
PrintMessageAndExit $UiStrings.ErrorForceDeveloperLicense $ErrorCodes.ForceDeveloperLicense
}
if ($Force -and $NeedInstallCertificate)
{
Write-Warning $UiStrings.WarningInstallCert
}
}
else
{
if ($Force)
{
PrintMessageAndExit $UiStrings.ErrorForceElevate $ErrorCodes.ForceElevate
}
else
{
Write-Host $UiStrings.ElevateActionsContinue
Pause
}
}
LaunchElevated
}
InstallPackageWithDependencies
}
#
# Main script entry point
#
if ($GetDeveloperLicense -or $CertificatePath)
{
DoElevatedOperations
}
else
{
DoStandardOperations
PrintMessageAndExit $UiStrings.Success $ErrorCodes.Success
}
# SIG # Begin signature block
# MIIiBQYJKoZIhvcNAQcCoIIh9jCCIfICAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAnYmBUpv/sjF9s
# UpSJeaz8bsgho4m0HYf/wsPXcJL9raCCC4QwggUMMIID9KADAgECAhMzAAABT+fG
# YslG9Kl/AAAAAAFPMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p
# bmcgUENBIDIwMTAwHhcNMTYxMTE3MjE1OTE0WhcNMTgwMjE3MjE1OTE0WjCBgzEL
# MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
# bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjENMAsGA1UECxMETU9Q
# UjEeMBwGA1UEAxMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMIIBIjANBgkqhkiG9w0B
# AQEFAAOCAQ8AMIIBCgKCAQEAtImQinYMrMU9obyB6NdQCLtaaaeux8y4W704DyFR
# Rggj0b0imXO3KO/3B6sr+Uj3pRQFqU0kG21hlpyDnTPALHmZ8F3z7NVE36XNWfp2
# rQY/xkoD5uotlBDCZm/9YtBQitEikSOXZTShxJoCXpLiuHwoeMJe40b3yu84V4is
# VgZYypgbx6jXXjaumkUw47a3PRjCpyeweU1T2DLmdqNQKvY/urtBHiSGTZibep72
# LOK8kGBl+5Zp+uATaOKJKi51GJ3Cbbgh9JleKn8xoKcNzO9PEW7+SUJOYd43yyue
# QO/Oq15wCHOlcnu3Rs5bMlNdijlRb7DXqHjdoyhvXu5CHwIDAQABo4IBezCCAXcw
# HwYDVR0lBBgwFgYKKwYBBAGCNz0GAQYIKwYBBQUHAwMwHQYDVR0OBBYEFJIOoRFx
# ti9VDcMP9MlcdC5aDGq/MFIGA1UdEQRLMEmkRzBFMQ0wCwYDVQQLEwRNT1BSMTQw
# MgYDVQQFEysyMzA4NjUrYjRiMTI4NzgtZTI5My00M2U5LWIyMWUtN2QzMDcxOWQ0
# NTJmMB8GA1UdIwQYMBaAFOb8X3u7IgBY5HJOtfQhdCMy5u+sMFYGA1UdHwRPME0w
# S6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3Rz
# L01pY0NvZFNpZ1BDQV8yMDEwLTA3LTA2LmNybDBaBggrBgEFBQcBAQROMEwwSgYI
# KwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWlj
# Q29kU2lnUENBXzIwMTAtMDctMDYuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcN
# AQELBQADggEBABHAuWpDNf6FsTiADbh0dSyNcUm4PEHtLb3iBjaQdiuJ5baB6Ybj
# GIyWkzJCp6f2tzQlOdDGekPq23dwzNTpQuuoxVUCdXie2BC+BxvKlGP7PA9x7tRV
# Z9cp9mq/B7zlj4Lq+KHiczM/FJJeobplVzdFhYBc1izGizxqh6MHEcvs2XE4IDUk
# PVS9zFWJ9HcQm+WZqg+uxjyOn9oAT8994bPAIPdSMfciSNVhjX8mAhl9g8xhkyrd
# uNziCLOn3+EEd2DI9Kw1yzHlbHVRxTd7E2pOlWuPQJ7ITT6uvVnFINbCeK23ZFs7
# 0MAVcDQU5cWephzH9P/2y0jB4o3zbs6qtKAwggZwMIIEWKADAgECAgphDFJMAAAA
# AAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz
# aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv
# cnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBB
# dXRob3JpdHkgMjAxMDAeFw0xMDA3MDYyMDQwMTdaFw0yNTA3MDYyMDUwMTdaMH4x
# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01p
# Y3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTAwggEiMA0GCSqGSIb3DQEBAQUA
# A4IBDwAwggEKAoIBAQDpDmRQeWe1xOP9CQBMnpSs91Zo6kTYz8VYT6mldnxtRbrT
# OZK0pB75+WWC5BfSj/1EnAjoZZPOLFWEv30I4y4rqEErGLeiS25JTGsVB97R0sKJ
# HnGUzbV/S7SvCNjMiNZrF5Q6k84mP+zm/jSYV9UdXUn2siou1YW7WT/4kLQrg3TK
# K7M7RuPwRknBF2ZUyRy9HcRVYldy+Ge5JSA03l2mpZVeqyiAzdWynuUDtWPTshTI
# wciKJgpZfwfs/w7tgBI1TBKmvlJb9aba4IsLSHfWhUfVELnG6Krui2otBVxgxrQq
# W5wjHF9F4xoUHm83yxkzgGqJTaNqZmN4k9Uwz5UfAgMBAAGjggHjMIIB3zAQBgkr
# BgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQU5vxfe7siAFjkck619CF0IzLm76wwGQYJ
# KwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF
# MAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYDVR0fBE8w
# TTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVj
# dHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEBBE4wTDBK
# BggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9N
# aWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwgZ0GA1UdIASBlTCBkjCBjwYJKwYB
# BAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v
# UEtJL2RvY3MvQ1BTL2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBn
# AGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABlAG0AZQBuAHQALiAdMA0GCSqG
# SIb3DQEBCwUAA4ICAQAadO9XTyl7xBaFeLhQ0yL8CZ2sgpf4NP8qLJeVEuXkv8+/
# k8jjNKnbgbjcHgC+0jVvr+V/eZV35QLU8evYzU4eG2GiwlojGvCMqGJRRWcI4z88
# HpP4MIUXyDlAptcOsyEp5aWhaYwik8x0mOehR0PyU6zADzBpf/7SJSBtb2HT3wfV
# 2XIALGmGdj1R26Y5SMk3YW0H3VMZy6fWYcK/4oOrD+Brm5XWfShRsIlKUaSabMi3
# H0oaDmmp19zBftFJcKq2rbtyR2MX+qbWoqaG7KgQRJtjtrJpiQbHRoZ6GD/oxR0h
# 1Xv5AiMtxUHLvx1MyBbvsZx//CJLSYpuFeOmf3Zb0VN5kYWd1dLbPXM18zyuVLJS
# R2rAqhOV0o4R2plnXjKM+zeF0dx1hZyHxlpXhcK/3Q2PjJst67TuzyfTtV5p+qQW
# BAGnJGdzz01Ptt4FVpd69+lSTfR3BU+FxtgL8Y7tQgnRDXbjI1Z4IiY2vsqxjG6q
# HeSF2kczYo+kyZEzX3EeQK+YZcki6EIhJYocLWDZN4lBiSoWD9dhPJRoYFLv1keZ
# oIBA7hWBdz6c4FMYGlAdOJWbHmYzEyc5F3iHNs5Ow1+y9T1HU7bg5dsLYT0q15Is
# zjdaPkBCMaQfEAjCVpy/JF1RAp1qedIX09rBlI4HeyVxRKsGaubUxt8jmpZ1xTGC
# FdcwghXTAgEBMIGVMH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u
# MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
# b24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTACEzMA
# AAFP58ZiyUb0qX8AAAAAAU8wDQYJYIZIAWUDBAIBBQCggcIwGQYJKoZIhvcNAQkD
# MQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJ
# KoZIhvcNAQkEMSIEIM6sGgl9EI3BKHGPaKRgrF1O/bVv8y7tQZuqLVzy8rFiMFYG
# CisGAQQBgjcCAQwxSDBGoCyAKgBBAGQAZAAtAEEAcABwAEQAZQB2AFAAYQBjAGsA
# YQBnAGUALgBwAHMAMaEWgBRodHRwOi8vbWljcm9zb2Z0LmNvbTANBgkqhkiG9w0B
# AQEFAASCAQB+h3AYSy8MV5bb3ZfjI9xGXZgMGVKhmRo9yYG3wIelD9RULoRtCN4J
# ScCz++xjjxhUEdJ57ZeRdobQGnjEKyepHccHJsnxiFXUqd8gHWN56LxVKXLK6lgH
# RnSmMm63Z/s6/qA7XdgHKjUGqG0MsZgFiX0DBfVQUQnPPPgkicc2xwWI1G4ZTDVn
# Qoi9zUNb1bvJJhcN1BlPcvKVrVOqBLLfsSDsYGMmLcrh0v9QkMPBefLexqGxoibs
# fvzJiwiCSRTRiC29aUrAP3s6EazYYP866d7F94qZfF5Qy8fy3RnnjErxD1PpgEVx
# EZus2pc23sNrQzNokH1A7q3beEKTKal8oYITTTCCE0kGCisGAQQBgjcDAwExghM5
# MIITNQYJKoZIhvcNAQcCoIITJjCCEyICAQMxDzANBglghkgBZQMEAgEFADCCAT0G
# CyqGSIb3DQEJEAEEoIIBLASCASgwggEkAgEBBgorBgEEAYRZCgMBMDEwDQYJYIZI
# AWUDBAIBBQAEIJPdm/WIYp5J5+KJJMbxhHziKQ+l8HJ9bF3jCZXkxTgaAgZY1UYJ
# UwIYEzIwMTcwNDIwMDAzMzU5LjY0NFowBwIBAYACAfSggbmkgbYwgbMxCzAJBgNV
# BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w
# HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIxJzAl
# BgNVBAsTHm5DaXBoZXIgRFNFIEVTTjpCOEVDLTMwQTQtNzE0NDElMCMGA1UEAxMc
# TWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaCCDtAwggZxMIIEWaADAgECAgph
# CYEqAAAAAAACMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UE
# CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z
# b2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZp
# Y2F0ZSBBdXRob3JpdHkgMjAxMDAeFw0xMDA3MDEyMTM2NTVaFw0yNTA3MDEyMTQ2
# NTVaMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
# EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNV
# BAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMIIBIjANBgkqhkiG9w0B
# AQEFAAOCAQ8AMIIBCgKCAQEAqR0NvHcRijog7PwTl/X6f2mUa3RUENWlCgCChfvt
# fGhLLF/Fw+Vhwna3PmYrW/AVUycEMR9BGxqVHc4JE458YTBZsTBED/FgiIRUQwzX
# Tbg4CLNC3ZOs1nMwVyaCo0UN0Or1R4HNvyRgMlhgRvJYR4YyhB50YWeRX4FUsc+T
# TJLBxKZd0WETbijGGvmGgLvfYfxGwScdJGcSchohiq9LZIlQYrFd/XcfPfBXday9
# ikJNQFHRD5wGPmd/9WbAA5ZEfu/QS/1u5ZrKsajyeioKMfDaTgaRtogINeh4HLDp
# mc085y9Euqf03GS9pAHBIAmTeM38vMDJRF1eFpwBBU8iTQIDAQABo4IB5jCCAeIw
# EAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFNVjOlyKMZDzQ3t8RhvFM2hahW1V
# MBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAPBgNVHRMB
# Af8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYGA1Ud
# HwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3By
# b2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQRO
# MEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2Vy
# dHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MIGgBgNVHSABAf8EgZUwgZIw
# gY8GCSsGAQQBgjcuAzCBgTA9BggrBgEFBQcCARYxaHR0cDovL3d3dy5taWNyb3Nv
# ZnQuY29tL1BLSS9kb2NzL0NQUy9kZWZhdWx0Lmh0bTBABggrBgEFBQcCAjA0HjIg
# HQBMAGUAZwBhAGwAXwBQAG8AbABpAGMAeQBfAFMAdABhAHQAZQBtAGUAbgB0AC4g
# HTANBgkqhkiG9w0BAQsFAAOCAgEAB+aIUQ3ixuCYP4FxAz2do6Ehb7Prpsz1Mb7P
# BeKp/vpXbRkws8LFZslq3/Xn8Hi9x6ieJeP5vO1rVFcIK1GCRBL7uVOMzPRgEop2
# zEBAQZvcXBf/XPleFzWYJFZLdO9CEMivv3/Gf/I3fVo/HPKZeUqRUgCvOA8X9S95
# gWXZqbVr5MfO9sp6AG9LMEQkIjzP7QOllo9ZKby2/QThcJ8ySif9Va8v/rbljjO7
# Yl+a21dA6fHOmWaQjP9qYn/dxUoLkSbiOewZSnFjnXshbcOco6I8+n99lmqQeKZt
# 0uGc+R38ONiU9MalCpaGpL2eGq4EQoO4tYCbIjggtSXlZOz39L9+Y1klD3ouOVd2
# onGqBooPiRa6YacRy5rYDkeagMXQzafQ732D8OE7cQnfXXSYIghh2rBQHm+98eEA
# 3+cxB6STOvdlR3jo+KhIq/fecn5ha293qYHLpwmsObvsxsvYgrRyzR30uIUBHoD7
# G4kqVDmyW9rIDVWZeodzOwjmmC3qjeAzLhIp9cAvVCch98isTtoouLGp25ayp0Ki
# yc8ZQU3ghvkqmqMRZjDTu3QyS99je/WZii8bxyGvWbWu3EQ8l1Bx16HSxVXjad5X
# wdHeMMD9zOZN+w2/XU/pnR4ZOC+8z1gFLu8NoFA12u8JJxzVs341Hgi62jbb01+P
# 3nSISRIwggTaMIIDwqADAgECAhMzAAAAn2fytagjBlt7AAAAAACfMA0GCSqGSIb3
# DQEBCwUAMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAk
# BgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMB4XDTE2MDkwNzE3
# NTY0N1oXDTE4MDkwNzE3NTY0N1owgbMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpX
# YXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg
# Q29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIxJzAlBgNVBAsTHm5DaXBoZXIgRFNF
# IEVTTjpCOEVDLTMwQTQtNzE0NDElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3Rh
# bXAgU2VydmljZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkI8SOc
# 3cQCLwKFoaMnl2T5A5wSVD9Tglq4Put9bhjFcsEn1XApDPCWS9aPhMcWOWKe+7EN
# I4Si4zD30nVQC9PZ0NDu+pK9XV83OfjGchFkKzOBRddOhpsQkxFgMF3RfLTNXAEq
# ffnNaReXwtVUkiGEJvW6KmABixzP0aeUVmJ6MHnJnmo+TKZdoVl7cg6TY6LCoze/
# F6rhOXmi/P3X/K3jHtmAaxL9Ou53jjDgO5Rjxt6ZEamdEsGF2SWZ6wH6Dmg9G6iZ
# Pxgw+mjODwReL6jwh7H2XhsvzoFMrSERMzIIf2eJGAM9C0GR0BZHyRti17QqL5Ta
# CuWPjMxTKXX4DlkCAwEAAaOCARswggEXMB0GA1UdDgQWBBT9ixsiw30jR3amHt/g
# ZtRS6bb5oDAfBgNVHSMEGDAWgBTVYzpcijGQ80N7fEYbxTNoWoVtVTBWBgNVHR8E
# TzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9k
# dWN0cy9NaWNUaW1TdGFQQ0FfMjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUHAQEETjBM
# MEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRz
# L01pY1RpbVN0YVBDQV8yMDEwLTA3LTAxLmNydDAMBgNVHRMBAf8EAjAAMBMGA1Ud
# JQQMMAoGCCsGAQUFBwMIMA0GCSqGSIb3DQEBCwUAA4IBAQBlEMFsa88VHq8PSDbr
# 3y0LvAAA5pFmGlCWZbkxD2WMqfF0y8fnlvgb874z8sz8QZzByCmY1jHyHTc98Zek
# z7L2Y5SANUIa8jyU36c64Ck5fY6Pe9hUA1RG/1zP+eq080chUPCF2zezhfwuz9Ob
# 0obO64BwW0GZgYYz1hjsq+DBkSCBRV59ryFpzgKRwhWF8quXtHDpimiJx+ds2VZS
# wEVk/QRY7pLuUvedN8P5DNuLaaRw3oJcs2Wxh2jWS5T8Y3JevUo3K3VTtHPi2IBW
# ISkEG7TOnNEUcUXDMGSOeZ27kuPFzKkDVbtzvwEVepkGrsZ1W+1xuDYPQ1b3BMG8
# C79HoYIDeTCCAmECAQEwgeOhgbmkgbYwgbMxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
# EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
# ZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIxJzAlBgNVBAsTHm5DaXBoZXIg
# RFNFIEVTTjpCOEVDLTMwQTQtNzE0NDElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUt
# U3RhbXAgU2VydmljZaIlCgEBMAkGBSsOAwIaBQADFQBs0ycI8vnZqMv5Gd6SS0qt
# 2xmjwaCBwjCBv6SBvDCBuTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0
# b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
# dGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMebkNpcGhlciBOVFMgRVNOOjU3
# RjYtQzFFMC01NTRDMSswKQYDVQQDEyJNaWNyb3NvZnQgVGltZSBTb3VyY2UgTWFz
# dGVyIENsb2NrMA0GCSqGSIb3DQEBBQUAAgUA3KJ+BDAiGA8yMDE3MDQyMDAwMjMz
# MloYDzIwMTcwNDIxMDAyMzMyWjB3MD0GCisGAQQBhFkKBAExLzAtMAoCBQDcon4E
# AgEAMAoCAQACAgIpAgH/MAcCAQACAhpTMAoCBQDco8+EAgEAMDYGCisGAQQBhFkK
# BAIxKDAmMAwGCisGAQQBhFkKAwGgCjAIAgEAAgMW42ChCjAIAgEAAgMHoSAwDQYJ
# KoZIhvcNAQEFBQADggEBAMNu8xSY3BVCszbhzYVReDYtQq5osuZNWMIQG3z0VMBy
# 2CesXSvJhJ3FRfaH8T1oXKkKtpMKWzYRvoSN2QFLxsrja3QAWFpK+L2tc3SZn0Fh
# oAbA3wrGX+PPZc+7KCe1011rLLU3jpU5p8WyXhoLNc0YpGT3Rf50P+J4mK0NCOQt
# weBieStXSi7fvfxd7AyOnd/Sl/qVXaVWc7RWrHOxwyb3VMgFwPy73WWELCmHmtDa
# zmZE+kX8uwFCweFCTZraxXf/QCZ6S6qxWsUbmgL3og4DWk3KHUFLaXUAJCbYLkv2
# 9/K2km3/D/pMnEuA97lLPkaTmS2qjPZ6OIwsefeQSvsxggL1MIIC8QIBATCBkzB8
# MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk
# bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1N
# aWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAJ9n8rWoIwZbewAAAAAA
# nzANBglghkgBZQMEAgEFAKCCATIwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEE
# MC8GCSqGSIb3DQEJBDEiBCDOKIBEM8xfNhB0LPgIdV4IVpvEHSpJJY1OElQEf/7o
# 8TCB4gYLKoZIhvcNAQkQAgwxgdIwgc8wgcwwgbEEFGzTJwjy+dmoy/kZ3pJLSq3b
# GaPBMIGYMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
# EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
# bjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAACf
# Z/K1qCMGW3sAAAAAAJ8wFgQUuddYY/HPCoksb/xOBDjdPXlDGMEwDQYJKoZIhvcN
# AQELBQAEggEAO+i4nAivWpc98DvCdqDpFvPa1+YQ+w4w59An08W8QDzLFvr4nDLz
# SdXYQKnWFQaSI6qf81pe2tHfc4uehs/nbfFRK9CiVi321Ao7B31szkLCLWnClG7l
# Ar+FQv0vFx6cIe2fOZeobsm1GDsiAroe6MGz3wAM4LzuZ3FkO1i9K1RlrBrN+28C
# bjXmHksJHQNMBcGOLbRDrmpfrc6ijKjheepQekxBxfboGc0B57MM+LRIL2GC8mdn
# Q6Iv/mcJnYW1pjLzlnRRqW32fjjKa/iygkVsU+aNrj3XxLU4GyDsV5NWBLl5LJ7z
# dd+w7o1/PK5+wn4z52qQvpLt6luLRdHq9Q==
# SIG # End signature block

View File

@ -1,5 +1,5 @@
MainPackage=C:\Users\geoff\Source\Repos\kiwix-html5-windows\bin\Release\KiwixWebApp_0.3.0.0_AnyCPU.appx
ResourcePack=C:\Users\geoff\Source\Repos\kiwix-html5-windows\bin\Release\KiwixWebApp_0.3.0.0_scale-100.appx
ResourcePack=C:\Users\geoff\Source\Repos\kiwix-html5-windows\bin\Release\KiwixWebApp_0.3.0.0_scale-125.appx
ResourcePack=C:\Users\geoff\Source\Repos\kiwix-html5-windows\bin\Release\KiwixWebApp_0.3.0.0_scale-150.appx
ResourcePack=C:\Users\geoff\Source\Repos\kiwix-html5-windows\bin\Release\KiwixWebApp_0.3.0.0_scale-400.appx
MainPackage=C:\Users\geoff\Source\Repos\kiwix-html5-windows\bin\Release\KiwixWebApp_0.4.0.0_AnyCPU.appx
ResourcePack=C:\Users\geoff\Source\Repos\kiwix-html5-windows\bin\Release\KiwixWebApp_0.4.0.0_scale-100.appx
ResourcePack=C:\Users\geoff\Source\Repos\kiwix-html5-windows\bin\Release\KiwixWebApp_0.4.0.0_scale-125.appx
ResourcePack=C:\Users\geoff\Source\Repos\kiwix-html5-windows\bin\Release\KiwixWebApp_0.4.0.0_scale-150.appx
ResourcePack=C:\Users\geoff\Source\Repos\kiwix-html5-windows\bin\Release\KiwixWebApp_0.4.0.0_scale-400.appx

View File

@ -55,7 +55,7 @@
<MinimumVisualStudioVersion>$(VersionNumberMajor).$(VersionNumberMinor)</MinimumVisualStudioVersion>
<DefaultLanguage>en-gb</DefaultLanguage>
<PackageCertificateKeyFile>KiwixWebApp_TemporaryKey.pfx</PackageCertificateKeyFile>
<AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>
<AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>
<AppxSymbolPackageEnabled>False</AppxSymbolPackageEnabled>
<AppxBundle>Always</AppxBundle>
<AppxBundlePlatforms>neutral</AppxBundlePlatforms>

View File

@ -7,7 +7,7 @@
For more information on package manifest files, see http://go.microsoft.com/fwlink/?LinkID=241727
-->
<Identity Name="a1a5e0b9-13d4-41fb-810d-518949f03df4" Version="0.3.0.0" Publisher="CN=geoff" ProcessorArchitecture="neutral" />
<Identity Name="a1a5e0b9-13d4-41fb-810d-518949f03df4" Version="0.4.0.0" Publisher="CN=geoff" ProcessorArchitecture="neutral" />
<mp:PhoneIdentity PhoneProductId="a1a5e0b9-13d4-41fb-810d-518949f03df4" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties>
<DisplayName>Kiwix JS</DisplayName>
@ -33,7 +33,6 @@
<uap:ShowOn Tile="square310x310Logo" />
</uap:ShowNameOnTiles>
</uap:DefaultTile>
<uap:LockScreen Notification="badge" BadgeLogo="images\BadgeLogo.png" />
<uap:SplashScreen Image="images\splashscreen.png" BackgroundColor="transparent" />
<uap:InitialRotationPreference>
<uap:Rotation Preference="portrait" />

View File

@ -20,45 +20,40 @@
<WindowsSdkPath>
</WindowsSdkPath>
<LayoutDir>C:\Users\geoff\Source\Repos\kiwix-html5-windows\bin\Release\AppX</LayoutDir>
<RegisteredManifestChecksum>3F3A982E681E889AE2A5AD292DD7EA55CCC80D8157EC9CCCFCD22590D4576300</RegisteredManifestChecksum>
<RegisteredPackageMoniker>a1a5e0b9-13d4-41fb-810d-518949f03df4_0.3.0.0_neutral__zfxmafgedzx24</RegisteredPackageMoniker>
<RegisteredManifestChecksum>4543F2C71E6E7C0563DF592ADDB2309633FEF7DFA5B84DA8E46333B0E2CA1FA3</RegisteredManifestChecksum>
<RegisteredPackageMoniker>a1a5e0b9-13d4-41fb-810d-518949f03df4_0.4.0.0_neutral__zfxmafgedzx24</RegisteredPackageMoniker>
<RegisteredUserModeAppID>a1a5e0b9-13d4-41fb-810d-518949f03df4_zfxmafgedzx24!App</RegisteredUserModeAppID>
<RegisteredPackageID>a1a5e0b9-13d4-41fb-810d-518949f03df4</RegisteredPackageID>
<RegisteredPackagePublisher>CN=geoff</RegisteredPackagePublisher>
<RegisteredVersion>0.3.0.0</RegisteredVersion>
<RegisteredVersion>0.4.0.0</RegisteredVersion>
<JitOptimizationSuppressed>True</JitOptimizationSuppressed>
</PropertyGroup>
<ItemGroup>
<AppXManifest Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\bin\Release\AppxManifest.xml">
<PackagePath>AppxManifest.xml</PackagePath>
<ReRegisterAppIfChanged>true</ReRegisterAppIfChanged>
<Modified>2017-06-25T17:40:19.724</Modified>
<Modified>2017-06-25T20:20:46.853</Modified>
</AppXManifest>
</ItemGroup>
<ItemGroup>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\images\BadgeLogo.scale-100.png">
<PackagePath>images\BadgeLogo.scale-100.png</PackagePath>
<ReRegisterAppIfChanged>true</ReRegisterAppIfChanged>
<Modified>2017-06-16T16:31:46.516</Modified>
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\images\BadgeLogo.scale-125.png">
<PackagePath>images\BadgeLogo.scale-125.png</PackagePath>
<ReRegisterAppIfChanged>true</ReRegisterAppIfChanged>
<Modified>2017-06-16T16:31:46.518</Modified>
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\images\BadgeLogo.scale-150.png">
<PackagePath>images\BadgeLogo.scale-150.png</PackagePath>
<ReRegisterAppIfChanged>true</ReRegisterAppIfChanged>
<Modified>2017-06-16T16:31:46.519</Modified>
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\images\BadgeLogo.scale-200.png">
<PackagePath>images\BadgeLogo.scale-200.png</PackagePath>
<ReRegisterAppIfChanged>true</ReRegisterAppIfChanged>
<Modified>2017-06-16T16:31:46.520</Modified>
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\images\BadgeLogo.scale-400.png">
<PackagePath>images\BadgeLogo.scale-400.png</PackagePath>
<ReRegisterAppIfChanged>true</ReRegisterAppIfChanged>
<Modified>2017-06-16T16:31:46.522</Modified>
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\images\LargeTile.scale-100.png">
@ -344,7 +339,7 @@
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\www\js\app.js">
<PackagePath>www\js\app.js</PackagePath>
<Modified>2017-06-25T17:39:52.565</Modified>
<Modified>2017-06-25T20:20:34.758</Modified>
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\www\js\init.js">
<PackagePath>www\js\init.js</PackagePath>
@ -356,7 +351,7 @@
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\www\js\lib\bootstrap.min.js">
<PackagePath>www\js\lib\bootstrap.min.js</PackagePath>
<Modified>2017-06-24T18:35:30.233</Modified>
<Modified>2017-06-25T20:11:47.640</Modified>
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\www\js\lib\cookies.js">
<PackagePath>www\js\lib\cookies.js</PackagePath>
@ -364,7 +359,7 @@
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\www\js\lib\jquery-3.2.1.slim.js">
<PackagePath>www\js\lib\jquery-3.2.1.slim.js</PackagePath>
<Modified>2017-06-24T18:35:30.412</Modified>
<Modified>2017-06-25T20:11:13.372</Modified>
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\www\js\lib\q.js">
<PackagePath>www\js\lib\q.js</PackagePath>
@ -372,7 +367,7 @@
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\www\js\lib\require.js">
<PackagePath>www\js\lib\require.js</PackagePath>
<Modified>2017-06-24T18:35:30.532</Modified>
<Modified>2017-06-25T20:12:30.923</Modified>
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\www\js\lib\uiUtil.js">
<PackagePath>www\js\lib\uiUtil.js</PackagePath>
@ -413,7 +408,7 @@
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\bin\Release\ReverseMap\resources.pri">
<PackagePath>resources.pri</PackagePath>
<ReRegisterAppIfChanged>true</ReRegisterAppIfChanged>
<Modified>2017-06-25T15:05:55.819</Modified>
<Modified>2017-06-25T20:20:19.314</Modified>
</AppxPackagedFile>
</ItemGroup>
<ItemGroup>

View File

@ -787,26 +787,25 @@ define(['jquery', 'zimArchiveLoader', 'util', 'uiUtil', 'cookies','abstractFiles
$("#articleContent").contents().scrollTop(0);
// Display the article inside the web page.
// Prevents unnecessary 404's being produced when iframe loads images
var $body = $(htmlArticle);
$body.find('img').each(function(){
var image = $(this);
// Prevents unnecessary 404's being produced when iframe loads images
$(image).attr("data-src", $(image).attr("src"));
$(image).removeAttr("src");
$(image).attr("data-height", $(image).attr("height"));//GK
$(image).removeAttr("height"); //GK
$(image).attr("data-width", $(image).attr("width"));//GK
$(image).removeAttr("width"); //GK
//GK restore image height and size
$(image).hide();
//$(image).attr("data-height", $(image).attr("height"));
//$(image).removeAttr("height");
//$(image).attr("data-width", $(image).attr("width"));
//$(image).removeAttr("width");
////Restore image height and size on image load
$(image).on("load", function (e) {
this.width = $(image).attr("data-width");
this.height = $(image).attr("data-height");
//this.width = $(image).attr("data-width");
//this.height = $(image).attr("data-height");
$(this).show();
});
});
// 404's should now only be produced on loading css and js
$('#articleContent').contents().find('body').html($body);
// If the ServiceWorker is not useable, we need to fallback to parse the DOM
// to inject math images, and replace some links with javascript calls

View File

@ -1,4 +1,4 @@
/*!
/*!
* Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2016 Twitter, Inc.
* Licensed under the MIT license

View File

@ -1,4 +1,4 @@
/*!
/*!
* jQuery JavaScript Library v3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector
* https://jquery.com/
*

View File

@ -1,4 +1,4 @@
/** vim: et:ts=4:sw=4:sts=4
/** vim: et:ts=4:sw=4:sts=4
* @license RequireJS 2.3.3 Copyright jQuery Foundation and other contributors.
* Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE
*/

View File

@ -7,7 +7,7 @@
For more information on package manifest files, see http://go.microsoft.com/fwlink/?LinkID=241727
-->
<Identity Name="a1a5e0b9-13d4-41fb-810d-518949f03df4" Version="0.3.0.0" Publisher="CN=geoff" ProcessorArchitecture="neutral" />
<Identity Name="a1a5e0b9-13d4-41fb-810d-518949f03df4" Version="0.4.0.0" Publisher="CN=geoff" ProcessorArchitecture="neutral" />
<mp:PhoneIdentity PhoneProductId="a1a5e0b9-13d4-41fb-810d-518949f03df4" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties>
<DisplayName>Kiwix JS</DisplayName>
@ -33,7 +33,6 @@
<uap:ShowOn Tile="square310x310Logo" />
</uap:ShowNameOnTiles>
</uap:DefaultTile>
<uap:LockScreen Notification="badge" BadgeLogo="images\BadgeLogo.png" />
<uap:SplashScreen Image="images\splashscreen.png" BackgroundColor="transparent" />
<uap:InitialRotationPreference>
<uap:Rotation Preference="portrait" />

View File

@ -7,7 +7,7 @@
For more information on package manifest files, see http://go.microsoft.com/fwlink/?LinkID=241727
-->
<Identity Name="a1a5e0b9-13d4-41fb-810d-518949f03df4" Version="0.3.0.0" Publisher="CN=geoff" ProcessorArchitecture="neutral" />
<Identity Name="a1a5e0b9-13d4-41fb-810d-518949f03df4" Version="0.4.0.0" Publisher="CN=geoff" ProcessorArchitecture="neutral" />
<mp:PhoneIdentity PhoneProductId="a1a5e0b9-13d4-41fb-810d-518949f03df4" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties>
<DisplayName>Kiwix JS</DisplayName>
@ -46,7 +46,6 @@
<uap:ShowOn Tile="square310x310Logo" />
</uap:ShowNameOnTiles>
</uap:DefaultTile>
<uap:LockScreen Notification="badge" BadgeLogo="images\BadgeLogo.png" />
<uap:SplashScreen Image="images\splashscreen.png" BackgroundColor="transparent" />
<uap:InitialRotationPreference>
<uap:Rotation Preference="portrait" />

View File

@ -27,23 +27,18 @@
<ItemGroup>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\images\BadgeLogo.scale-100.png">
<PackagePath>images\BadgeLogo.scale-100.png</PackagePath>
<ReRegisterAppIfChanged>true</ReRegisterAppIfChanged>
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\images\BadgeLogo.scale-125.png">
<PackagePath>images\BadgeLogo.scale-125.png</PackagePath>
<ReRegisterAppIfChanged>true</ReRegisterAppIfChanged>
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\images\BadgeLogo.scale-150.png">
<PackagePath>images\BadgeLogo.scale-150.png</PackagePath>
<ReRegisterAppIfChanged>true</ReRegisterAppIfChanged>
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\images\BadgeLogo.scale-200.png">
<PackagePath>images\BadgeLogo.scale-200.png</PackagePath>
<ReRegisterAppIfChanged>true</ReRegisterAppIfChanged>
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\images\BadgeLogo.scale-400.png">
<PackagePath>images\BadgeLogo.scale-400.png</PackagePath>
<ReRegisterAppIfChanged>true</ReRegisterAppIfChanged>
</AppxPackagedFile>
<AppxPackagedFile Include="C:\Users\geoff\Source\Repos\kiwix-html5-windows\images\LargeTile.scale-100.png">
<PackagePath>images\LargeTile.scale-100.png</PackagePath>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,53 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='C:\ProgramData\Windows App Certification Kit\results.xsl'?>
<REPORT xml:lang="en-GB" OVERALL_RESULT="PASS" VERSION="10.0.15063.137" LATEST_VERSION="TRUE" UPDATE_DOWNLOAD_URL="" TOOLSET_ARCHITECTURE="x64" SecureBoot="FALSE" APP_TYPE="UapApp" PUBLISHER_DISPLAY_NAME="CN=geoff" APP_NAME="" APP_VERSION="" OSVERSION="10.0.15063.0" OS="Microsoft Windows 10 Pro" PER_USER_APPLICATION="" PARTIAL_RUN="FALSE" LCID="2057" VALIDATION_TYPE="UI" ReportGenerationTime="16-6-2017 6:16:28 pm" ID="1c6a3bc61063495ef71dda3267cd7bd5">
<REPORT xml:lang="en-GB" OVERALL_RESULT="FAIL" VERSION="10.0.15063.137" LATEST_VERSION="TRUE" UPDATE_DOWNLOAD_URL="" TOOLSET_ARCHITECTURE="x64" SecureBoot="FALSE" APP_TYPE="UapApp" PUBLISHER_DISPLAY_NAME="CN=geoff" APP_NAME="" APP_VERSION="" OSVERSION="10.0.15063.0" OS="Microsoft Windows 10 Pro" PER_USER_APPLICATION="" PARTIAL_RUN="FALSE" LCID="2057" VALIDATION_TYPE="UI" ReportGenerationTime="25-6-2017 9:08:49 pm" ID="3b857f818cd6692a59e39a2367c84be5">
<REQUIREMENTS>
<REQUIREMENT NUMBER="10" TITLE="Deployment and launch tests" RATIONALE="Application failures such as crashes and hangs are a major disruption to users and cause frustration. Eliminating such failures improves application stability and reliability, and overall, provides users with a better application experience.">
<TEST INDEX="50" NAME="Bytecode generation" DESCRIPTION="Byte code generation should be able to complete successfully for packages containing an HTML5 Windows Store app." EXECUTIONTIME="00h:00m:00s.88ms" OPTIONAL="FALSE">
<TEST INDEX="50" NAME="Bytecode generation" DESCRIPTION="Byte code generation should be able to complete successfully for packages containing an HTML5 Windows Store app." EXECUTIONTIME="00h:00m:01s.01ms" OPTIONAL="FALSE">
<MESSAGES>
<MESSAGE TEXT="File \\?\C:\Program Files\WindowsApps\a1a5e0b9-13d4-41fb-810d-518949f03df4_0.4.0.0_neutral__zfxmafgedzx24\www\js\lib\require.js has JavaScript syntax or other problems." />
<MESSAGE TEXT="File \\?\C:\Program Files\WindowsApps\a1a5e0b9-13d4-41fb-810d-518949f03df4_0.4.0.0_neutral__zfxmafgedzx24\www\js\lib\jquery-3.2.1.slim.js has JavaScript syntax or other problems." />
<MESSAGE TEXT="File \\?\C:\Program Files\WindowsApps\a1a5e0b9-13d4-41fb-810d-518949f03df4_0.4.0.0_neutral__zfxmafgedzx24\www\js\lib\bootstrap.min.js has JavaScript syntax or other problems." />
</MESSAGES>
<RESULT><![CDATA[FAIL]]></RESULT>
</TEST>
<TEST INDEX="79" NAME="Background tasks cancelation handler" DESCRIPTION="App should implement event handler to handle background task cancelation request." EXECUTIONTIME="00h:00m:21s.44ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="79" NAME="Background tasks cancelation handler" DESCRIPTION="App should implement event handler to handle background task cancelation request." EXECUTIONTIME="00h:00m:21s.15ms" OPTIONAL="FALSE">
<TEST INDEX="81" NAME="Platform version launch" DESCRIPTION="App should not mis-use OSVersionInfo API to provide users functionality that is specific to the OS." EXECUTIONTIME="00h:00m:17s.86ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="81" NAME="Platform version launch" DESCRIPTION="App should not mis-use OSVersionInfo API to provide users functionality that is specific to the OS." EXECUTIONTIME="00h:00m:17s.78ms" OPTIONAL="FALSE">
<TEST INDEX="47" NAME="App launch" DESCRIPTION="App launch tests." EXECUTIONTIME="00h:00m:17s.65ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="47" NAME="App launch" DESCRIPTION="App launch tests." EXECUTIONTIME="00h:00m:17s.67ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="21" NAME="Crashes and hangs" DESCRIPTION="Do not crash or hang during the testing process." EXECUTIONTIME="00h:00m:01s.82ms" OPTIONAL="FALSE">
<TEST INDEX="21" NAME="Crashes and hangs" DESCRIPTION="Do not crash or hang during the testing process." EXECUTIONTIME="00h:00m:01s.91ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
</REQUIREMENT>
<REQUIREMENT NUMBER="12" TITLE="Package compliance test" RATIONALE="The package manifest was missing one or more required attributes.">
<TEST INDEX="77" NAME="Application count" DESCRIPTION="One package should not define more than one app in the manifest." EXECUTIONTIME="00h:00m:00s.74ms" OPTIONAL="FALSE">
<TEST INDEX="77" NAME="Application count" DESCRIPTION="One package should not define more than one app in the manifest." EXECUTIONTIME="00h:00m:00s.73ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="31" NAME="App manifest" DESCRIPTION="App manifest must include valid entries for all required fields." EXECUTIONTIME="00h:00m:00s.81ms" OPTIONAL="FALSE">
<TEST INDEX="31" NAME="App manifest" DESCRIPTION="App manifest must include valid entries for all required fields." EXECUTIONTIME="00h:00m:00s.83ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="74" NAME="Bundle manifest" DESCRIPTION="Bundle manifest must include valid entries for all required fields." EXECUTIONTIME="00h:00m:00s.97ms" OPTIONAL="FALSE">
<TEST INDEX="74" NAME="Bundle manifest" DESCRIPTION="Bundle manifest must include valid entries for all required fields." EXECUTIONTIME="00h:00m:01s.01ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="75" NAME="Package size" DESCRIPTION="Package file size should not be greater than 4 gigabytes." EXECUTIONTIME="00h:00m:01s.13ms" OPTIONAL="FALSE">
<TEST INDEX="75" NAME="Package size" DESCRIPTION="Package file size should not be greater than 4 gigabytes." EXECUTIONTIME="00h:00m:00s.93ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="83" NAME="Restricted namespace" DESCRIPTION="Check if any restricted namespace is referenced in the appx manifest." EXECUTIONTIME="00h:00m:00s.78ms" OPTIONAL="FALSE">
<TEST INDEX="83" NAME="Restricted namespace" DESCRIPTION="Check if any restricted namespace is referenced in the appx manifest." EXECUTIONTIME="00h:00m:00s.82ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
</REQUIREMENT>
<REQUIREMENT NUMBER="14" TITLE="Windows security features test" RATIONALE="Applications must opt-into Windows security features.">
<TEST INDEX="33" NAME="Binary analyzer" DESCRIPTION="Analysis of security features enabled on binaries" EXECUTIONTIME="00h:00m:01s.14ms" OPTIONAL="FALSE">
<TEST INDEX="33" NAME="Binary analyzer" DESCRIPTION="Analysis of security features enabled on binaries" EXECUTIONTIME="00h:00m:01s.13ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
@ -55,23 +59,23 @@
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="62" NAME="Private code signing" DESCRIPTION="App should not package private code signing key files." EXECUTIONTIME="00h:00m:00s.78ms" OPTIONAL="FALSE">
<TEST INDEX="62" NAME="Private code signing" DESCRIPTION="App should not package private code signing key files." EXECUTIONTIME="00h:00m:00s.82ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
</REQUIREMENT>
<REQUIREMENT NUMBER="15" TITLE="Supported API test" RATIONALE="The application should only refer to the APIs allowed by the Windows SDK for Windows Store Apps.">
<TEST INDEX="38" NAME="Supported APIs" DESCRIPTION="Windows Store App must only use supported platform APIs." EXECUTIONTIME="00h:00m:00s.95ms" OPTIONAL="FALSE">
<TEST INDEX="38" NAME="Supported APIs" DESCRIPTION="Windows Store App must only use supported platform APIs." EXECUTIONTIME="00h:00m:00s.94ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
</REQUIREMENT>
<REQUIREMENT NUMBER="19" TITLE="App manifest resources tests" RATIONALE="The App Package Manifest should have valid resources defined in the resources.pri file, as per the App Packaging Specification and App Manifest Schema.">
<TEST INDEX="45" NAME="App resources" DESCRIPTION="The package should have valid resources defined in the resources.pri file." EXECUTIONTIME="00h:00m:00s.73ms" OPTIONAL="FALSE">
<TEST INDEX="45" NAME="App resources" DESCRIPTION="The package should have valid resources defined in the resources.pri file." EXECUTIONTIME="00h:00m:00s.69ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="61" NAME="Branding" DESCRIPTION="App should not use the default images packed by windows SDK samples or Visual Studio." EXECUTIONTIME="00h:00m:01s.31ms" OPTIONAL="FALSE">
<TEST INDEX="61" NAME="Branding" DESCRIPTION="App should not use the default images packed by windows SDK samples or Visual Studio." EXECUTIONTIME="00h:00m:01s.36ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
@ -83,9 +87,13 @@
</TEST>
</REQUIREMENT>
<REQUIREMENT NUMBER="21" TITLE="File encoding test" RATIONALE="Packages containing an HTML5 Windows Store app must have correct file encoding.">
<TEST INDEX="49" NAME="UTF-8 file encoding" DESCRIPTION="Packages containing an HTML5 Windows Store app must have correct file encoding." EXECUTIONTIME="00h:00m:00s.91ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
<TEST INDEX="49" NAME="UTF-8 file encoding" DESCRIPTION="Packages containing an HTML5 Windows Store app must have correct file encoding." EXECUTIONTIME="00h:00m:00s.82ms" OPTIONAL="FALSE">
<MESSAGES>
<MESSAGE TEXT="File c:\program files\windowsapps\a1a5e0b9-13d4-41fb-810d-518949f03df4_0.4.0.0_neutral__zfxmafgedzx24\www\js\lib\bootstrap.min.js is not properly UTF-8 encoded. Re-save the file as UTF-8 (including Byte Order Mark)." />
<MESSAGE TEXT="File c:\program files\windowsapps\a1a5e0b9-13d4-41fb-810d-518949f03df4_0.4.0.0_neutral__zfxmafgedzx24\www\js\lib\jquery-3.2.1.slim.js is not properly UTF-8 encoded. Re-save the file as UTF-8 (including Byte Order Mark)." />
<MESSAGE TEXT="File c:\program files\windowsapps\a1a5e0b9-13d4-41fb-810d-518949f03df4_0.4.0.0_neutral__zfxmafgedzx24\www\js\lib\require.js is not properly UTF-8 encoded. Re-save the file as UTF-8 (including Byte Order Mark)." />
</MESSAGES>
<RESULT><![CDATA[FAIL]]></RESULT>
</TEST>
</REQUIREMENT>
<REQUIREMENT NUMBER="23" TITLE="App Capabilities test" RATIONALE="Packages declaring special-use capabilities will have to provide justifications during the onboarding process.">
@ -95,23 +103,23 @@
</TEST>
</REQUIREMENT>
<REQUIREMENT NUMBER="24" TITLE="Windows Runtime metadata validation" RATIONALE="Metadata needs to be conformant and consistent across all generation sources.">
<TEST INDEX="56" NAME="ExclusiveTo attribute" DESCRIPTION="A class must not implement an interface that is marked ExclusiveTo another class." EXECUTIONTIME="00h:00m:08s.00ms" OPTIONAL="FALSE">
<TEST INDEX="56" NAME="ExclusiveTo attribute" DESCRIPTION="A class must not implement an interface that is marked ExclusiveTo another class." EXECUTIONTIME="00h:00m:08s.18ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="57" NAME="Type location" DESCRIPTION="Types must be defined in the metadata file with the longest matching namespace." EXECUTIONTIME="00h:00m:00s.78ms" OPTIONAL="FALSE">
<TEST INDEX="57" NAME="Type location" DESCRIPTION="Types must be defined in the metadata file with the longest matching namespace." EXECUTIONTIME="00h:00m:00s.76ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="55" NAME="Type name case-sensitivity" DESCRIPTION="Namespace and type names must not vary only by casing." EXECUTIONTIME="00h:00m:00s.74ms" OPTIONAL="FALSE">
<TEST INDEX="55" NAME="Type name case-sensitivity" DESCRIPTION="Namespace and type names must not vary only by casing." EXECUTIONTIME="00h:00m:00s.81ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="54" NAME="Type name correctness" DESCRIPTION="Only system types can be in the Windows namespace and no types can be in the global namespace." EXECUTIONTIME="00h:00m:00s.74ms" OPTIONAL="FALSE">
<TEST INDEX="54" NAME="Type name correctness" DESCRIPTION="Only system types can be in the Windows namespace and no types can be in the global namespace." EXECUTIONTIME="00h:00m:00s.81ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="58" NAME="General metadata correctness" DESCRIPTION="Metadata files must meet various requirements in order to be valid and correct." EXECUTIONTIME="00h:00m:07s.14ms" OPTIONAL="FALSE">
<TEST INDEX="58" NAME="General metadata correctness" DESCRIPTION="Metadata files must meet various requirements in order to be valid and correct." EXECUTIONTIME="00h:00m:07s.23ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
@ -121,17 +129,17 @@
</TEST>
</REQUIREMENT>
<REQUIREMENT NUMBER="25" TITLE="Package sanity test" RATIONALE="Validation of the app package contents to ensure correctness.">
<TEST INDEX="63" NAME="Platform appropriate files" DESCRIPTION="App should not install files that do not match the target processor architecture." EXECUTIONTIME="00h:00m:00s.77ms" OPTIONAL="FALSE">
<TEST INDEX="63" NAME="Platform appropriate files" DESCRIPTION="App should not install files that do not match the target processor architecture." EXECUTIONTIME="00h:00m:00s.82ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
<TEST INDEX="66" NAME="Supported directory structure check" DESCRIPTION="Validate each file in the package for that the file name length should be less than MAX_PATH." EXECUTIONTIME="00h:00m:01s.07ms" OPTIONAL="FALSE">
<TEST INDEX="66" NAME="Supported directory structure check" DESCRIPTION="Validate each file in the package for that the file name length should be less than MAX_PATH." EXECUTIONTIME="00h:00m:00s.84ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
</REQUIREMENT>
<REQUIREMENT NUMBER="27" TITLE="Resource Usage Test" RATIONALE="WinJS background tasks need to call close() to free resource.">
<TEST INDEX="68" NAME="WinJS background task" DESCRIPTION="WinJS background tasks need to call close() to free resource." EXECUTIONTIME="00h:00m:00s.97ms" OPTIONAL="FALSE">
<TEST INDEX="68" NAME="WinJS background task" DESCRIPTION="WinJS background tasks need to call close() to free resource." EXECUTIONTIME="00h:00m:01s.34ms" OPTIONAL="FALSE">
<MESSAGES />
<RESULT><![CDATA[PASS]]></RESULT>
</TEST>
@ -139,12 +147,12 @@
</REQUIREMENTS>
<APPLICATIONS>
<Installed_Programs>
<Program Name="a1a5e0b9-13d4-41fb-810d-518949f03df4" Type="Application" Source="AppxPackage" Publisher="CN=geoff" Version="0.2.0.0" Language="2057" InstallDate="06/16/2017 17:13:04" OSVersionAtInstallTime="10.0.0.15063" RootDirPath="c:\program files\windowsapps\a1a5e0b9-13d4-41fb-810d-518949f03df4_0.2.0.0_neutral__zfxmafgedzx24" Id="0000ba9e1bda7573a9a70b3ca026aed201c500000908">
<Program Name="a1a5e0b9-13d4-41fb-810d-518949f03df4" Type="Application" Source="AppxPackage" Publisher="CN=geoff" Version="0.4.0.0" Language="2057" InstallDate="06/25/2017 20:04:17" OSVersionAtInstallTime="10.0.0.15063" RootDirPath="c:\program files\windowsapps\a1a5e0b9-13d4-41fb-810d-518949f03df4_0.4.0.0_neutral__zfxmafgedzx24" Id="0000b06cd1c82c87da629699be96c0c9af3800000908">
<Indicators>
<WindowsStoreAppManifestIndicators>
<PackageManifest PackageFullName="a1a5e0b9-13d4-41fb-810d-518949f03df4_0.2.0.0_neutral__zfxmafgedzx24">
<PackageManifest PackageFullName="a1a5e0b9-13d4-41fb-810d-518949f03df4_0.4.0.0_neutral__zfxmafgedzx24">
<Package>
<Identity Name="a1a5e0b9-13d4-41fb-810d-518949f03df4" Version="0.2.0.0" Publisher="CN=geoff" ProcessorArchitecture="neutral" />
<Identity Name="a1a5e0b9-13d4-41fb-810d-518949f03df4" Version="0.4.0.0" Publisher="CN=geoff" ProcessorArchitecture="neutral" />
<PhoneIdentity PhoneProductId="a1a5e0b9-13d4-41fb-810d-518949f03df4" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties>
<DisplayName>Kiwix JS</DisplayName>
@ -171,7 +179,6 @@
<ShowOn Tile="square310x310Logo" />
</ShowNameOnTiles>
</DefaultTile>
<LockScreen Notification="badge" BadgeLogo="images\BadgeLogo.png" />
<SplashScreen Image="images\splashscreen.png" BackgroundColor="transparent" />
<InitialRotationPreference>
<Rotation Preference="portrait" />
@ -191,30 +198,30 @@
</PackageManifest>
<BundleManifest PackageFamilyName="a1a5e0b9-13d4-41fb-810d-518949f03df4_zfxmafgedzx24">
<Bundle SchemaVersion="3.0">
<Identity Name="a1a5e0b9-13d4-41fb-810d-518949f03df4" Publisher="CN=geoff" Version="0.2.0.0" />
<Identity Name="a1a5e0b9-13d4-41fb-810d-518949f03df4" Publisher="CN=geoff" Version="0.4.0.0" />
<Packages>
<Package Type="application" Version="0.2.0.0" Architecture="neutral" FileName="KiwixWebApp_0.2.0.0_AnyCPU.appx" Offset="61" Size="719338">
<Package Type="application" Version="0.4.0.0" Architecture="neutral" FileName="KiwixWebApp_0.4.0.0_AnyCPU.appx" Offset="61" Size="692203">
<Resources>
<Resource Language="EN-GB" />
<Resource Scale="200" />
</Resources>
</Package>
<Package Type="resource" Version="0.2.0.0" ResourceId="split.scale-100" FileName="KiwixWebApp_0.2.0.0_scale-100.appx" Offset="719487" Size="100537">
<Package Type="resource" Version="0.4.0.0" ResourceId="split.scale-100" FileName="KiwixWebApp_0.4.0.0_scale-100.appx" Offset="692352" Size="100533">
<Resources>
<Resource Scale="100" />
</Resources>
</Package>
<Package Type="resource" Version="0.2.0.0" ResourceId="split.scale-125" FileName="KiwixWebApp_0.2.0.0_scale-125.appx" Offset="820112" Size="131673">
<Package Type="resource" Version="0.4.0.0" ResourceId="split.scale-125" FileName="KiwixWebApp_0.4.0.0_scale-125.appx" Offset="792973" Size="131668">
<Resources>
<Resource Scale="125" />
</Resources>
</Package>
<Package Type="resource" Version="0.2.0.0" ResourceId="split.scale-150" FileName="KiwixWebApp_0.2.0.0_scale-150.appx" Offset="951873" Size="161311">
<Package Type="resource" Version="0.4.0.0" ResourceId="split.scale-150" FileName="KiwixWebApp_0.4.0.0_scale-150.appx" Offset="924729" Size="161311">
<Resources>
<Resource Scale="150" />
</Resources>
</Package>
<Package Type="resource" Version="0.2.0.0" ResourceId="split.scale-400" FileName="KiwixWebApp_0.2.0.0_scale-400.appx" Offset="1113272" Size="619843">
<Package Type="resource" Version="0.4.0.0" ResourceId="split.scale-400" FileName="KiwixWebApp_0.4.0.0_scale-400.appx" Offset="1086128" Size="619837">
<Resources>
<Resource Scale="400" />
</Resources>
@ -231,35 +238,9 @@
</Installed_Programs>
</APPLICATIONS>
<DEPENDENCY_INFORMATION>
<AitStaticAnalysis ProgramId="0000ba9e1bda7573a9a70b3ca026aed201c500000904" AnalysisVersion="1.60" DictionaryVersion="3.1" Type="Package" Id="a1a5e0b9-13d4-41fb-810d-518949f03df4_0.2.0.0_neutral__zfxmafgedzx24">
<AitStaticAnalysis ProgramId="0000b06cd1c82c87da629699be96c0c9af3800000904" AnalysisVersion="1.60" DictionaryVersion="3.1" Type="Package" Id="a1a5e0b9-13d4-41fb-810d-518949f03df4_0.4.0.0_neutral__zfxmafgedzx24">
<AitFile ErrorCode="0" Name="util.js" Id="0000059af638663f2a1fbc93a8a4b0e598b2eecff8cc" />
<AitFile ErrorCode="0" Name="jquery-2.1.4.js" Id="0000077e9562d17f07beb6241a3c48bd62a5028ab433">
<AitCategory Id="WRTJavaScript">
<AitFeature Name="document.activeElement" />
<AitFeature Name="document.addEventListener" />
<AitFeature Name="document.createDocumentFragment" />
<AitFeature Name="document.createElement" />
<AitFeature Name="document.documentElement" />
<AitFeature Name="document.getElementById" />
<AitFeature Name="document.hasFocus" />
<AitFeature Name="document.head.appendChild" />
<AitFeature Name="document.readyState" />
<AitFeature Name="document.removeEventListener" />
<AitFeature Name="window.addEventListener" />
<AitFeature Name="window.attachEvent" />
<AitFeature Name="window.document.documentElement" />
<AitFeature Name="window.getComputedStyle" />
<AitFeature Name="window.getDefaultComputedStyle" />
<AitFeature Name="window.location.hash" />
<AitFeature Name="window.location.href" />
<AitFeature Name="window.pageXOffset" />
<AitFeature Name="window.pageYOffset" />
<AitFeature Name="window.removeEventListener" />
</AitCategory>
</AitFile>
<AitFile ErrorCode="0" Name="q.js" Id="0000304ac92007ab6c0e3f75d2d503b5a7077e2912f9" />
<AitFile ErrorCode="0" Name="init.js" Id="00003936a93e8de0b50ca95eaab38e1685eb358a4548" />
<AitFile ErrorCode="0" Name="require.js" Id="00003b0401b614bd130bd9b5efe691997ba6ddd23053">
<AitFile ErrorCode="0" Name="require.js" Id="0000210a9eb375f9cb5a66b49283d4ccaaab2ffaeb1d">
<AitCategory Id="WRTJavaScript">
<AitFeature Name="document.createElement" />
<AitFeature Name="document.createElementNS" />
@ -267,35 +248,7 @@
<AitFeature Name="navigator.platform" />
</AitCategory>
</AitFile>
<AitFile ErrorCode="0" Name="cookies.js" Id="0000439177fdc7a592c6780bb15983b2bff2ef9b3153">
<AitCategory Id="WRTJavaScript">
<AitFeature Name="document.cookie.replace" />
</AitCategory>
</AitFile>
<AitFile ErrorCode="0" Name="utf8.js" Id="0000496f1268db7e46f34f21168e789dcec280bcbd87" />
<AitFile ErrorCode="0" Name="zimDirEntry.js" Id="000059d70bd3c87a0870a07ab814029a6b4ad6778adb" />
<AitFile ErrorCode="0" Name="index.html" Id="00005e9268bba960f549f0504a2e4ac2976ae77b3a34" />
<AitFile ErrorCode="0" Name="zimArchiveLoader.js" Id="000062f6e39f2228d04b088eadf343121786bc79a297" />
<AitFile ErrorCode="0" Name="dummyArticle.html" Id="000080f5dfd8ab55bd82b77fe49d3f998a55232db24c" />
<AitFile ErrorCode="0" Name="xzdec_wrapper.js" Id="00008b2cc9eb16ceb2cc73ff044378aa95383a9046bf" />
<AitFile ErrorCode="0" Name="bootstrap.js" Id="0000a82f91d509809f3fbe859bd6d2c964a5ce948414">
<AitCategory Id="WRTJavaScript">
<AitFeature Name="document.body.clientWidth" />
<AitFeature Name="document.body.scrollTop" />
<AitFeature Name="document.body.style.paddingRight" />
<AitFeature Name="document.constructor" />
<AitFeature Name="document.createElement" />
<AitFeature Name="document.documentElement" />
<AitFeature Name="document.documentElement.clientHeight" />
<AitFeature Name="document.documentElement.getBoundingClientRect" />
<AitFeature Name="document.documentElement.scrollHeight" />
<AitFeature Name="document.documentElement.scrollTop" />
<AitFeature Name="document.getElementById" />
<AitFeature Name="window.innerWidth" />
</AitCategory>
</AitFile>
<AitFile ErrorCode="0" Name="abstractFilesystemAccess.js" Id="0000bbe1b37b87c542498b2cd2a4ba268b574fa6ec57" />
<AitFile ErrorCode="0" Name="app.js" Id="0000c7bd5a121d134c097a56509f629c7954ab9dadd6">
<AitFile ErrorCode="0" Name="app.js" Id="00002a8da19bc7ca5ccd3d2d3a5d85c0303a0805ccfe">
<AitCategory Id="WRTJavaScript">
<AitFeature Name="document.createElement" />
<AitFeature Name="document.createTextNode" />
@ -312,8 +265,7 @@
<AitFeature Name="window.timeoutKeyUpPrefix" />
</AitCategory>
</AitFile>
<AitFile ErrorCode="0" Name="zimArchive.js" Id="0000d3f9ab9efa31d01f8a70b8e26ec455ec2c5f57d5" />
<AitFile ErrorCode="0" Name="xzdec.js" Id="0000d540d033e939e0d868a1f82aef4bf8f0bdf96046">
<AitFile ErrorCode="0" Name="xzdec.js" Id="00002ebc4e41cc9765bfc84c0bb1c8b1ea980a616822">
<AitCategory Id="WRTJavaScript">
<AitFeature Name="document.addEventListener" />
<AitFeature Name="document.createElement" />
@ -330,6 +282,67 @@
<AitFeature Name="window.webkitURL" />
</AitCategory>
</AitFile>
<AitFile ErrorCode="0" Name="q.js" Id="0000304ac92007ab6c0e3f75d2d503b5a7077e2912f9" />
<AitFile ErrorCode="0" Name="init.js" Id="00003ba5b9c792c64c346675b72407e55d7d96ecdcac" />
<AitFile ErrorCode="0" Name="cookies.js" Id="0000439177fdc7a592c6780bb15983b2bff2ef9b3153">
<AitCategory Id="WRTJavaScript">
<AitFeature Name="document.cookie.replace" />
</AitCategory>
</AitFile>
<AitFile ErrorCode="0" Name="index.html" Id="000043e873a18f96bb68ed2faa792121d1d1ab0c4ac9" />
<AitFile ErrorCode="0" Name="utf8.js" Id="0000496f1268db7e46f34f21168e789dcec280bcbd87" />
<AitFile ErrorCode="0" Name="zimDirEntry.js" Id="000059d70bd3c87a0870a07ab814029a6b4ad6778adb" />
<AitFile ErrorCode="0" Name="zimArchiveLoader.js" Id="000062f6e39f2228d04b088eadf343121786bc79a297" />
<AitFile ErrorCode="0" Name="dummyArticle.html" Id="000080f5dfd8ab55bd82b77fe49d3f998a55232db24c" />
<AitFile ErrorCode="0" Name="xzdec_wrapper.js" Id="00008b2cc9eb16ceb2cc73ff044378aa95383a9046bf" />
<AitFile ErrorCode="0" Name="bootstrap.min.js" Id="00008fb8a9319055253d085edfc3bb72d20f614ec709">
<AitCategory Id="WRTJavaScript">
<AitFeature Name="document.body.clientWidth" />
<AitFeature Name="document.body.scrollTop" />
<AitFeature Name="document.body.style.paddingRight" />
<AitFeature Name="document.constructor" />
<AitFeature Name="document.createElement" />
<AitFeature Name="document.documentElement" />
<AitFeature Name="document.documentElement.clientHeight" />
<AitFeature Name="document.documentElement.getBoundingClientRect" />
<AitFeature Name="document.documentElement.scrollHeight" />
<AitFeature Name="document.documentElement.scrollTop" />
<AitFeature Name="document.getElementById" />
<AitFeature Name="window.SVGElement" />
<AitFeature Name="window.innerWidth" />
</AitCategory>
</AitFile>
<AitFile ErrorCode="0" Name="jquery-3.2.1.slim.js" Id="00009a6bf8c5b5156f3309f686aba1f7443c6ff9e204">
<AitCategory Id="WRTJavaScript">
<AitFeature Name="document.activeElement" />
<AitFeature Name="document.addEventListener" />
<AitFeature Name="document.createComment" />
<AitFeature Name="document.createDocumentFragment" />
<AitFeature Name="document.createElement" />
<AitFeature Name="document.defaultView" />
<AitFeature Name="document.documentElement" />
<AitFeature Name="document.documentElement.doScroll" />
<AitFeature Name="document.getElementById" />
<AitFeature Name="document.getElementsByClassName" />
<AitFeature Name="document.getElementsByName" />
<AitFeature Name="document.hasFocus" />
<AitFeature Name="document.implementation" />
<AitFeature Name="document.implementation.createHTMLDocument" />
<AitFeature Name="document.location.href" />
<AitFeature Name="document.querySelectorAll" />
<AitFeature Name="document.readyState" />
<AitFeature Name="document.removeEventListener" />
<AitFeature Name="window.addEventListener" />
<AitFeature Name="window.clearTimeout" />
<AitFeature Name="window.console.warn" />
<AitFeature Name="window.getComputedStyle" />
<AitFeature Name="window.location.hash" />
<AitFeature Name="window.removeEventListener" />
<AitFeature Name="window.setTimeout" />
</AitCategory>
</AitFile>
<AitFile ErrorCode="0" Name="abstractFilesystemAccess.js" Id="0000bbe1b37b87c542498b2cd2a4ba268b574fa6ec57" />
<AitFile ErrorCode="0" Name="zimArchive.js" Id="0000d3f9ab9efa31d01f8a70b8e26ec455ec2c5f57d5" />
<AitFile ErrorCode="0" Name="uiUtil.js" Id="0000eb7a92b17f457693c497b4017759948375d270ef">
<AitCategory Id="WRTJavaScript">
<AitFeature Name="URL.createObjectURL" />

View File

@ -790,17 +790,13 @@ define(['jquery', 'zimArchiveLoader', 'util', 'uiUtil', 'cookies','abstractFiles
var $body = $(htmlArticle);
$body.find('img').each(function(){
var image = $(this);
// Prevents unnecessary 404's being produced when iframe loads images
// Prevents unnecessary 404's being produced when iframe loads images [kiwix-js #272]
$(image).attr("data-src", $(image).attr("src"));
$(image).removeAttr("src");
$(image).attr("data-height", $(image).attr("height"));
$(image).removeAttr("height");
$(image).attr("data-width", $(image).attr("width"));
$(image).removeAttr("width");
//Restore image height and size on image load
$(image).hide(); //Hide images to prevent occupying whitespace
//Restore hidden images on load
$(image).on("load", function (e) {
this.width = $(image).attr("data-width");
this.height = $(image).attr("data-height");
$(this).show();
});
});
$('#articleContent').contents().find('body').html($body);
@ -869,7 +865,7 @@ define(['jquery', 'zimArchiveLoader', 'util', 'uiUtil', 'cookies','abstractFiles
var image = $(this);
// It's a standard image contained in the ZIM file
// We try to find its name (from an absolute or relative URL)
var imageMatch = image.attr('data-src').match(regexpImageUrl);
var imageMatch = image.attr('data-src').match(regexpImageUrl); //kiwix-js #272
if (imageMatch) {
var title = decodeURIComponent(imageMatch[1]);
selectedArchive.getDirEntryByTitle(title).then(function(dirEntry) {

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
C:\Users\geoff\Source\Repos\kiwix-html5-windows\AppPackages\KiwixWebApp_0.3.0.0_Test\KiwixWebApp_0.3.0.0_AnyCPU.appxbundle
C:\Users\geoff\Source\Repos\kiwix-html5-windows\AppPackages\KiwixWebApp_0.4.0.0_Test\KiwixWebApp_0.4.0.0_AnyCPU.appxbundle

View File

@ -19,9 +19,9 @@
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\uiUtil.js" "www\js\lib\uiUtil.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\require.js" "www\js\lib\require.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\q.js" "www\js\lib\q.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\jquery-2.1.4.js" "www\js\lib\jquery-2.1.4.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\jquery-3.2.1.slim.js" "www\js\lib\jquery-3.2.1.slim.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\cookies.js" "www\js\lib\cookies.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\bootstrap.js" "www\js\lib\bootstrap.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\bootstrap.min.js" "www\js\lib\bootstrap.min.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\abstractFilesystemAccess.js" "www\js\lib\abstractFilesystemAccess.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\img\spinner.gif" "www\img\spinner.gif"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\img\Kiwix_icon_transparent_600x600.png" "www\img\Kiwix_icon_transparent_600x600.png"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -20,9 +20,9 @@
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\uiUtil.js" "www\js\lib\uiUtil.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\require.js" "www\js\lib\require.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\q.js" "www\js\lib\q.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\jquery-2.1.4.js" "www\js\lib\jquery-2.1.4.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\jquery-3.2.1.slim.js" "www\js\lib\jquery-3.2.1.slim.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\cookies.js" "www\js\lib\cookies.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\bootstrap.js" "www\js\lib\bootstrap.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\bootstrap.min.js" "www\js\lib\bootstrap.min.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\abstractFilesystemAccess.js" "www\js\lib\abstractFilesystemAccess.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\img\spinner.gif" "www\img\spinner.gif"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\img\Kiwix_icon_transparent_600x600.png" "www\img\Kiwix_icon_transparent_600x600.png"

View File

@ -15,9 +15,9 @@
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\uiUtil.js" "www\js\lib\uiUtil.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\require.js" "www\js\lib\require.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\q.js" "www\js\lib\q.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\jquery-2.1.4.js" "www\js\lib\jquery-2.1.4.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\jquery-3.2.1.slim.js" "www\js\lib\jquery-3.2.1.slim.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\cookies.js" "www\js\lib\cookies.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\bootstrap.js" "www\js\lib\bootstrap.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\bootstrap.min.js" "www\js\lib\bootstrap.min.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\lib\abstractFilesystemAccess.js" "www\js\lib\abstractFilesystemAccess.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\init.js" "www\js\init.js"
"C:\Users\geoff\Source\Repos\kiwix-html5-windows\bld\Release\PackageLayout\www\js\app.js" "www\js\app.js"

Binary file not shown.

View File

@ -177,9 +177,9 @@
<Value>www\js\lib\abstractFilesystemAccess.js</Value>
</Candidate>
</NamedResource>
<NamedResource name="bootstrap.js" uri="ms-resource://a1a5e0b9-13d4-41fb-810d-518949f03df4/Files/www/js/lib/bootstrap.js">
<NamedResource name="bootstrap.min.js" uri="ms-resource://a1a5e0b9-13d4-41fb-810d-518949f03df4/Files/www/js/lib/bootstrap.min.js">
<Candidate type="Path">
<Value>www\js\lib\bootstrap.js</Value>
<Value>www\js\lib\bootstrap.min.js</Value>
</Candidate>
</NamedResource>
<NamedResource name="cookies.js" uri="ms-resource://a1a5e0b9-13d4-41fb-810d-518949f03df4/Files/www/js/lib/cookies.js">
@ -187,9 +187,9 @@
<Value>www\js\lib\cookies.js</Value>
</Candidate>
</NamedResource>
<NamedResource name="jquery-2.1.4.js" uri="ms-resource://a1a5e0b9-13d4-41fb-810d-518949f03df4/Files/www/js/lib/jquery-2.1.4.js">
<NamedResource name="jquery-3.2.1.slim.js" uri="ms-resource://a1a5e0b9-13d4-41fb-810d-518949f03df4/Files/www/js/lib/jquery-3.2.1.slim.js">
<Candidate type="Path">
<Value>www\js\lib\jquery-2.1.4.js</Value>
<Value>www\js\lib\jquery-3.2.1.slim.js</Value>
</Candidate>
</NamedResource>
<NamedResource name="q.js" uri="ms-resource://a1a5e0b9-13d4-41fb-810d-518949f03df4/Files/www/js/lib/q.js">

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,6 @@
<?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="a1a5e0b9-13d4-41fb-810d-518949f03df4" Version="0.3.0.0" Publisher="CN=geoff" />
<Identity Name="a1a5e0b9-13d4-41fb-810d-518949f03df4" Version="0.4.0.0" Publisher="CN=geoff" />
<mp:PhoneIdentity PhoneProductId="a1a5e0b9-13d4-41fb-810d-518949f03df4" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties>
<DisplayName>Kiwix JS</DisplayName>
@ -26,7 +26,6 @@
<uap:ShowOn Tile="square310x310Logo" />
</uap:ShowNameOnTiles>
</uap:DefaultTile>
<uap:LockScreen Notification="badge" BadgeLogo="images\BadgeLogo.png" />
<uap:SplashScreen Image="images\splashscreen.png" BackgroundColor="transparent" />
<uap:InitialRotationPreference>
<uap:Rotation Preference="portrait" />

View File

@ -1,4 +1,4 @@
/*!
/*!
* Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2016 Twitter, Inc.
* Licensed under the MIT license

View File

@ -1,4 +1,4 @@
/*!
/*!
* jQuery JavaScript Library v3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector
* https://jquery.com/
*

View File

@ -1,4 +1,4 @@
/** vim: et:ts=4:sw=4:sts=4
/** vim: et:ts=4:sw=4:sts=4
* @license RequireJS 2.3.3 Copyright jQuery Foundation and other contributors.
* Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE
*/