3.7 KiB
nsShellExecAsUser NSIS Plugin
Versione personale modificata
Descrizione Originale
ShellExecAsUser plug-in
Esegue il programma specificato tramite ShellExecute. Utile quando il processo installer è in esecuzione con privilegi elevati (UAC) ma si vuole avviare un'applicazione come l'utente standard connesso (es. avvio dell'applicazione dopo l'installazione).
Funzionalità
- Avvia applicazioni come l'utente desktop corrente
- Bypassa l'elevazione UAC se l'installer è in esecuzione come Amministratore
- Supporta i verbi standard di ShellExecute (open, runas, print, ecc.)
- Supporta le modalità di visualizzazione finestra (SW_SHOWNORMAL, SW_HIDE, ecc.)
- Supporto Win95/98/ME/NT/2000/XP/Vista/7/8/10/11
- Supporto NSIS UNICODE
Utilizzo
ShellExecAsUser::ShellExecAsUser "azione" "comando" "parametri" "modalità_finestra"
Parametri:
azione- Il verbo da usare (es. "open", "runas", "print"). Può essere vuoto""per l'azione default.comando- Percorso all'eseguibile o file da aprire.parametri- Argomenti della riga di comando.modalità_finestra- Modalità di visualizzazione della finestra.
Modalità Finestra Supportate:
SW_SHOWDEFAULTSW_SHOWNORMAL(default)SW_SHOWMAXIMIZEDSW_SHOWMINIMIZEDSW_HIDE
Directory di Lavoro:
Il plugin usa la directory di output NSIS corrente ($OUTDIR) come directory di lavoro per il processo avviato.
Esempio
Section "Avvia Applicazione"
SetOutPath "$INSTDIR"
ShellExecAsUser::ShellExecAsUser "open" "$INSTDIR\MyApp.exe" "" "SW_SHOWNORMAL"
SectionEnd
Per aprire un URL nel browser predefinito come utente:
ShellExecAsUser::ShellExecAsUser "open" "https://example.com" "" "SW_SHOWNORMAL"
File include
Non esiste un file di macro wrapper per questo plugin. Chiama il plugin direttamente come mostrato nella sezione utilizzo.
⚠️ Differenze nella versione personale
Architetture supportate
Il progetto supporta le configurazioni già presenti nell'originale:
- amd64-unicode (x64)
- x86-ansi
- x86-unicode
Progetto Visual Studio
Il progetto è stato aggiornato e riorganizzato:
Contrib/ShellExecAsUser/ShellExecAsUser.sln- Solution VS2022Contrib/ShellExecAsUser/ShellExecAsUser.vcxproj- Progetto VS2022 aggiornato
File aggiunti
build_plugin.py- Script Python per compilare il plugin per tutte le architetture supportate.nsis/- Header NSIS inclusi per facilitare la compilazione.
Modifiche al Codice
- Rimozione Warning Deprecazione: Sostituita la chiamata deprecata
GetVersionExinVistaTools.cxxcon la moderna APIVerifyVersionInfoper evitare warning C4996 durante la compilazione con i toolset moderni. - Aggiornamento Build: Configurazione aggiornata per utilizzare il toolset v143 (Visual Studio 2022).
Compilazione
cd nsShellExecAsUser
python build_plugin.py
I DLL vengono copiati in plugins/{platform}/ShellExecAsUser.dll.
Opzioni build
python build_plugin.py --config x86-unicode # Solo un'architettura (x86-ansi|x86-unicode|amd64-unicode|all)
python build_plugin.py --toolset 2026 # Toolset specifico (2022|2026|auto)
python build_plugin.py --jobs 4 # Numero di job MSBuild paralleli (default: CPU count)
python build_plugin.py --clean # Pulizia dist/ prima della build
python build_plugin.py --install-dir "C:\NSIS\Plugins" # Copia in directory NSIS aggiuntiva
python build_plugin.py --verbose # Output MSBuild esteso
python build_plugin.py --version # Stampa versione ed esce
See README.md for the English version.