Esiasenna XFA Microsoft Intunella
Lisää XFA.msi Win32 app -sovelluksena, jolla on olemassaoloon perustuva tunnistussääntö, ja välitä liittämistunnuksesi asennusargumenttina.
XFA on tehty niin, että suojattava tiimi asentaa sen itse. He asentavat sen itse Awareness-kutsun jälkeen tai kirjautuessaan sovellukseen, jota Enforcement suojaa. Useimmille organisaatioille se on koko käyttöönotto.
XFA.msi-tiedoston lataaminen line-of-business-sovelluksena on ilmeisin reitti, ja juuri se menee rikki. Line-of-business-sovellus tunnistaa XFA:n sen MSI-tuotekoodin perusteella, ja XFA luo tuon tuotekoodin uudelleen aina päivittäessään itseään. Ensimmäisen itsepäivityksen jälkeen Intune ei enää löydä tallentamaansa koodia, raportoi XFA:n asentamattomana ja asentaa vanhemman paketoidun koosteen uudemman päälle joka tarkistuksella. Ignore app version ei pelasta tilannetta: se ohittaa version, ei tuotekoodia. Paketoi XFA sen sijaan Win32-sovelluksena, jolloin asetat tunnistussäännön itse.
Kopioi se XFA:n hallintapaneelista kohdasta Integraatiot > Esiasenna XFA MDM:n kautta > Microsoft Intune, joka näyttää valmiin komennon tunnus jo mukanaan. Esiasennus on Enterprise-ominaisuus.
1. Lataa ja paketoi asennusohjelma
Laita kaksi tiedostoa tyhjään kansioon:
- XFA.msi.
uninstall-xfa.ps1, alla oleva poistoskripti. XFA:n tuotekoodi muuttuu jokaisen itsepäivityksen myötä, joten poisto ei voi nimetä alkuperäistä MSI:tä: päivityksen jälkeen sen tuotekoodi ei enää vastaa asennettua. Skripti selvittää nykyisen tuotteen Windows Installerin kautta XFA:n pysyvän UpgradeCoden perusteella, joka ei koskaan muutu eikä riipu 32- tai 64-bittisestä rekisterinäkymästä, ja poistaa sen sitten:
$ErrorActionPreference = 'Stop'
$upgradeCode = '{FE5FD0A4-8D39-42FD-B0DE-18EB89B7CAC4}'
try {
$installer = New-Object -ComObject WindowsInstaller.Installer
$products = @($installer.RelatedProducts($upgradeCode))
if ($products.Count -ne 1) { exit 1 }
$p = Start-Process 'msiexec.exe' -ArgumentList "/x $($products[0]) /qn" -Wait -PassThru
if (-not $p) { exit 1 }
exit $p.ExitCode
} catch {
exit 1
}
Intune jakaa Win32-sovellukset .intunewin-tiedostoina. Paketoi koko kansio, mikä on juuri se, mikä saa uninstall-xfa.ps1-skriptin sovelluksen sisään, Microsoftin Win32 Content Prep Toolilla:
IntuneWinAppUtil.exe -c <folder with XFA.msi and uninstall-xfa.ps1> -s XFA.msi -o <output folder>
Yksi asennusohjelma kattaa x64:n ja ARM64:n. ARM64-laitteella se toimii emuloituna, ja XFA korvaa itsensä natiivilla ARM64-koosteella automaattisesti.
2. Lisää sovellus
Siirry Intune admin centerissä kohtaan Apps > All apps > Create. Valitse alustaksi Windows, valitse Windows app (Win32) ja lataa juuri rakentamasi XFA.intunewin.
3. Määritä ohjelma
| Kenttä | Arvo |
|---|---|
| Install command | msiexec /i "XFA.msi" /qn ENROLLMENT_TOKEN=<token-from-xfa-dashboard> |
| Uninstall command | powershell.exe -NoProfile -ExecutionPolicy Bypass -File uninstall-xfa.ps1 |
| Install behavior | User |
Tämä on se asetus, joka pitää saada oikein, ja Win32-sovellusten oletus on System. Jos se jää siihen, Intune suorittaa msiexec-komennon järjestelmätilinä, XFA asentuu järjestelmäprofiiliin, eikä liittäminen onnistu, koska kirjautuneena ei ole henkilöä, jolle asentaa. Aseta Install behavior arvoon User, jolloin asennus suoritetaan kirjautuneen käyttäjän kontekstissa. Se on sama ansa kuin Install for user Configuration Managerissa.
Poistokomento suorittaa uninstall-xfa.ps1-skriptin, jonka paketoit vaiheessa 1. Koska install behavior on User, se suoritetaan kirjautuneena käyttäjänä ja poistaa XFA:n sillä tuotekoodilla, joka on kulloinkin asennettuna.
4. Määritä tunnistussääntö
Tämä on se vaihe, joka estää XFA:ta asentumasta uudelleen silmukassa. Valitse Use a custom detection script ja lataa alla oleva skripti.
Intune suorittaa tunnistusskriptit järjestelmätilinä, vaikka sovellus asentuu käyttäjälle, joten sääntö, joka lukee HKEY_CURRENT_USER-avainta tai %LOCALAPPDATA%-polkua, katsoo järjestelmätilin omaan profiiliin ja raportoi XFA:n puuttuvaksi. XFA on lisäksi käyttäjäkohtainen asennus, joten "asennettu" on kysymys kirjautuneesta käyttäjästä eikä koneesta: jaetulla tietokoneella jokainen käyttäjä tarvitsee oman kopionsa. XFA kirjoittaa käyttäjäkohtaisen merkinnän polkuun HKCU\Software\XFA\DesktopApp, jonka järjestelmätili voi lukea kyseisen käyttäjän rekisteripesästä HKEY_USERS-avaimen alta. Vielä yksi mutka: XFA.msi on 32-bittinen asennusohjelma, joten 64-bittisellä koneella merkintä on 32-bittisessä rekisterinäkymässä, ja ARM64-itsepäivityksen jälkeen se siirtyy 64-bittiseen näkymään. Tunnistusskriptit suoritetaan oletuksena 64-bittisinä, joten selvitä, kuka on kirjautuneena, ja tarkista molemmat näkymät:
$console = (Get-CimInstance Win32_ComputerSystem).UserName
if ($console) {
try {
$sid = ([System.Security.Principal.NTAccount]$console).Translate(
[System.Security.Principal.SecurityIdentifier]).Value
$installed = $false
foreach ($view in @([Microsoft.Win32.RegistryView]::Registry32,
[Microsoft.Win32.RegistryView]::Registry64)) {
$base = [Microsoft.Win32.RegistryKey]::OpenBaseKey(
[Microsoft.Win32.RegistryHive]::Users, $view)
try {
$key = $base.OpenSubKey("$sid\Software\XFA\DesktopApp")
if ($key) { $installed = $true; $key.Close() }
} finally { $base.Close() }
}
if ($installed) { Write-Output 'Installed' }
} catch { }
}
Intune tulkitsee sovelluksen asennetuksi, kun skripti kirjoittaa vakiotulosteeseen, joten mitään ei kirjoiteta silloin kun XFA:ta ei ole. Tämä tunnistaa olemassaolon, ei versiota, joten XFA:n itsepäivitykset eivät koskaan laukaise sitä, ja koska se on rajattu kirjautuneeseen käyttäjään, Intune asentaa XFA:n jaetulla koneella jokaiselle henkilölle sen sijaan, että ohittaisi kaikki ensimmäisen jälkeen. try/catch kaatuu turvalliseen suuntaan: jos tiliä ei saada selvitettyä SID-tunnukseksi, skripti ei kirjoita mitään ja Intune lukee "ei asennettu", ei koskaan väärää osumaa.
Tämä olettaa yhden interaktiivisen käyttäjän kerrallaan, mikä on kannettavan tai pöytäkoneen tavallinen tilanne. Monen istunnon isäntäkoneella (Remote Desktop Session Host) Win32_ComputerSystem.UserName raportoi vain fyysisen konsolikäyttäjän.
5. Kohdista sovellus
Lisää Assignments-kohdassa Required-osioon se käyttäjäryhmä, jonka on määrä saada XFA.
Kohdista käyttäjäryhmälle, ei laiteryhmälle. XFA asentuu sille, joka on kirjautuneena, ja liittää kyseisen henkilön, joten laitekohdennus ei asenna sitä kenellekään.
6. Tarkista
Kun Intune raportoi sovelluksen asennetuksi, varmista että:
- XFA:n kuvake näkyy kirjautuneen käyttäjän ilmaisinalueella, ja
- laite näkyy kyseiselle käyttäjälle XFA:n Laitteet-sivulla.
Jos liittäminen epäonnistuu, asennus epäonnistuu sen mukana, joten Intune näyttää sovelluksen tilaksi failed sen sijaan, että raportoisi onnistumisen laitteella, joka ei koskaan liittynyt organisaatioosi. Intune raportoi yleisen asennusvirheen (se ei tuo esiin XFA:n omaa syykoodia), joten lue syy laitteen tiedostosta %TEMP%\xfa\xfa-enrollment.log:
| Koodi | Merkitys |
|---|---|
| 2 | Liittämistunnus hylättiin. Luo se uudelleen XFA:n hallintapaneelissa. |
| 3 | XFA:han ei saatu yhteyttä. Intune yrittää uudelleen. |
| 1, 4, 5 | Komento oli väärä, tai laite ei voinut tallentaa tunnistetietojaan. |
XFA:n poistaminen
Pura liitos ennen poistoa. Intunen Uninstall-kohdennus suorittaa poistokomennon mutta ei suorita xfa unenroll -komentoa, joten se jättää organisaatioliitoksen palvelimelle, ja laitteella, joka kuuluu useampaan kuin yhteen organisaatioon, se riisuu XFA:n myös muilta.
Suorita ensin tämä kirjautuneena käyttäjänä, jolloin poistat vain tämän organisaation ja XFA jää asennetuksi:
xfa unenroll --organization-id <organization-id>
Poista sovellus vasta sitten, kun yhtään organisaatioliitosta ei ole jäljellä. xfa enrollment-status palauttaa paluukoodin 0 niin kauan kuin laite on liitettynä johonkin organisaatioon, ja 10, kun poistaminen on turvallista. Kun se raportoi 10, aseta Uninstall-kohdennus.