tis-disable-cortana 3

  • package : tis-disable-cortana
  • version : 3
  • description : Disable and uninstall Cortana on Windows10
  • maintainer : TIS <technique@tranquil-it-systems.fr>
  • date : 2017-07-20 11:19:47
  • signer : TRANQUIL IT SYSTEMS
  • signature_date : 20170720-111947
  • min_os_version : 6.2.0
  • min_wapt_version :

setup.py

# -*- coding: utf-8 -*-
from setuphelpers import *
import subprocess
import json

uninstallkey = []

def run_powershell(cmd,output_format='json',**kwargs):
    """Run a command/script (possibly multiline) using powershell, return output in text format
        If format is 'json', the result is piped to ConvertTo-Json and converted back to a python dict for convenient use
    """
    cmd = ensure_unicode(cmd)
    if output_format == 'json':
        output_format_ps = 'text'
        cmd = '(%s) | ConvertTo-Json' % cmd
    else:
        output_format_ps = output_format
    # command is a utf16 without bom encoded with base54 without \n
    # we should not get stderr so that ouput can be decoded as json. stderr get progress report...
    if not 'return_stderr' in kwargs or not isinstance(return_stderr,list):
        return_stderr = []
    else:
        kwargs.pop('return_stderr')
    try:
        with disable_file_system_redirection():
            result = ensure_unicode(subprocess.check_output(u'powershell -ExecutionPolicy Unrestricted -OutputFormat %s -encodedCommand %s' %
                    (output_format_ps,
                     cmd.encode('utf-16le').encode('base64').replace('\n','')),
                    **kwargs))
    except subprocess.CalledProcessError as e:
        raise subprocess.CalledProcessError(e.returncode,cmd,e.output)

    #remove comments...
    if output_format.lower() == 'xml':
        lines = [l for l in result.splitlines() if not l.strip().startswith('#')]
        import xml.etree.ElementTree as ET
        return ET.fromstringlist(lines)
    elif output_format.lower() == 'json':
        import json
        if not result:
            return None
        else:
            try:
                ### there are  ''[ and ]'' around.
                return json.loads(result)
            except ValueError as e:
                raise ValueError(u'%s returned non json data:\n%s' % (cmd,result))
    else:
        return result




def install():
    registry_set(HKEY_LOCAL_MACHINE, r'SOFTWARE\Policies\Microsoft\Windows\Windows Search', r'AllowCortana', 0, REG_DWORD)
    run_powershell('Get-AppxPackage -Name Microsoft.Windows.Cortana -AllUsers | Remove-AppxPackage')

def uninstall():
    registry_set(HKEY_LOCAL_MACHINE, r'SOFTWARE\Policies\Microsoft\Windows\Windows Search', r'AllowCortana', 1, REG_DWORD)
    run_powershell('Get-AppxPackage -Name Microsoft.Windows.Cortana -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}')

    

manifest

[["setup.py", "290604835b8867580f07f0948d7d2b8a5fb7aa92"], ["WAPT/certificate.crt", "0db563dc9077b268ca07ba834322d0fc5e21f8e5"], ["WAPT/wapt.psproj", "575da1ee74ac6e8c12f437d8399530183e2347c5"], ["WAPT/control", "0539a0a5d92a533f5a4cbbb9fcc3b40c01b469b3"]]
    

Forum feed

WAPT Packages / Paquets WAPT • Re: Setup.py de Mblock
myosotis a écrit :
31 décembre 2017, 16:06
Ne peut-on pas interagir avec l'appdata du current user tandis qu'un paquet est déployé?
On peut mais c'est plus compliqué, le session setup rend les chose plus simple:

CODE :

# -*- coding: utf-8 -*-from setuphelpers import *uninstallkey = []key = "{1E9DFEBB-4088-4693-A521-C755318BD492}_is1"profil_name = 'com.makeblock.Scratch3.4.11'profil_mblock_appdata = makepath('c:','ProgramData','mblock',profil_name)profil_mblock = makepath(application_data(),profil_name)def install():        versionpaquet = control['version'].split('-',1)[0]        print('Importation des drivers')        with disable_file_system_redirection():             run('regedit.exe /s usbserial_arduino.reg')             run(r'"%s" /VERYSILENT' % makepath('drivers','Driver_for_Windows.exe'))        print('installing aiz-mblock')        install_exe_if_needed("mBlock_win_V"+versionpaquet+".exe",                            silentflags="/VERYSILENT",                            key=key,                            min_version=versionpaquet,                            killbefore="mBlock.exe")        #suppression de la clé de désinstallation pour pouvoir faire une désinstallation silencieuse. Voir def uninstall():        uninstallkey.remove(key)        #suppression du raccourci bureau        remove_desktop_shortcut('mBlock')        if isdir(profil_mblock_appdata):            remove_tree(profil_mblock_appdata)        copytree2(profil_name,profil_mblock_appdata)def session_setup():    if isdir(profil_mblock):        remove_tree(profil_mblock)    copytree2(profil_mblock_appdata,profil_mblock)def uninstall():    print('uninstalling aiz-mblock')    run(r'"%s\unins000.exe" /VERYSILENT' % install_location(key))

