Application Virtualization (App-V) 4.6

4.6-versiopäivitys koskee ainoastaan clienttiä ja Sequenceria. Muut komponentit jatkavat siis versiona 4.5.
Uusia ominaisuuksia:

  • 64-bittisyyden tuki. Clientin ja sequencerin voi nyt asentaa 64-bittiseen käyttöjärjestelmään. Tällöin myös 64-bittisten ohjelmien paketointi on mahdollista.
  • Windows 7-hyppylista. Paketoidut ohjelmat osaavat hyödyntää Windows 7:n uusia työkalupalkkiominaisuuksia.
  • Tuki Applocker-, Applocker ToGo-, Bitlocker ToGo- ja Branch Cache-teknologioille Osa ominaisuuksista tuli jo aiemmin mutta 4.6-versiossa ne ovat päivitetty Windows 7-yhteensopiviksi.
  • Read only cache Tarkoitettu VDI-ympäristöihin. Clienteille yhteinen vain lukuoikeuksilla varustettu cache. Tällöin jokaiselle koneelle ei tarvitse luoda omaa cachea.

Sequencer

Sequencer 4.6-versiolla paketoidut ohjelmat eivät toimi vanhemmissa clienteissä, joten 4.6-clientit pitää ottaa käyttöön ennen Sequencerin käyttöönottoa. Lisäksi 64-bit Sequencerillä paketoidut ohjelmat toimivat vain 64-bittisessä clientissä.
4.6 clientti taasen ymmärtää 4.2- ja uudemmilla Sequencereillä paketoidut ohjelmat.

Kun avaat Sequencerin saat kolme vaihtoehtoa:

  • Create a package (uusien pakettien luonti)
  • Eedit a package (olemassa olevan paketin asetusten muokkaus)
  • Upgrade a package (olemassa olevan paketin päivitys).

Lähdetään luomaan uutta pakettia (create a package).

seq4601.jpg

Aluksi käynnistyy Sequencing Wizard.

seq4602.jpg

Aloittaaksesi ohjelman asennuksen paina Begin Monitoring.

seq4603.jpg

Valitse kansio, johon ohjelma asennetaan.

seq4604.jpg

Odota, että palkissa oleva palkki alkaa liikkua ja nuoli osoittaa Install Application-kohtaa. Nyt voit aloittaa ohjelman asennuksen. Kun ohjelma on asentunut, paina Stop Monitoring.

seq4605.jpg

Muokkaa ohjelman asetuksia.

seq4606.jpg

Käynnistä ohjelma optimoidaksesi se streamausta varten.

seq4607.jpg

Lopulta paketti on valmis.

seq4608.jpg

Ennen tallennusta muuta määritykset ympäristöösi sopiviksi. Huomaa että 64-bittiset käyttöjärjestelmät pitää valita erikseen.

seq4609.jpg

Paketinpäivitys aloitetaan valitsemalla Upgrade a Package.

seq4610.jpg

Valitse päivitettävän paketin sprj-tiedosto. Paketti purkaantuu koneelle, jonka jälkeen alkaa samainen Sequencing Wizard kuin paketin luonnissa. Tee muutokset ja tallenna.

seq4611.jpg

”Hyvä” Sequencer-kone

Alusta:
Työasemaan asennettava virtualisointisovellus (esim. Virtual PC, Virtualbox)
Windows-käyttöjärjestelmä:
Ympäristön, jonne paketteja tehdään, mukainen. Sekaympäristöissä lähtökohtaisesti vanhempi käyttöjärjestelmä, vaikkakin osasta ohjelmia joutuu tekemään erilliset paketit.
Käyttöjärjestelmän asetukset:
1. Kone ei ole domainin jäsen
2. Koneeseen ei ole asennettu mitään ohjelmia. Mitä ikinä koneesta löytyykin, olettaa Sequancer sen löytyvän jokaisesta kohdekoneesta.
3. Viimeisimmät tietoturvapäivitykset yms. asennettu (frameworkit jne).
4. Kaksi levyosiota (systeemi ja virtualisointiasemaa vastaava asema). Levytilaa kannattaa varata reilusti.
5. Tiedostosuojaukset muokattavissa.

