Download for iOS v1 (#1300)
* handle iOS scenario again * fixed logic * fix steps * add message * fix escaping * fix download button
This commit is contained in:
parent
0a1a90c1a1
commit
4a47a1676e
@ -1,6 +1,10 @@
|
|||||||
# Troubleshooting downloads with WebUSB
|
# Troubleshooting downloads with WebUSB
|
||||||
|
|
||||||
This is a troubleshooting to use [WebUSB](/usb/webusb).
|
### ~ avatar
|
||||||
|
|
||||||
|
Having issues pairing your @boardname@ with [WebUSB](/usb/webusb)? Let's try to figure out why!
|
||||||
|
|
||||||
|
### ~
|
||||||
|
|
||||||
## Step 1: Check your cable
|
## Step 1: Check your cable
|
||||||
|
|
||||||
@ -35,10 +39,11 @@ If the version is **0250** or higher, **you have the right firmware**. You can c
|
|||||||
|
|
||||||
1. Put your @boardname@ into **MAINTENANCE Mode**. To do this, unplug the USB cable from the @boardname@ and then re-connect the USB cable while you hold down the reset button. Once you insert the cable, you can release the reset button. You should now see a **MAINTENANCE** drive instead of the **MICROBIT** drive like before. Also, a yellow LED light will stay on next to the reset button.
|
1. Put your @boardname@ into **MAINTENANCE Mode**. To do this, unplug the USB cable from the @boardname@ and then re-connect the USB cable while you hold down the reset button. Once you insert the cable, you can release the reset button. You should now see a **MAINTENANCE** drive instead of the **MICROBIT** drive like before. Also, a yellow LED light will stay on next to the reset button.
|
||||||

|

|
||||||
2. **[Download the firmware .hex file](https://support.microbit.org/helpdesk/attachments/19008095092)**
|
2. **[Download the firmware ZIP file](https://github.com/ARMmbed/DAPLink/releases/download/v0250/0250_release_package_682d8303.zip)**
|
||||||
3. Drag and drop that file onto the **MAINTENANCE** drive.
|
3. Find the **0250_kl26z_microbit_0x8000.hex** in the downloaded zip file **0250_release_package_682d8303.zip**
|
||||||
4. The yellow LED will flash while the `HEX` file is copying. When the copy finishes, the LED will go off and the @boardname@ resets. The **MAINTENANCE** drive now changes back to **MICROBIT**.
|
4. Drag and drop that file onto the **MAINTENANCE** drive.
|
||||||
5. The upgrade is complete! You can open the **DETAILS.TXT** file to check and see that the firmware version changed to the match the version of the `HEX` file you copied.
|
5. The yellow LED will flash while the `HEX` file is copying. When the copy finishes, the LED will go off and the @boardname@ resets. The **MAINTENANCE** drive now changes back to **MICROBIT**.
|
||||||
|
6. The upgrade is complete! You can open the **DETAILS.TXT** file to check and see that the firmware version changed to the match the version of the `HEX` file you copied.
|
||||||
|
|
||||||
### ~hint
|
### ~hint
|
||||||
|
|
||||||
|
@ -938,17 +938,22 @@ namespace pxt.editor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function showUploadInstructionsAsync(fn: string, url: string, confirmAsync: (options: any) => Promise<number>) {
|
function showUploadInstructionsAsync(fn: string, url: string, confirmAsync: (options: any) => Promise<number>) {
|
||||||
const boardName = pxt.appTarget.appTheme.boardName || "???";
|
const boardName = Util.htmlEscape(pxt.appTarget.appTheme.boardName || "???");
|
||||||
const boardDriveName = pxt.appTarget.appTheme.driveDisplayName || pxt.appTarget.compile.driveName || "???";
|
const boardDriveName = Util.htmlEscape(pxt.appTarget.appTheme.driveDisplayName || pxt.appTarget.compile.driveName || "???");
|
||||||
|
|
||||||
// https://msdn.microsoft.com/en-us/library/cc848897.aspx
|
// https://msdn.microsoft.com/en-us/library/cc848897.aspx
|
||||||
// "For security reasons, data URIs are restricted to downloaded resources.
|
// "For security reasons, data URIs are restricted to downloaded resources.
|
||||||
// Data URIs cannot be used for navigation, for scripting, or to populate frame or iframe elements"
|
// Data URIs cannot be used for navigation, for scripting, or to populate frame or iframe elements"
|
||||||
|
const userDownload = pxt.BrowserUtils.isBrowserDownloadWithinUserContext();
|
||||||
const downloadAgain = !pxt.BrowserUtils.isIE() && !pxt.BrowserUtils.isEdge();
|
const downloadAgain = !pxt.BrowserUtils.isIE() && !pxt.BrowserUtils.isEdge();
|
||||||
const docUrl = pxt.appTarget.appTheme.usbDocs;
|
const docUrl = pxt.appTarget.appTheme.usbDocs;
|
||||||
|
|
||||||
const htmlBody = `
|
const body =
|
||||||
<div class="ui grid stackable">
|
userDownload
|
||||||
|
? lf("Click 'Download' to open the {0} app.", pxt.appTarget.appTheme.boardName || "")
|
||||||
|
: undefined;
|
||||||
|
const htmlBody = !userDownload ?
|
||||||
|
`<div class="ui grid stackable">
|
||||||
<div class="column sixteen wide">
|
<div class="column sixteen wide">
|
||||||
<div class="ui grid">
|
<div class="ui grid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -989,15 +994,15 @@ namespace pxt.editor {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>`;
|
</div>` : undefined;
|
||||||
|
|
||||||
const buttons: any[] = [];
|
const buttons: any[] = [];
|
||||||
|
|
||||||
if (downloadAgain) {
|
if (downloadAgain) {
|
||||||
buttons.push({
|
buttons.push({
|
||||||
label: fn,
|
label: userDownload ? lf("Download") : fn,
|
||||||
icon: "download",
|
icon: "download",
|
||||||
className: "lightgrey focused",
|
class: `${userDownload ? "primary" : "lightgrey"}`,
|
||||||
url,
|
url,
|
||||||
fileName: fn
|
fileName: fn
|
||||||
});
|
});
|
||||||
@ -1014,6 +1019,7 @@ namespace pxt.editor {
|
|||||||
|
|
||||||
return confirmAsync({
|
return confirmAsync({
|
||||||
header: lf("Download to your {0}", pxt.appTarget.appTheme.boardName),
|
header: lf("Download to your {0}", pxt.appTarget.appTheme.boardName),
|
||||||
|
body,
|
||||||
htmlBody,
|
htmlBody,
|
||||||
hasCloseIcon: true,
|
hasCloseIcon: true,
|
||||||
hideCancel: true,
|
hideCancel: true,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user