Le profil "com.makeblock.Scratch3.4.11" sera écrasé a la prochaine ouverture de session.
De cette manière même si le profil de l'utilisateur n'existe pas encore ça fonctionnera très bien !

N'oubliez pas d'incrémenter le numéro de version du paquet après chaque modification du session setup !

Statistiques: Posté par sfonteneau — 31 décembre 2017, 18:15


WAPT Packages / Paquets WAPT • Re: Setup.py de Mblock

CODE :

# -*- coding: utf-8 -*-from setuphelpers import *# Importation des fichiers de personalisation copytree2(r'Perso',r'C:\ProgramData\mBlock') #Import du dossier fourni dans le paquetfilecopyto(r'Copy.cmd',r'C:\ProgramData\mBlock') #Import d'un fourni egalement avec le paquetkey = "{1E9DFEBB-4088-4693-A521-C755318BD492}_is1"uninstallkey = ['{1E9DFEBB-4088-4693-A521-C755318BD492}_is1']#Creation d'un targetdir en faisant usage de user_appdata qui selon la doc renvoit à /userX/appdata/roaming/targetdir = makepath(user_appdata(),'com.makeblock.Scratch3.4.11')print targetdir # ça c'est pour moi ;) - ca m'affiche bien le dossier souhaité... malheureusement l'exploit est nulle#uninstallstring = [r' ""C:\Program Files (x86)\mBlock\unins000.exe" /SILENT {1E9DFEBB-4088-4693-A521-C755318BD492}_is1']def install():        versionpaquet = control['version'].split('-',1)[0]        print('Importation de drivers')        with disable_file_system_redirection():             run('regedit.exe /s usbserial_arduino.reg')             run(r'"%s" /VERYSILENT' % makepath('drivers','Driver_for_Windows.exe'))        print('Installation de util-mblock')        install_exe_if_needed("mBlock_win_V"+versionpaquet+".exe",                            silentflags="/VERYSILENT",                            key=key,                            min_version=versionpaquet,                            killbefore="mBlock.exe")#suppression de la clé de désinstallation pour pouvoir faire une désinstallation silencieuse. Voir def uninstall():        #uninstallkey.remove(key) # FONCTION pas dispo dans Setuphelpers v1.3.5        #suppression du raccourci bureau        #remove_desktop_shortcut('mBlock')print "Post installation"lang = makepath(targetdir)if not isdir(lang):os.makedirs(lang)copytree2('Perso','targetdir') #Tentative d'import de com.makeblock.Scratch3.4.11 via fonction copytree2 + user_appdata() : Resultat non probantsession_setup()   def uninstall():    print('Désinstallation de util-mblock')    run(r'"%s\unins000.exe" /VERYSILENT' % install_location(key))def session_setup():targetdir = makepath(user_appdata(),'com.makeblock.Scratch3.4.11')if not isdir(targetdir):print('creation du dossier com.makeblock.Scratch3.4.11')mkdirs(makepath(user_appdata(),'com.makeblock.Scratch3.4.11'))#copytree2('C:\ProgramData\mBlock','targetdir')run(r'C:\ProgramData\mBlock\Copy.cmd')#ci-dessus vs avez mes 2 tentatives : (1) via copytree2;, l'autre via le run d'un cmd que j'ai essayé de runner pour injecter les fichiers adéquats. Ni l'une, ni l'autre des méthodes ne fonctionnent.else:#remove_file(makepath(user_appdata(),'com.makeblock.Scratch3.4.11'))#copytree2('C:\ProgramData\mBlock','targetdir')run(r'C:\ProgramData\mBlock\Copy.cmd')#copytree2(r'C:\ProgramData\mBlock',r'%USERPROFILE%\AppData\Roaming')#Personalisation de mblock pour l'interactive User - Alternative tryrun(r'"Copy.cmd"')
+ Copie de mon cmd

CODE :

if not exist C:\Users\%username%\AppData\Roaming\com.makeblock.Scratch3.4.11 mkdir C:\Users\%username%\AppData\Roaming\com.makeblock.Scratch3.4.11 xcopy C:\ProgramData\mBlock\com.makeblock.Scratch3.4.11 C:\Users\%username%\AppData\Roaming\com.makeblock.Scratch3.4.11 /E /C /Y
..... ça ne fonctionne pas.... pas plus qu'avec %appdata%

:'( .... ne peut-on pas interagir avec l'appdata du current user tandis qu'un paquet est déployé?

Statistiques: Posté par myosotis — 31 décembre 2017, 16:06