Kun kaikki vivut ovat halutusti kohdallaan, asennetaan Sequencer-ohjelma koneelle. Tässä vaiheessa kannattaa ottaa koneesta snapshot. Jokaisen paketoinnin jälkeen vain palauttaa koneen tuohon snapshottiin, niin voi helposti aloittaa seuraavan ohjelman paketoinnin puhtaalta pöydältä.

Sequencerin asennus

Itse ohjelmiston asennus on hyvin yksinkertainen prosessi.
ScreenShot030.jpg
ScreenShot031.jpg
ScreenShot032.jpg
ScreenShot033.jpg
ScreenShot034.jpg
ScreenShot035.jpg

Suorituskyvyn parantaminen

Sekvensointi vaatii hyvin paljon levy-I/O:ta. Niinpä helpoiten lisätehoa saa käyttämällä kahta fyysistä kiintolevyä. Toiselle kovalevylle sijoittaa system- ja virtualisointiosiot ja toiseen scratchin ja lokin. Tarvittaessa Sequencerin loki ja scratch-kansion sijaintia voi vaihtaa kohdasta Tools -> Options -> General.
appv5551.jpg

"Hyvät" sekvensointi-käytännöt

1. Asenna ohjelma ainakin kerran ennen varsinaista paketointia. Tarkkaile seuraavia asioita:

  • Asennuskansion määrittely.
  • Asentaako ohjelma itsensä lisäksi muita ohjelmia -> Mieti paketoitko lisäohjelmat samaan pakettiin vai päädytkö muuhun ratkaisuun…
  • Päivittääkö ohjelma itsensä automaattisesti -> Etsi kuinka sitä voi konfiguroida.
  • Tallentaako ohjelma esim. käyttäjäkohtaisia asetuksia -> Pohdi, halutaanko ne sisällyttää virtuaalipakettiin vai ei.

2. Suorita seuraavat toimenpiteet sekvensointi-koneella ennen varsinaista paketointia:

  • Luo työpöydälle ja virtualisointiaseman juureen (oletuksena Q-asema) 8.3 nimeämissäännön mukainen kansio paketoitavalle ohjelmalle.
  • Tallenna ohjelman asennuspaketti paikallisesti sekvensointi-koneelle. -> Tällöin Sequencer ei nauhoita siirtoa verkosta.
  • Jos asennuspaketti on pakattu, pura se. -> Turha nauhoittaa purkua. Pahimmillaan puretut asennustiedostot jäävät virtuaalipakettiin.

3. Dokumentoi koko paketointivaihe! Kuvankaappaus joka vaiheesta tai jopa videon nauhoittaminen operaatiosta on järkevää.
4. Paketoinnin aloitus.

  • Avaa Sequencer ja luo uusi paketti.
  • Anna paketin nimeksi sama kuin annoit luoduille kansioille.
  • Käytä pääasiallisena asennuskansiona virtualisointiasemalle luomasi kansiota.

5. Nauhoitus

  • Asenna ohjelma virtualisointiaseman kansioon. Perusajatuksena voi pitää että 8.3-säännönmukainen kansio korvaa Program Files-kansion. Esim: Q:\kahdeksa.001\valmistaja\ohjelma
  • Poista käytöstä mahdollinen automaattiasennuspalvelu.
  • Muokkaa ohjelman asetukset haluamaksesi.
  • Käynnistä ohjelma muutamaan otteeseen.

6. Paketin viimeistely.

  • Jokaisesta pikakuvakkeesta luodaan osd-tiedosto. -> Mieti tarkkaan mitä tarvitaan ja mitä ei.
ScreenShot041.jpg
  • Suorita Launch optimoidaksesi streamausta.
ScreenShot042.jpg
  • Path-arvoksi sama kuin työpöydälle luotu kansio. Muut asetukset tarpeen mukaan.
ScreenShot043.jpg
  • Profiilikohtaiset asetustiedostot kannattaa poistaa paketista. Tällöin tiedostot luodaan normaalisti clientillä. Jos nämä asetukset tallennetaan virtuaalipakettiin ja paketti poistetaan, häviävät asetukset sen mukana.
ScreenShot044.jpg
  • Lopuksi tallenna paketti työpöydän kansioon ja ota paketti käyttöön.

Application Virtualization Sequencing SuperFlow

