Skip to content

Commit 2ce084c

Browse files
authored
Live publish
2 parents 4cb8958 + 1fe6804 commit 2ce084c

15 files changed

+167
-5
lines changed

powerapps-docs/developer/data-platform/cli/reference/solution-command.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@ Commands for working with [Dataverse solution projects](../../../../maker/data-p
2424
|check|Perform static analysis check on the solutions against a set of best practices. It has the following parameters: <ul><li> *path*: Path to the solution zip file (alias: -p).</li><li> *outputDirectory*: Output directory where the solution zip file should be stored (alias: -o).</li><li> *geo*: The geographical ___location of the environment where the solution checker should run. It has the following values: *PreviewUnitedStates, UnitedStates,Europe, Asia, Australia, Japan, India, Canada, SouthAmerica, UnitedKingdom, France, Germany, UnitedArabEmirates, Switzerland, USGovernment, USGovernmentL4, USGovernmentL5DoD, China*</li><li> *ruleLevelOverride*: Path to the file containing a JSON array rules and levels to override. It has the following values: *Critical, High, Low, Medium, Informational*|`pac solution check --path c:\Users\Documents\Solution.zip --outputDirectory c:\samplepackage --geo UnitedStates`|
2525
|clone|Creates a solution project based on the existing solution project. It has the following parameters:<ul><li>*name*: The name of the solution to be exported.</li><li>*targetversion*: The version that the exported solution supports.</li><li>*include*: Settings that should be included in the solution being exported. It has the following values: *autonumbering, calendar, customization, emailtracking, externalapplications, general, isvconfig, marketing, outlooksynchronization, relationshiproles, sales*</li></ul>|`pac solution clone -–name sampleSolution --version 1.0.0.2 --include general`|
2626
|create-settings|Provides the ability to create a settings file that captures the environment variables and connection references in the setting. It has the following parameters: <ul><li>*solution-zip*: Absolute path name or relative path name to the exported solution file (alias: -z).</li><li>*solution-folder*: Folder ___location of the cloned solution on the filesystem, you can either use solution zip file or the solution folder ___location, not both together (alias: -f).</li><li> *settings-file*: Location of the file to be created with the environment variable and connection reference information. The format of the created file is JSON (alias: -s).</li></ul>|`pac solution create-settings --solution-zip C:\SampleSolution.zip --settings-file .\SampleDeploymentSettingsDev.json`|
27+
|delete| Deletes the solution from the current Dataverse environment. It has the following parameter: <ul><li>*solution-name*: Name of the solution you want to delete (alias: -sn).</li></ul>|`pac solution delete --solution-name Samplesolution`|
2728
|export|Exports a Dataverse solution from an environment. It requires that you be connected to an environment [Auth command](auth-command.md), and has the following parameters:<ul><li>*path*: Complete file name where the exported solution .zip file will be saved.</li><li>*name*: Name of the solution that needs to be exported.</li><li>*managed*: Defines whether the solution should be exported as a managed solution.</li><li>*targetversion*: The version that the exported solution supports.</li><li>*include*: Settings that should be included in the solution being exported.</li></ul>|`pac solution export --path c:\Users\Documents\Solution.zip --name SampleComponentSolution --managed true --targetversion 10.0.03 --include general`|
2829
|import|Imports a Dataverse solution to an environment. It requires that you be connected to an environment [Auth command](auth-command.md), and has the following parameters:<ul><li>*activate-plugins*: Activates plug-ins and workflows in the environment after the import (alias: -ap).</li><li>*async*: Imports the solution asynchronously (alias: -a).</li><li>*force-overwrite*: Forces an overwrite of unmanaged customizations (alias: -f). </li><li>*import-as-holding*: Imports the solution as a holding solution (alias: -h).</li><li>*max-async-wait-time*: Maximum asynchronous wait time in minutes. Default value is 60 minutes (alias: -wt).</li><li>*path*: Path to the solution .zip file. If not specified, assumes the current folder (alias: -p).</li><li>*publish-changes*: Publishes changes after successful import (alias: -pc). </li><li>*skip-dependency-check*: Skips the dependency check against dependencies flagged as product update (alias: -s). </li><li>*convert-to-managed*: This parameter does not take an unmanaged solution and import it as managed. This parameter will allow a managed solution that is being imported into an environment convert unmanaged components to managed. If this flag is not explicitly set, the solution system will fail the import request because managed layers cannot go on top of unmanaged base components. This switch will allow the solution import to succeed and the net result is that the inbound managed solution will be the base layer for each of these components – the components in the destination environment are converted from being an unmanaged component to being a managed component. </li></ul>|`pac solution import --path c:\Users\Documents\Solution.zip `|
2930
|init|Initializes the solution project. It has the following parameters:<ul><li>*publisher-name*: Publisher name of the organization.</li><li> *publisher-prefix*: Publisher prefix of the organization.</li></ul>|`pac solution init --publisher-name developer --publisher-prefix dev` |
3031
|list|Lists all solutions from a Dataverse environment. It requires that you be connected to an environment [Auth command](auth-command.md). This command has no parameters.|`pac solution list` |
32+
|online-version|Sets the solution version loaded in Dataverse environment. It has the following parameters:<ul><li>*solution-name*: Name of the solution you want to delete (alias: -sn).</li><li>*solution-version*: Specify the solution version (alias: -sv).</li></ul>|`pac solution online-version --solution-name Samplesolution --solution-version 1.0.0.2`|
3133
|pack|Provides the ability to pack files on a filesystem into a solution zip file. It has the following parameters: <ul><li>*zipfile*: Absolute path name or relative path name to the generated solution zip file (alias: -z).</li><li>*folder*: The path to the root folder on the local filesystem, this will be the folder from where the contents will be read from (alias: -f).</li><li> *packagetype*: Use to specify dual managed and unmanaged operation (alias: -p).</li> <li> *log*: The path to the log file (alias: -l).</li><li> *errorlevel*: Minimum logging level for log output. It has the following values: *Verbose, Info, Warning, Error, Off*. Default value is *Info* (alias: -e).</li><li> *singleComponent*: Performs the action on a single component type. It has the following values: *WebResource, Plugin, Workflow, None*. Default value is *None* (alias: -sc).</li><li> *allowDelete*: Specifies if the delete operations should occur or not. It has the following values: *Yes, No, Prompt*. Default is *Prompt* (alias: -ad).</li><li> *allowWrite*: Specifies if the write operations should occur or not. Default value is false (alias: -aw).</li><li> *clobber*: Enables to delete or overwrite the files that are marked as read-only. Default value is false (alias: -c).</li><li> *map*: The full path to the mapping XML file that reads component folders to pack (alias: -m).</li><li> *sourceLoc*: Generates a template resource file. It has the following values: *auto, LCID, ISO code* of the language you wish to export. When set, this will extract the string resources from the given locale as a neutral resx file. If auto or just the long or short form of the switch is specified the base locale for the solution will be used (alias: -src).</li><li> *localize*: Extract or merge all string resources into `.resx` files (alias: -loc)</li><li> *useLcid*: Use LCID's (1033) rather than ISO codes (en-US) for language files (alias: -lcid).</li><li> *useUnmanagedFileforMissingManaged*: Use the same XML source file when packaging for managed and only unmanaged XML file is found. Applies to `AppModuleSiteMap`, `AppModuleMap`, `FormXml` files (alias: -same).</li></ul>|`pac solution pack --zipfile C:\SampleSolution.zip --folder .\SampleSolutionUnpacked\.`|
3234
|publish|Publishes all the customizations.|`pac solution publish`|
3335
|unpack|Provides the ability to unpack solution zip files after they have been exported to the filesystem. It has the following parameters: <ul><li>*zipfile*: Absolute path name or relative path name to the exported solution file (alias: -z).</li><li>*folder*: The path to the root folder on the local filesystem. This will be the folder where the unpacked contents will be written (alias: -f).</li><li> *packagetype*: Use to specify dual managed and unmanaged operation (alias: -p).</li> <li> *log*: The path to the log file (alias: -l).</li><li> *errorlevel*: Minimum logging level for log output. It has the following values: *Verbose, Info, Warning, Error, Off*. Default value is *Info* (alias: -e).</li><li> *singleComponent*: Performs the action on a single component type. It has the following values: *WebResource, Plugin, Workflow, None*. Default value is *None* (alias: -sc).</li><li> *allowDelete*: Specifies if the delete operations should occur or not. It has the following values: *Yes, No, Prompt*. Default is *Prompt* (alias: -ad).</li><li> *allowWrite*: Specifies if the write operations should occur or not. Default value is false (alias: -aw).</li><li> *clobber*: Enables to delete or overwrite the files that are marked as read-only. Default value is false (alias: -c).</li><li> *map*: The full path to the mapping XML file that reads component folders to pack (alias: -m).</li><li> *sourceLoc*: Generates a template resource file. It has the following values: *auto, LCID, ISO code* of the language you wish to export. When set, this will extract the string resources from the given locale as a neutral resx file. If auto or just the long or short form of the switch is specified the base locale for the solution will be used (alias: -src).</li><li> *localize*: Extract or merge all string resources into `.resx` files (alias: -loc)</li><li> *useLcid*: Use LCID's (1033) rather than ISO codes (en-US) for language files (alias: -lcid).</li><li> *useUnmanagedFileforMissingManaged*: Use the same XML source file when packaging for managed and only unmanaged XML file is found. Applies to `AppModuleSiteMap`, `AppModuleMap`, `FormXml` files (alias: -same).</li></ul>|`pac solution unpack --zipfile C:\SampleSolution.zip --folder .\SampleSolutionUnpacked\.`|

powerapps-docs/maker/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,6 +1007,8 @@
10071007
href: ./canvas-apps/how-to/mobile-apps-view-shape-in-mr.md
10081008
- name: Create an app with address input and map controls
10091009
href: ./canvas-apps/how-to/mobile-apps-address-map.md
1010+
- name: Create an app using the Measure in MR control
1011+
href: ./canvas-apps/how-to/build-apps-measure-in-mr.md
10101012
- name: Save and publish an app
10111013
href: ./canvas-apps/save-publish-app.md
10121014
- name: Share an app and its dependencies

powerapps-docs/maker/canvas-apps/geospatial-overview.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,5 +99,8 @@ Start installing the controls in your apps:
9999
- Visualize and interpret ___location data with the **[Interactive map](geospatial-component-map.md)** control.
100100
- See dynamic address suggestions as you type with the **[Address input](geospatial-component-input-address.md)** control.
101101

102+
### See also
103+
104+
[Create an app that uses mobile sensors](how-to/mobile-sensors.md)
102105

103106
[!INCLUDE[footer-include](../../includes/footer-banner.md)]
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
---
2+
title: Create an app using the Measure in MR control
3+
description: Learn how to use the Measure in MR control in Power Apps.
4+
author: joel-lindstrom
5+
ms.service: powerapps
6+
ms.subservice: canvas-maker
7+
search.audienceType:
8+
- maker
9+
search.app:
10+
- PowerApps
11+
ms.topic: conceptual
12+
ms.custom: canvas
13+
ms.date: 12/15/2021
14+
ms.author: anuitz
15+
ms.reviewer: tapanm
16+
contributors:
17+
- tapanm-msft
18+
- anuitz
19+
---
20+
21+
# Create an app using the Measure in MR control
22+
23+
You can use the [Measure in MR](../mixed-reality-component-measure-distance.md) control in your app to let users measure distance, area, and volume. During the measurement, you create two-dimensional and three-dimensional polygons that can be used to confirm how a certain-sized object would fit within a space.
24+
25+
The control creates a button in your app. When app users select the button, it shows a live camera feed of the device. App users can then specify a starting point, and one or multiple sequential endpoints to measure between. The instances of measured segments are shown directly on the live camera feed.
26+
27+
When the user exits the control, the measurements that were taken are captured in the **Measurements** property so they can be saved or stored.
28+
29+
Screenshots taken during the mixed reality experience are stored in the **Photos** property for viewing within the app.
30+
31+
In this article, we'll create a screen in an app to use the **Measure in MR** control to measure the area of a user-defined space as well as view a photo of the space that was measured.
32+
33+
Watch this video to learn how to build mobile apps with Measure in MR control:
34+
> [!VIDEO https://www.microsoft.com/videoplayer/embed/RWLPQh]
35+
36+
## Prerequisites
37+
38+
See [prerequisites for mixed-reality capable devices](../mixed-reality-overview.md#prerequisites).
39+
40+
## Create the app with Measure in MR control
41+
42+
1. Open an app in [Power Apps Studio](https://make.powerapps.com).
43+
44+
1. Select the **Insert** tab.
45+
46+
1. Expand **Mixed Reality**.
47+
48+
1. Select the **Measure in MR** control to insert it on the screen.
49+
50+
1. Position the control near the bottom of the screen.
51+
52+
1. Change the following properties for the control using the property pane on the right-side of the screen.
53+
54+
| Property | Value |
55+
|---------------------|--------------|
56+
| Text | Measure Area |
57+
| Unit of measurement | Feet |
58+
| Measurement type | Area |
59+
60+
:::image type="content" source="media\build-apps-measure-in-mr\button-properties.png" alt-text="Measure Area button properties.":::
61+
62+
1. Select the Advanced tab and change the **OnMixedRealitySelect** property to the following formula:
63+
64+
```powerapps-dot
65+
ClearCollect(colMRMeasurements, Self.Measurements);
66+
ClearCollect(colMRPhotos, Self.Photos)
67+
```
68+
69+
:::image type="content" source="media\build-apps-measure-in-mr\onmixedrealityselect-formula.png" alt-text="OnMixedRealitySelect formula.":::
70+
71+
This formula will allow the user to define areas to be measured in square feet and store the most recent results of the measurements in a collection named **colMRMeasurements**, and the most recent photos in a collection named **colMRPhotos**.
72+
73+
1. Add a text label to the screen and move it to the top-left corner of the screen.
74+
75+
1. Change the following properties of the added text label:
76+
77+
| Property | Value |
78+
|----------------|--------------|
79+
| Text | Measure Area |
80+
| Font size | 24 |
81+
| Font weight | Semibold |
82+
| Text alignment | Center |
83+
| Width | Parent.Width |
84+
| Color | `RGBA(255, 255, 255, 1)` |
85+
| Fill | `RGBA(56, 96, 178, 1)` |
86+
87+
:::image type="content" source="media\build-apps-measure-in-mr\header-label.png" alt-text="Header label.":::
88+
89+
This label provides a header for the screen.
90+
91+
1. Add an image control, and move it just below the header label.
92+
93+
1. Change the following properties for the image control:
94+
95+
| Property | Value |
96+
|------------------|-----------------------------|
97+
| Image | `First(colMRPhotos).ImageURI` |
98+
| Border Thickness | 2 |
99+
100+
The image control will display the first image taken from the **Measure in MR** control.
101+
102+
1. Add another label to the screen, positioning it below the image control.
103+
104+
1. Change the **Text** property of the label to the following formula:
105+
106+
```powerapps-dot
107+
"Area: " & If(IsEmpty(colMRMeasurements), "no area measured", First(colMRMeasurements).Area & " sq. " & First(colMRMeasurements).Unit)
108+
```
109+
110+
:::image type="content" source="media\build-apps-measure-in-mr\completed-app.png" alt-text="Completed app.":::
111+
112+
This label will display the first area measurement and unit type that is collected from the **Measure in MR** control. If there's no measurement to be returned, the text will show **Area: no area measured** to let the user know that no value is present.
113+
114+
## Test the app
115+
116+
> [!TIP]
117+
> Watch the video embedded at the top of this article to see how the app works.
118+
119+
Now that all the controls have been added, [save and publish](../save-publish-app.md) the app. On a mixed-reality capable device (as defined in the Prerequisites section), open the app, and press the **Measure Area** button. This action will open the **Measure in MR** experience, allowing the user to define an area to be measured.
120+
121+
Follow the on-screen instructions to calibrate the device by slowly moving it left and right while pointing the camera at a surface to be measured. Once the calibration is complete, you'll see an array of dots on the surface as well as a circle and dot reticle in the center of the screen. This reticle is used to define lengths, areas, and volumes by using the + button to add points and line segments.
122+
123+
Photos can be captured using the camera button. These photos will show the lengths, areas, and volumes defined by the user.
124+
125+
There's an undo button to undo any placed points.
126+
127+
Begin by placing a point using the **+** button. You'll notice that an orange line and measurement now appear connected to the point you placed. Place a second point and notice how a line with measurement appears between the two points you place. Continue placing points until the desired shape has been fully defined. To close a shape, place the reticle on the first point made and use the **+** button. You'll notice that the center point of the reticle changes color from white to green, indicating that the shape can be closed. If two of the sides of the shape intersect, or you try to close a shape using any other point than the first one. You'll notice that the center point of the reticle changes from white to red, indicating that a point cannot be placed there.
128+
129+
Once an area has been fully defined, position the device so that a picture can be taken of the area you defined and use the camera button to do so. The select the **Submit** button. A confirmation dialog will appear, asking if you've finished with your measurements. If you have more measurements to enter, select **Cancel** to return to the MR environment. If you're finished, select **Submit** to be taken back to the app screen.
130+
131+
You'll see the first picture taken as well as the calculated area of the shape you defined as well as the units, in this case square-feet.
132+
133+
The measurement and photo can then be used like any other photo or text field in Power Apps, for instance to be sent in an email or stored in a table in Microsoft Dataverse.
134+
135+
### See also
136+
137+
- [Measure in MR control](../mixed-reality-component-measure-distance.md)
138+
- [Add mixed reality controls to your canvas app](../mixed-reality-overview.md)

powerapps-docs/maker/canvas-apps/how-to/build-view-in-mr-3d-apps.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Create apps with 3D and mixed reality controls
2+
title: Create an app with 3D and mixed reality controls
33
description: Learn about how to use 3D and mixed reality controls.
44
author: Joel-lindstrom
55
ms.service: powerapps
@@ -18,7 +18,7 @@ contributors:
1818
- anuitz
1919
---
2020

21-
# Create apps with 3D and mixed reality controls
21+
# Create an app with 3D and mixed reality controls
2222

2323
You can use the [View in 3D](../mixed-reality-component-view-3d.md) and [View in MR](../mixed-reality-component-view-mr.md) controls to view items in 3D, or to see how a particular item might fit within a specified space.
2424

Loading
Loading
Loading

powerapps-docs/maker/canvas-apps/mixed-reality-component-measure-distance.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,5 +145,8 @@ OnChange | Behavior that is triggered when any property on the button is changed
145145
- View images and 3D content in the real world with the **[View in mixed reality](mixed-reality-component-view-mr.md)** control.
146146
- Create and view predefined 3D shapes with the **[View shape in mixed reality](mixed-reality-component-view-shape.md)** control
147147

148+
### See also
149+
150+
[Create an app using the Measure in MR control](how-to/build-apps-measure-in-mr.md)
148151

149152
[!INCLUDE[footer-include](../../includes/footer-banner.md)]

0 commit comments

Comments
 (0)