Git Product home page Git Product logo

intune-app-deploy's Introduction

Intune-App-Deploy

A fast, reliable way to package your win32 applications and deploy them to Intune from any source - including SCCM, using Powershell & VS Code tasks!

Whats this all about?

Think of this as streamlining your application packaging workflow - If most or all of your application packaging dev work is done in VS Code, why not build and publish locally as well?!

This repo can be used as a scaffold to very easily build and deploy win32 applications from any machine that you clone it to.

OK, how do I get started?

  • Clone the repo to your development environment
  • Open the repo folder in VS Code
  • Start preparing your applications in the applications folder (One app per folder..)
  • Open the command palette (ctrl+shift+p // F1) and type Run Task

Right, what tasks have we got?

Initialize Environment

To set up your development space (Installing PowerShell modules Yaml-Powershell & AzureAD, downloading the Win32 Content Prep Tool.), select the Initialize Environment task.

Build

To compile your application package into the require *.intunewin file, while in a file within the application you wish to build, select the Build task.

Publish

To publish your compiled application package, while in a file within the application you wish to publish, select the Publish task.

You will be asked to enter Credentials to authenticate to your Azure Tenant - make sure you have correct permissions to access Intune.

Build & Publish

Build & publish tasks in one streamlined package - for the confident amongst us.

How do I need to set up my applications?

If you are building an application package locally, just place all your binaries / scripts within a folder inside the applications folder.

If you are building an application from media stored remotely, make a note of the location of the media and we will put it in the..

App.Yaml - the secret sauce.

Once you are ready to build and deploy your package, create a file within the root of the folder named app.yaml and configure as you would in Intune / SCCM.

Below is a sample to use as a reference point.

application:
  appName: "NameOfApplication"
  publisher: "Powers-Hell"
  description: 'Description goes here'
  appUrl: "" # URL of your application package (storage blob, dropbox, whatever)
  appFile: "" # whats the file name inclusing extension
  unpack: false # true / false (if you need to unpack the remote media set to true, otherwise set to false)
  installFile: "InstallerGoesHere.exe" # what's the first file that will trigger the install (setup.exe, setup.msi, setup.ps1 etc)
  installCmdLine: "InstallerGoesHere.exe -installArgs"
  uninstallCmdLine: "InstallerGoesHere.exe -uninstallArgs"

requirements:
  runAs32: false # true / false
  minOSArch: "v10_1809" # set this to your minimum allowed win10 build

detection:
  detectionType: "file" # file / msi / registry - what you pick here is what detection method will be bundled into your application.
  file: # File or folder detection.
    path: "C:/path/to/application"
    fileOrFolderName: "filename.ext"
    fileDetectionType: "exists"
    check32BitRegOn64System: false # true / false
  
  registry: # Registry detection
    registryKeyPath: "HKLM:/software/path/application"
    registryDetectionType: "exists"
    check32BitRegOn64System: false # true / false
  
  msi: # MSI installation detection (application GUID)
    msiProductCode: "{F16BDC7C-960E-4F21-A44A-41E996D5356C}"

intune-app-deploy's People

Contributors

powershellking avatar tabs-not-spaces avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

intune-app-deploy's Issues

unpack function expects subfolders in compressed folder

Due to my own small test packages all being set up the same way, the solution hasn't accounted for the fact that some packages won't be inside a root folder within the compressed file.

Should be a simple fix - just analyze the compressed media before unpacking and validate what should be there and pass off to the rest of the build workflow.

Unable to Publish

When i want to publish a package, the error says

"Get-MsalToken" not known as a Cmdlet.

Do i need to install anything else? Module MSonline is installed.

extend Registry detection

How can i extend the registry detection?
registry:
registryKeyPath: "HKLM:/SOFTWARE/WOW6432Node/Microsoft/Windows/CurrentVersion/Uninstall/{AC76BA86-7AD7-1031-7B44-AC0F074E4100}"
registryDetectionType: "version"
valueName: "DisplayVersion"
detectionType: "version"
operator: "equals"
detectionValue: "20.012.20043"
check32BitRegOn64System: true

it ignores the values others than in your example.

AADSTS50011 Error

when I try to use the publish task I get the AADSTS50011 error
"The reply URL specified in the request does not match the reply URLs configured for the application"

[Feature Request] YAML - Support all settings available in Graph JSON

This is a great start against automating packaging and deployment of Win32 packages but:

  • A lot of settings available for Win32 in GUI and JSON is missing.
    • The ability to run scripts for detection and requerements
    • Return codes
    • Icon
    • etc.

Will take a look when I got time, If I can add this I'll share the code.

  • Maybe we simply could reuse JSON from Graph after a Win32 has been manuallyc reated? As an option at least.

Insert app display version into Intune

In the current version the script doesn't yet add the display version to the app body. I'll create a pull request in order to add display version to app body.

commitFileFailed

I tried publishing the sample app to my tenant and got this error

Aborting with exception: System.Management.Automation.RuntimeException: File upload state is not success: commitFileFailed

above that I see
WARNING: The term 'C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy\AzCopy.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the
name, or if a path was included, verify that the path is correct and try again.

And inn Intune > client apps : the SampleApp exists, but states "Your app is not ready yet. Check back again soon."

Is it possible I'm missing a prerequisite?

Add a way for silent authentication using client secrets

I'd like to be able to start a publishing workflow without always having to enter my credentials. Therefore a client secret could be set up in the Azure app if a custom app is used. I'll send a pull request with my idea how to do that.

Support for Executable Installers

Hi,

I was reading through some of the code and I don't believe I saw support for non MSI installers. Would it be difficult implement this support? And would the YAML file have to be modified to accommodate a non MSI file?

I'm willing to try and help with this, but this project exceeds my current understanding of many of these matters.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.