AVSS ei tee puolestasi mitään vaan puumaisella etenemisohjeellaan toimii vallan mainiona "muistilappuna". Ehkäisee "ainiin unohtu"-tilanteita sovelluksia paketoidessa. LATAUS

ScreenShot001.jpg

Office 2010-paketointi

Ennen varsinaista paketointia pitää paketointikoneessa olla seuraavat asiat kunnossa.

1. Vähintään Sequencerin versio 4.6
2. Windows Search 4.0 käytössä
3. XPS Viewer asennettu
4. Windows Update pois päältä

Nyt olet valmis asentamaan Microsoft Office 2010 Deployment Kit for App-V:n.

Asenna paketti komentoriviltä. Asennettaessa pitää määritellä minkälaista Office-pakettia koneessa tullaan käyttämään. Alla olevalla komennolla asennetaan 64-bittinen Office Professional Plus, joka aktivoituu käyttäen KMS-palvelinta.
Muita vaihtoehtoja löytyy Microsoft Supportista

ScreenShot005.jpg

Tämän jälkeen voit paketoida Sequencerillä Office 2010:n.

Jotta paketoitu Office toimisi muilla koneilla, pitää niihin myös asentaa sekvensointi-koneeseen asennettu Deployment Kit for App-V. Asennettaessa pitää kertoa, mikä paketoitaessa on sallittu. Yllä paketoitu paketti saadaan toimimaan suorittamalla asennus seuraavalla komennolla:

ScreenShot006.jpg

Windows Update paketoitaessa

Oletuksena Sequencerin nauhoittaessa Windows Update on poissa päältä. Kun paketoit Microsoftin tuotteita haluat varmasti päivittää viimeisimmät päivitykset. Windows Updaten saat paketoidessa päälle seuraavalla tavalla:

Aloittaessasi nauhoitusta valitse Show Advanced Monitoring Options.

appvwinupdate01.jpg

Advanced-kohdassa salli Updaten käyttö.

appvwinupdate02.jpg

OSD-skriptaus

Aina kaikkea tarpeellista ei saa sisällettyä virtuaalipakettiin. Näihin ongelmiin on ratkaisuna OSD-tiedostoon sijoitettavat skriptit. Skriptien suoritusajankohtaa ja -tapaa voi helposti muokata (tarkempaa tietoa täältä). Katsotaan tässä muutama esimerkki:

<SCRIPTBODY>

Tässä esimerkissä komento cmd.exe suoritetaan "virtuaalikuplan" sisällä ennen virtualisoidun sovelluksen käynnistymistä. Virtualisoitu sovellus ei käynnisty ennen tämän suorituksen loppumista.

     <SCRIPT TIMING="PRE" EVENT="LAUNCH" WAIT="TRUE" PROTECT="TRUE">
            <SCRIPTBODY>cmd.exe</SCRIPTBODY>
        </SCRIPT>
ScreenShot055.jpg
Voit suorittaa myös valmiiksi kirjoitettuja scriptejä. HUOM! <Scriptbody> tagia käytettäessä pitää kansiopolun \ -merkit esittää tuplana.
     <SCRIPT TIMING="PRE" EVENT="LAUNCH" WAIT="TRUE" PROTECT="TRUE">
            <SCRIPTBODY>
            call \\\\stream\\content\\testi.cmd
            </SCRIPTBODY>
        </SCRIPT>
ScreenShot061.jpg
Myös usean komennon suorittaminen kerralla onnistuu, \n kertoo lisäkomennosta.
        <SCRIPT TIMING="PRE" EVENT="LAUNCH" WAIT="TRUE" PROTECT="TRUE">
                <SCRIPTBODY>
                net use p: \\\\stream\\content \n
                call \\\\stream\\content\\testi.cmd \n
                </SCRIPTBODY>
        </SCRIPT>
ScreenShot064.jpg
Lisäksi komentoja voi suorittaa useassa eri vaiheessa ohjelmaa käytettäessä.
        <SCRIPT TIMING="PRE" EVENT="LAUNCH" WAIT="TRUE" PROTECT="TRUE">
            <SCRIPTBODY>
            net use p: \\\\stream\\content \n
            call \\\\stream\\content\\testi.cmd \n
            </SCRIPTBODY>
        </SCRIPT>
        <SCRIPT TIMING="POST" EVENT="SHUTDOWN" WAIT="TRUE" PROTECT="TRUE">
            <SCRIPTBODY>
            net use /delete /y p:
            </SCRIPTBODY>
        </SCRIPT>
