====== eduroam WiFi-profiilin paketointi ====== Oppilaitoksen oman eduroam-profiilin jakaminen ei etenkään Windowsin kanssa ole järin yksinkertaista käyttäjille joiden koneet eivät ole keskitetyn hallinnan piirissä eikä asetuksia pystytä tuomaan koneelle esim. GPO-asetuksilla. Windows XP:n kohdalla langattoman profiilin luomisen tuskan voi helpoiten kokea [[http://www.csc.fi/hallinto/funet/palvelut/eduroam/kaytto|CSC:n Windows XP-ohjeesta]] eikä siihen juurikaan helpotusta ole tarjolla. Eduroamin dokumentaatiosta löytyy [[https://confluence.terena.org/display/H2eduroam/How+to+deploy+eduroam+on-site+or+on+campus#Howtodeployeduroamon-siteoroncampus-Provisioningconfigurationdetailsofsupplicantstoendusers|client-ohjeistus]] missä profiilin paketointiin ja jakamiseen käytetään kolmannen osapuolen tuotteita. Vistasta alkaen Windows osaa kuitenkin käsitellä WiFi-profiileja varsin monipuolisesti netsh-komentorivityökalun avulla. Jotta oppilaitoksen eduroam-profiilia voisi jakaa kätevästi tarvitaan tälle työkalulle vähän lihaa luiden ympärille eli jonkinlainen yksinkertainen eduroamin "asennusohjelma". Tarjolla olevat vaihtoehdot edellyttävät administrator-oikeuksia vaikka WiFi-profiilit voivat olla myös käyttäjäkohtaisia jolloin admin-oikeuksia ei tarvittaisi. Seuraavilla ohjeilla voit luoda eduroam WiFi-profiilin asennusohjelman, joka toimii standard user -oikeuksilla ja lisää ohjelman ajavalle käyttäjälle eduroam-verkon käyttöön oppilaitoksen määrityksillä. ==== Vaatimukset ===== eduroam-paketin luomiseen tarvitaan - Windows 7 x86/x64 (tai Vista) - XML-muotoinen WiFi-profiili oppilaitoksen eduroam-määrityksillä - addwifi.vbs -skripti eduroam-paketin ajamiseen tarvitaan - Windows Vista, 7 (x86 tai x64) - Windows XP ei kelpaa (addwifi.vbs tarkistaa) sekä - käynnissä oleva Windowsin Service "WLAN AutoConfig" (addwifi.vbs tarkistaa). Kolmansien osapuolten langattomien verkkojen hallintaohjelmistot voivat kytkeä tämän palvelun pois päältä. ==== XML-muotoisen WiFi-profiilitiedoston luominen ==== - Luo Windows 7 -koneella "eduroam"-niminen WiFi-profiili käyttäen normaalia graafista käyttöliittymää * Conrol Panel -> Network and Internet -> Network and Sharing Center -> Manage wireless networks -> Add - Avaa komentorivikehote (cmd.exe) - Exportoi WiFi-profiili antamalla komento ''netsh wlan export profile eduroam'' - Ota muodostunut XML-tiedosto talteen. Kannattanee nimetä tiedosto yksinkertaisemmaksi, esim. nnn-eduroam.xml ==== exe-muotoisen eduroam-paketin luominen ==== - Totea, että VB-skripti ''addwifi.vbs'' tekee mitä toivotkin sen tekevän. Muokkaa halutessasi. - käynnistä __administrator-oikeuksin__ 32-bittinen Windowsin mukana tuleva **iexpress.exe** -ohjelma. 32-bittinen siksi, jotta muodostuva ohjelma olisi 32-bittinen ja toimisi näin ollen niin 32- kuin 64-bittisissä Windowseissa * 32-bittisessä Windowsissa käynnistä ''"%systemroot%\System32\iexpress.exe"'' * 64-bittisessä Windowsissa käynnistä ''"%systemroot%\SysWOW64\iexpress.exe"'' * Iexpress.exe-ohjelmalle annetut vastaukset voi tallettaa .SED-tiedostoon. Tämä kannattaa ilman muuta tehdä. * Huom! Iexpress.exe ei ole kaikilta osin järin moderni sovellus. - Valitse **Create Package.** -> **Next** - **Extract files and run installation command** -> **Next**\\ {{:paketit:eduroam-001.png|iexpress.exe}} - Anna paketille nimi, esim "nnn eduroam WiFi Profile" ja paina **Next**\\ {{:paketit:eduroam-002.png|iexpress.exe}} - Valitse **No prompt.** -> **Next** -> **Do not display a license** -> **Next** - Lisää **Add**-painikkeella pakettiin tiedostot ''addwifi.vbs'' ja luomasi eduroam xml-profiili. Paina **Next**.\\ {{:paketit:eduroam-003.png|iexpress.exe}} - Määrittele ajettava komento kun paketti suoritetaan ja valitse **Next** * Install program: **%%wscript.exe addwifi.vbs eduroam "nnn-eduroam.xml"%%** * Post install command: ****\\ {{:paketit:eduroam-004.png|iexpress.exe}} - **Default (recommended)** -> **Next** - **No Message** -> **Next** - Määrittele luotavan paketin nimi, esim. **nnn-eduroam.exe** sekä * valitse **"Hide File Extracting Progress Animation from User"** sekä * **"Store files using Long File Name inside package"** ja paina **Next**\\ {{:paketit:eduroam-005.png|iexpress.exe}} - **No restart** -> **Next** - Valitse **Save Self Extraction Directive (SED) file:** jotta saat tehdyt määritykset talteen ja määrittele vastaustiedoston sijainti. Paina **Next** - Paina **Next** ja iexpress.exe luo paketin. Paketin luominen epäonnistuu jos et käynnistänyt iexpress.exe:ä administrator-oikeuksin - Kun paketti on valmis, paina **Finish** ja levitä muodostunutta eduroamin "asennusohjelmaa" **nnn-eduroam.exe** haluamallasi tavalla.\\ {{:paketit:eduroam-006.png|}} ==== Appendix ==== ' Add Wireless (WiFi) Profile to Windows Vista or newer ' 9.11.2011 | Mikko Järvinen | University of Turku ' ' usage: wscript addwifi.vbs ProfileName "WiFi-Filename.xml" user|everyone ' (Export WiFi-config xml file using command: netsh wlan export profile ) Option Explicit 'On Error Resume Next Dim objFileSystem Dim objShell Dim strComputer Dim strServiceName Dim strInstallCommand Dim strUnInstallCommand Dim strQueryCommand Dim strWLANNotFoundTitle Dim strWLANNotFoundText Dim strWLANImportedTitle Dim strWLANImportedText Dim strWLANExistsTitle Dim strWLANExistsText Dim strOSVersionTitle Dim strOSVersionText Dim strWiFiProfileName Dim strWiFiProfile Dim strWiFiProfileScope Dim cmdArgs Dim intReturnCode Dim intAnswer Dim strWindowsVersion Dim strWindowsMajorVersion Set objShell = CreateObject("Wscript.Shell") Set objFileSystem = CreateObject("Scripting.FileSystemObject") Set cmdArgs = WScript.Arguments If WScript.Arguments.Count = 3 Then strWiFiProfileName = WScript.Arguments(0) strWiFiProfile = WScript.Arguments(1) Select Case LCase(WScript.Arguments(2)) Case "everyone" strWiFiProfileScope = "all" Case Else strWiFiProfileScope = "current" End Select strInstallCommand = "netsh wlan add profile filename=""" & strWiFiProfile & """ user=" & strWiFiProfileScope strQueryCommand = "netsh wlan show profile " & strWiFiProfileName strUnInstallCommand = "netsh wlan delete profile " & strWiFiProfileName strOSVersionTitle = strWiFiProfileName strOSVersionText = "Langattoman verkon profiilin luomiseen automaattisesti" & VbCrLf & _ "vaaditaan Windows Vista tai Windows 7." & VbCrLf & _ VbCrLf & _ "Wireless Profile automatic configuration requires" & VbCrLf & _ "Windows Vista or Windows 7." strWLANNotFoundTitle = strWiFiProfileName strWLANNotFoundText = "Langatonta verkkokorttia ei löytynyt tai" & VbCrLf & _ "'WLAN AutoConfig'-palvelu ei ole käynnissä." & VbCrLf & _ "Profiilin " & strWiFiProfileName & " lisääminen ei onnistunut." & _ VbCrLf & VbCrLf & _ "Wireless network card not found or" & VbCrLf & _ "'WLAN AutoConfig' service is not started." & VbCrLf & _ "Profile " & strWiFiProfileName & " couldn't be imported." strWLANImportedTitle = strWiFiProfileName strWLANImportedText = "Langaton verkko " & strWiFiProfileName & " lisätty onnistuneesti." & _ VbCrLf & VbCrLf & _ "Wireless network " & strWiFiProfileName & " imported successfully." strWLANExistsTitle = strWiFiProfileName strWLANExistsText = "Langaton verkko " & strWiFiProfileName & " on jo määriteltynä." & _ VbCrLf & VbCrLf & _ "Wireless network " & strWiFiProfileName & " is already configured." ' --- Check for a Windows Version strWindowsVersion = objShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion") strWindowsMajorVersion = Left(strWindowsVersion, 1) If strWindowsMajorVersion = "5" Then ' Windows 2000, XP, 2003 intAnswer = MsgBox(strOSVersionText , vbOKOnly + vbCritical + vbSystemModal, strOSVersionTitle) WScript.Quit(1) End If ' --- Check if a wlansvc is Started strComputer = "." ' Local Computer strServiceName = "wlansvc" ' WLAN AutoConfig If Not isServiceRunning(strComputer,strServiceName) Then intAnswer = MsgBox(strWLANNotFoundText , vbOKOnly + vbCritical + vbSystemModal, strWLANNotFoundTitle) WScript.Quit(2) End If ' --- Check if Profile already exists intReturnCode = objShell.Run(strQueryCommand, 0, True) If intReturnCode = 0 Then ' WiFi Profile already exists intAnswer = MsgBox(strWLANExistsText , vbOKOnly + vbInformation + vbSystemModal, strWLANExistsTitle) WScript.Quit(0) End If ' --- Add WiFi Profile intReturnCode = objShell.Run(strInstallCommand, 0, True) If intReturnCode = 1 Then ' something went wrong intAnswer = MsgBox(strWLANNotFoundText , vbOKOnly + vbCritical + vbSystemModal, strWLANNotFoundTitle) WScript.Quit(1) Else ' WiFi Profile imported intAnswer = MsgBox(strWLANImportedText , vbOKOnly + vbInformation + vbSystemModal, strWLANImportedTitle) WScript.Quit(0) End If Else intAnswer = MsgBox("WiFi profile name or file name not defined.", vbOKOnly + vbCritical + vbSystemModal, "Error") WScript.Quit(2) End If ' ----- Functions ----- ' Function to check if a service is running on a given computer Function isServiceRunning(strComputer,strServiceName) Dim objWMIService, strWMIQuery strWMIQuery = "Select * from Win32_Service Where Name = '" & strServiceName & "' and state='Running'" Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") If objWMIService.ExecQuery(strWMIQuery).Count > 0 Then isServiceRunning = true Else isServiceRunning = false End If End Function