Git Product home page Git Product logo

win32app-migration-tool's People

Contributors

byteben 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

Watchers

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

win32app-migration-tool's Issues

IntuneWinApputil.exe could not load file or assembly. Win32App creation fails

Generating the Win32App fails and the content folder is empty after running the command.
When I run the generated IntuneWinAppUtil.exe.exe command manually it throws an error

`ERROR File 'C:\Win32AppMigrationTool\Win32Apps\Application_4cb79509-5ae7-47d2-80a9-13461f3baea1\DeploymentType_bd6026d1
-9306-408f-aba6-70a48d48358d\setup.intunewin' has failed to be generated

[=========== ] 22%
INFO Done!!!

ERROR System.IO.FileNotFoundException: Could not load file or assembly 'System.IO.Compression, Version=4.2.0.0, Culture
=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
File name: 'System.IO.Compression, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
at Microsoft.Management.Service.IntuneWinAppUtil.ZipUtil.CreateFromDirectory(String sourceDirectoryName, String desti
nationArchiveFileName, Nullable`1 compressionLevel, Boolean includeBaseDirectory, ReportProgress reportProgress)
at Microsoft.Management.Service.IntuneWinAppUtil.ZipUtil.ZipFolder(String folder, String zipFile, AppContext context,
Boolean noCompression, Boolean includeBaseDirectory, Boolean appendFile)
at Microsoft.Management.Service.IntuneWinAppUtil.PackageUtil.CreatePackage(String folder, String setupFile, String ou
tputFolder, String catalogFolder)
at Microsoft.Management.Service.IntuneWinAppUtil.Program.Main(String[] args)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.

Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
`
The system is running Windows Server 2012 R2 almost the latest build, but not the latest. .Net Framework. I think it might have something to do with that. Can you confirm it needs a minimum version of .Net framework installed on the server?

Installed .Net Framework versions

image

Error in Powershell

image

Application I am testing with is Microsoft Apps for 365. All other applications I try fail with the same error.

Fails to detect setup file

New-Win32App ... -PackageApps fails to build the .intunewin file if it doesn't find find a setup file with an extension it recognises.

With vb-script being deprecated I have recently started converting my vb-script files to j-script.

The setup wrapper I used was for my installation was a j-script .js file.

To resolve the issue I added the following if statement into my local copy of New-Intunewin.ps1

elseif ($SetupFile -match ".js") {
$commandToUse = Get-InstallCommand -InstallTech '.js' -SetupFile $SetupFile
}

Package Multiple sources

I tried to convert an application where the sources of install and uninstall are not the same. But both have a setup.exe file.

The first problem I have is that the way the robot copy command is done it adds the two paths in one and gives an error "path not found".

Example:
source install:
\server\pkg\Src\Microsoft\Office 365\EN\

source uninstall:
\server\pkg\Src\Microsoft\Office 365\Uninstaller\

When it tries to copy the path that it uses is a path formed by the two destinations separated by a space.

In the log we can read:
Downloading Content for Deployment Type DeploymentType_6793e21e-b717-44db-8328-61b202c1898a from Content Source \server\pkg\Src\Microsoft\Office 365\EN\ \server\pkg\Src\Microsoft\Office 365\Uninstaller...

ERROR 3 (0x00000003) Accessing Source Directory \server\pkg\Src\Microsoft\Office 365\EN \server\pkg\Src\Microsoft\Office 365\Uninstaller\

then I can't run a test like I want to validate if two sources with the same name file will work.

Yves

Garbled characters in Japanese environment

Thank you for developing amazing tool!

If [Application_Name] [Application_Description] contains 2 bytes, it will be output and [Applications.csv] will be output as garbled characters in Japanese environment.

If possible, I'm glad that you make this code support for double-byte character languages.

My project has 2,000 app migrations from MECM to Intune, so I'm looking forward to GA development as well

MECM_app1
MECM_app2

New-IntuneWin fails if -DownloadContent is not specified.

The New-IntuneWin function is using the 'C:\Win32AppMigrationTool\Content' as the source instead of the actual source when DownloadContent is not specified. This of course causes IntuneWinAppUtil.exe to fail since the source files are not present in the 'C:\Win32AppMigrationTool\Content' folder.

Is anyone else having this issue?

Why not use Get-CMApplication -Name for Get-AppList.ps1?

Ben, why are you retrieving the whole list of CM apps and then do filtering by name on the client side when you can make use of the "Name" parameter of Get-CMApplication supporting wildcards and let the server do the filtering?

My environment (300+ apps):

  • 3-4s for $apps = Get-CMApplication -Fast | Where-Object { $_.LocalizedDisplayName -like "*java*" }
  • <1s for $apps = Get-CMApplication -Name "*java*" -Fast

New feature in development: Get-DetectionMethods

We're in early stages of migrating all our packaged apps from SCCM to Intune and I came up with an idea that we could make use of Win32App-Migration-Tool combined with IntuneWin32App - the former doing the job of exporting the app and the latter of importing.
Unfortunately, your project has been stuck for quite a while in the beta stage and doesn't even handle a full export of a SCCM app... :( Do you still intend to develop this further Ben?

Even if you don't perhaps you could help me out with the Get-DetectionMethods feature? I have a raw (half-working) version in my fork:
https://github.com/obuolinis/Win32App-Migration-Tool/blob/d3e54598c254b1b7624b311a50b1bee8f882a92d/Private/Get-DetectionMethods.ps1 (updated a broken link)
Also, some necessary changes in New-Win32App to support it:
obuolinis@d3e5459#diff-4fc9ecf4be5f2c45f36d33af4e80484f5426c55a5066b925713fe9ca0a8eb357

However, I'm facing certain challenges with the function itself and its integration into the whole flow, specifically:

  1. I can't decide which function to call Get-DetectionMethods from. Since detection is part of a deployment type it makes most sense to call it from Get-DeploymentTypeInfo and add detection methods as part of its output. However, in that case one property of the Get-DeploymentTypeInfo output would have a value of an array of detection methods, which would be impossible for Export-CsvDetails to handle.
  2. Another option is calling Get-DetectionMethods from the main function New-Win32App, which is what I have implemented. The downside is that this means additional calls to SCCM from Get-DetectionMethods and consequently longer processing time.
  3. A second issue is that a built-in SCCM cmdlet Get-CMDeploymentTypeDetectionClause isn't able to handle script detection methods, at least it didn't work for me. So I had to use another way for those - the app SDMPackageXML property.
  4. The next issue stems from a previous one - how to handle different output formats of the two types of detection methods within Get-DetectionMethods? I'm yet to decide on what to do with the script type. There are only two things of interest - a script body and RunAs32Bit property. The former could go to a file, the latter could be part of a file name. But then what to return to the calling function when there's nothing left to return? Of course we need to pass that file name so perhaps a deployment type id, a detection method type (script), a file name and RunAs32Bit? Hm that could work.

So there you go, ideas are welcome.

Add Filter Option

Great job Ben, just tested it and it ran smoothly in my lab. At my customer I have identified 1956 applications, but lots of those are coming from PatchMyPC. So I want to filter on folder e.g. Applications\Desktop\Software and not pick Applications\Desktop\PatchMyPC.

Only 1 Application built

First, love the tool. I'm having to convert about 120 applications from SCCM into Intune with the slow migration of getting more workloads into Intune in our hybrid environment. Here is the line I am running

New-Win32App -SiteCode "CCC" -ProviderMachineName "CCC.contoso.local" -AppName "*Seven*" -WorkingFolder "I:\IntuneApps" -ExportIcon -DownloadContent -PackageApps -CreateApps -ResetLog

I noticed whenever I will select multiple applications is only builds 1 of the applications.

image

image

You can see it does notice there are 2 applications that were selected but then it only actually creates the contents, .intunewin, and detail CSVs file for just 1
image
image
image

-Wait on IntuneWinAppUtil command

Running with the -PackageApps and -CreateApps command arguments, it attempts to create the .intunewin file with IntuneWinAppUtil.exe but fails to do so. Looking at the log, it's passing -Wait as though it's a command line argument for IntuneWinAppUtil instead of Start-Process
image

Get-InstallCommand - spaces in filename

I have a $SetupFile variable as this: msiexec /i "Print Settings 1.0.1.msi" /q
The resulting $command is "1.0.1.msi", which is not right.

Don't know if spaces in the filename can be handled somehow.

Name files/folders after app name?

Hi

When using the tool the resulting *.intunewin file is named after the install command.
In my case we use PSADT so the install command is "Deploy-Application.exe", resulting in "Deploy-Application.intunewin"

Would it be possible to name the files/folders after the app name like "7-Zip", "Adobe Reader" and so on ?
Maybe a folder structure like: App-name --> App-version --> App-name.intunewin

Question about the Tool

Thank you very much Ben for this useful tool!

I have one question about the parameter -CreateApps . This will create automatically the Application to Intune? It will prompt for credentials connecting to MEM?

Application Title

Not a huge issue,

Is there a switch or parameter to allow for Application Name instead of GUID? Also when I go to import into InTune is does not know the name either. Perhaps I am not doing this correctly.

Love the module!! Keep it up!

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.