ScreenShot066.jpg

<HREF>

HREF on toinen käytettävä tagi. HREFissä kansiopoluissa ei tarvitse esittää \ -merkkiä tuplana.

        <SCRIPT TIMING="PRE" EVENT="LAUNCH" WAIT="TRUE" PROTECT="TRUE">
            <HREF>net use p: \\stream\content</HREF>
        </SCRIPT>

Dynamic Suiting

Oletuksella App-V-paketoidut ohjelmat eivät näe toisiaan, mikä on hyvin hyödyllinen ominaisuus. Tosin tulee myös tilanteita, joissa sovellusten pitää "puhua" keskenään. Helpoin tapa on asentaa sovellukset samaan pakettiin. Tämä muotoutuu ongelmaksi, kun useampi ohjelma käyttää samaa ohjelmaa. Sovelluksen päivittyessä pitäisi siis päivittää jokainen ohjelma erikseen. Dynamic Suiting ratkaisee tämän sallien haluttujen ohjelmien "puhua" keskenään.
Käytännössä muutos määritellään sen ohjelman osd-tiedostoon, joka hyödyntää toista ohjelmaa. Tätä helpottamaan on olemassa Application Virtualization Dynamic Suite Composition Tool.

Avaa AVDSCT ja lisää paketit, joita halutaan käyttää.
ScreenShot058.jpg
Valitse Primary-paketti ja lisää halutut paketit Dependencies-kohtaan. Määrittele lisäksi, onko riippuvuus pakollinen vai ei (Mandatory). Jos Mandatory on valittuna, Primary-paketti ei suostu toimimaan ilman riippuvuuden olemassaoloa. Tehdäksesi asetukset paina Save. AVDSCT tekee varmuuskopion alkuperäisistä tiedoista, joten painamalla Restore voit palata alkuperäisiin asetuksiin.
ScreenShot059.jpg

Vanhat paketit toimimaan 64-bittisessä Windows 7:ssa

Koska aiemmissa versioissa ei ole ollut tukea 64-bittiseen käyttikseen, pitää vanhoihin paketteihin lisätä uudet käyttöjärjestelmävaihtoehdot. Voit tehdä tämän avaamalla jokaisen paketin Sequencerissä ja lisäämällä käyttiksen. Helpompi tapa on kuitenkin avata paketin osd-tiedosto Notepadiin ja lisätä kuvan mukaisesti käyttis kohtaan /VM.
Tämä tapa ei tietenkään ratkaise sitä ongelmaa, jos vanha ohjelma ei yksinkertaisesti toimi 64-bittisessä ympäristössä. Esimerkiksi jos ohjelma käyttää jotain ulkoisia laitteita (esim. skanneri), eivät ne todennäköisesti toimi. Tällöin kannattaa paketoida 64-bittisiä clienttejä varten oma paketti.

Windows 7:n 64-bittisen version saa käyttöön seuraavalla rivillä:

<OS VALUE="Win764"/>
appv64.jpg

Version 4.6 käyttämät käyttöjärjestelmänimet

<OS VALUE=”Win2003TS”/>
<OS VALUE=”Win2003TS64”/>
<OS VALUE=”Win2008TS”/>
<OS VALUE=”Win2008TS64”/>
<OS VALUE=”Win2008R2TS64”/>
<OS VALUE=”Win7”/>
<OS VALUE=”Win764”/>
<OS VALUE=”WinVista”/>
<OS VALUE=”WinVista64”/>
<OS VALUE=”WinXP”/>
<OS VALUE=”WinXP64”/>

Paketointi "kikkoja"

Ratkaistaksesi paketin toimimattomuuspulmia, on hyvä päästä esim. komentorivillä testailemaan paketin sisältä. Seuraavalla komennolla saat komentorivin auki clientillä haluamasi ohjelman kuplan sisältä.

Sfttray.exe  /exe cmd.exe "OHJELMANNIMI"

Security descriptorit saa kätevimmin pois päältä ja päälle avaamalla ohjelman sprj-tiedoston ja muokkaamalla seuraavaa kohtaa (vaihtoehdot ovat Yes tai No):

    <DEFAULTS>
        <DEFAULT Name="UseSecurityDescriptors" Value="Yes"/>
    </DEFAULTS>

Virtuaalipalvelut

Jos paketoitu sovellus asentaa palveluja, sisällytetään ne pakettiin. Palveluja voit tutkia ja tarvittaessa muokata Virtual Services-välilehdellä sequencerissä paketoinnin jälkeen.
Sovelluksen käynnistymisnopeuden kannalta kannattaa olla tarkkana, jos palvelu on määritelty käynnistymään automaattisesti. App-V -paketin luonteen mukaisesti palvelu käynnistyy vasta kun sovellus käynnistetään ja sammuu samantien, kun sovellus sammutetaan. Tämä hidastaa sovelluksen käynnistymistä, koska se odottaa palvelun käynnistämistä. Tämä kannattaa tutkia tapauskohtaisesti voiko esim. palvelun käynnistymisen muuttaa manual-tilaan. Tällöin sovellus ei odota palvelun käynnistymistä.

App-V client

Desktop Clientin asentaminen

Clientin perusasennus on hyvin simppeliä.
ScreenShot045.jpg
ScreenShot046.jpg
ScreenShot047.jpg
ScreenShot048.jpg
ScreenShot049.jpg
ScreenShot050.jpg
ScreenShot051.jpg

Standalone-asennus

Standalone-tilassa et tarvitse palvelinympäristöä ohjelmiston levittämiseen. Kunhan sekvensoidessa luot msi-paketin, voit asentaa sen paikallisesti standalone-clienttiin.
Standalone-asennuksen voi suorittaa esimerkiksi seuraavalla tavalla:

1. Asenna client oletusasetuksilla.
2. Tallenna alla olevat rekisteriasetukset reg-tiedostoon.
3. Suorita reg-tiedosto koneessa.
4. Uudelleenkäynnistä kone.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SoftGrid\4.5\Client\Configuration]
"RequireAuthorizationIfCached"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SoftGrid\4.5\Client\Network]
"Online"=dword:00000000
"DOTimeoutMinutes"=dword:ffffffff
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SoftGrid\4.5\Client\Permissions]
"ToggleOfflineMode"=dword:00000000

Toinen tapa on asentaa client komentoriviltä seuraavin asetuksin:

"setup.exe" /s /v"/qb-! AUTOLOADTARGET=\"NONE\" REQUIREAUTHORIZATIONIFCACHED=\"FALSE\""

Automatisoitu

Isoissa ympäristöissä clientin asentaminen käsin ei varmastikaan ole vaihtoehto, vaan käytössä on jokin ohjelmistonlevitystyökalu. Clientin voi asentaa joko exe- tai msi-paketista. Exe on vaivattomampi, koska se huolehtii, että työasemiin asentuu myös muut tarvittavat komponentit (Microsoft Visual C++ 2005 SP1 Redistributable Package (x86), Microsoft Core XML Services (MSXML) 6.0 SP1 (x86), Microsoft Application Error Reporting). Msi-asennuksessa tarvittavat komponentit pitää asentaa erikseen.

Alla esimerkki "silent" asennuskomennosta. Komento määrittää Publishing Server-palvelimeksi testiappv.local, protokollaksi RTSP:een ja virtuaaliasemankirjaimeksi U:un. Lisää asennuksessa käytettäviä määrityksiä löytyy TechNetistä

"setup.exe" /s /v"/qn SWIPUBSVRDISPLAY=\"testiappv\" SWIPUBSVRTYPE=\"RTSP\" SWIPUBSVRHOST=\"testiappv.local\" SWIFSDRIVE=\"U\""

Remote Desktop Services Client

App-V -clientistä on erillinen versio RDS-palvelimille (entinen Terminal Server).
Etuja:

1. Samalla RDS-palvelimella voidaan ajaa useita ohjelmia eivätkä ne "näe" toisiaan, koska toimivat omissa virtuaalisissa "kuplissaan" -> palvelimen käyttöaste saadaan korkeammaksi, eikä tarvitse pelätä ohjelmistojen välisiä konflikteja.
2. Ohjelmien uudelleenkonfigurointi tai päivitys ei vaadi palvelun keskeytystä. Mahdolliset muutokset tehdään sekvensointi-koneella, jonka jälkeen valmis paketti vain tiputetaan RDS-palvelimelle.
3. Tietoturva. Mahdolliset ohjelmien vaatimat viritykset tehdään "virtuaalikuplaan". Eli itse palvelimen asetuksissa ei tarvitse tehdä kompromisseja.

Clientin asennus RDS-palvelimeen

Siirrä palvelin Install Modeen ja aloita asennus.

appvrds001.jpg
appvrds002.jpg
appvrds003.jpg
appvrds004.jpg
appvrds005.jpg
appvrds006.jpg
appvrds007.jpg
appvrds008.jpg
appvrds009.jpg
appvrds010.jpg
appvrds011.jpg
appvrds012.jpg

Read-Only Cache

Tällä tekniikalla usea client voi käyttää samaa cachea. Tämä sopii esimerkiksi VDI-ympäristöihin, jolloin jokaiselle clientille ei turhaan kirjoiteta samaa tietoa. Koska cacheen on vain lukuoikeudet, pitää siihen saada ensin sisältöä. Ota käyttöön mallikone, joka on kytketty App-V -sovellusten jakelujärjestelmääsi. Streamaa cacheen tarvittavat paketit kokonaisuudessaan. Tämän jälkeen disabloi sftlist-palvelu ja buuttaa kone.
ScreenShot060.jpg
Uudelleenkäynnistyksen jälkeen mene kansioon, jossa sftfs.fsd sijaitsee (Windows7-koneessa oletussijainti on C:\Users\All Users\Microsoft\Application Virtualization Client\SoftGrid Client HUOM! todellinen sijainti programdata kansio). Kopioi sftfs.fsd paikkaan, jota aiot käyttää cachena (esimerkiksi levyjaolle).
ScreenShot062.jpg
Kun cache on luotu, on aika konfiguroida clientit käyttämään sitä. Käyttöönotto tapahtuu muuttamalla seuraavat rekisteriarvot:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SoftGrid\4.5\Client\AppFS]
"FileName"="polku_sftfs.fsd_tiedostoon"
"ReadOnlyFSD"=dword:00000001 //Arvo 1 määrittää readonlyn käyttöön//
"ErrorLogLocation"="C:\\paikka_client_koneella_johon_haluat_lokien_tallentuvan"

ScreenShot063.jpg
HUOM! 1. Paketit pitää edelleen julkaista/asentaa jollakin järjestelmällä.
HUOM! 2. Koska cache on vain lukuoikeuksilla, ei ohjelmia voi lisätä tai päivittää. Päivitykset/lisäykset suoritetaan samalla tavalla kuin cachen luonti.
HUOM! 2b. Kun vanhaa sftfs.fsd-tiedostoa korvataan uudella, pitää huolehtia ettei yksikään client käytä sitä.

Ongelmia

Management Server häviää clientistä1

Käyttöjärjestelmän asennuksessa huomattiin ongelma. SCCM:llä asennettaessa käyttöjärjestelmä, asennettiin samassa taskissa myös App-V -client tietyin asetuksin. Kaikki asetukset lukuun ottamatta Management Server-asetusta tulivat voimaan. Kun sitten taas App-V -client asennettiin erillisellä mainostuksella tulivat asetukset oikein.
"Ongelma" selvisi lopulta, SCCM-ympäristössä oli testimielessä laitettu App-V -integraatio päälle ja SCCM-clientin asennus koneeseen tapahtui asennustaskin jälkeen. SCCM-clientin asennus jyräsi App-V:n asetukset ympäristöön sopivaksi. App-V:n full infrastructure ja SCCM-integraatio ovat toisensa poissulkevia palveluja ja niinpä Management Serverin tiedot poistettiin. App-V -integraation sammuttaminen poisti ongelman, jonka jälkeen full infrastructure-asetuksilla olevan clientin asennus onnistui myös ennen SCCM-clientin asennusta.
Clientin tilanteen voi tarkistaa lokista system32\ccm\logs\VirtualApp.log.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NoDerivs 3.0 License