È possibile guidare l'installazione di nuovi programmi usando% ProgramFiles%? [chiuso]


2

Lo scopo è quello di avere le cartelle predefinite dei "file di programma" (32 e 64 bit) posizionate in un percorso arbitrario, possibilmente su un'unità separata da dove risiede Windows.

Inizialmente ho pensato che questo potesse essere fatto usando una variabile di ambiente di sistema attraverso la finestra di dialogo situata in Pannello di controllo -> Sistema -> Avanzate -> Variabili d'ambiente . Queste variabili si sono rivelate essere impostate nel registro sotto la chiave HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion. Tuttavia, una voce particolare è confusa. La ProgramFilesPathvoce sembra puntare a una variabile di ambiente che non è definita nella stessa chiave di registro.

Potrei supporre che la differenza tra ProgramFilesDire ProgramFilesPathnon sia nessuna e che una di esse esista come compatibilità all'indietro, ma avere qualche risorsa legittima da Microsoft da guardare sarebbe meglio che indovinare.

Dopo aver ricevuto alcuni commenti preoccupanti sull'avere entrambe le applicazioni a 32 e 64 bit nella stessa cartella, ho deciso di non chiedere la fattibilità di questo per evitare discussioni.

La vera domanda è se è possibile ottenere l'effetto desiderato "tagliando" il processo di installazione di Windows e modificando le voci di registro il prima possibile. Queste impostazioni dovrebbero essere a livello di sistema e non solo per il software installato da un determinato utente. Se questo è davvero qualcosa che può essere fatto, mi chiedo se ci siano insidie ​​sottili.

I programmi che prevedono che librerie e altre risorse si trovino in posizioni predefinite possono probabilmente essere gestiti utilizzando la stessa tecnica utilizzata da Windows per mappare nuovamente le cartelle "Documents and Settings" e simili (ovvero, rompere le applicazioni legacy non è una vera preoccupazione).


1
Non è una buona idea mettere il programma a 32 e 64 bit nella stessa cartella. Guarda il thread Perché Windows a 64 bit necessita di una cartella "Programmi (x86)" separata? .
avirk

Diciamo che non ci proverò (sono disposto a indovinare / sperare che nessuna delle mie applicazioni guardi percorsi codificati per le loro librerie). Sarebbe comunque utile per me mettere le applicazioni in cartelle denominate "ProgramFiles" e "ProgramFiles64" invece di "Program Files" e "Program Files (x86)".
Ярослав Рахматуллин

Quindi è possibile installarli manualmente utilizzando l' opzione Personalizzata e sfogliare il percorso desiderato. Non sono ancora favorevole all'installazione forzata di tutte le app nella stessa cartella.
avirk

E se si installassero applicazioni senza la GUI? Non tutti gli installatori (se presenti) sono abbastanza "intelligenti" per accettare il percorso di destinazione come argomento. Inoltre, questa è la mia postazione di lavoro. Non devo preoccuparmi di rovinare la giornata lavorativa di qualcuno o qualcosa di più drammatico.
Ярослав Рахматуллин,

1
Chiarimento - Pannello di controllo -> Sistema -> Avanzate -> Le modifiche alle variabili di ambiente sono memorizzate in HKCU\Environmente HKLM\System\CurrentControlSet\Control\Sesssion Manager\Environment, rispettivamente, non HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion. I valori di registro ProgramFilesDire ProgramFilesPathche sono in quella chiave, per quanto ho visto finora nella mia ricerca, sono valori impostati staticamente. Questo articolo della KB può anche essere una lettura interessante per i partecipanti a questa Domande e risposte.
user66001,

Risposte:


0

Sì, la modifica della variabile dovrebbe rendere predefiniti i nuovi programmi nella nuova cartella, ma fa sì che Windows (e qualsiasi programma, opportunamente codificato, che utilizza la variabile) cerchi nella nuova cartella i programmi in generale. Di conseguenza, si romperà il software che è già installato almeno in una certa misura.

A seconda del software, i percorsi possono essere o meno codificati durante l'installazione. Se non sono codificati e utilizzano la variabile, i programmi non verranno più trovati. Se sono hardcoded, continueranno (o almeno dovrebbero ) continuare a funzionare, ma altri effetti collaterali possono / manifestarsi come Windows e altri programmi che eseguono operazioni su programmi installati (come ripulire i file temporanei, scansionare per aggiornamenti, ecc.) potrebbero non essere in grado di vederli a seconda di come sono codificati.

Il punto è che è meglio cambiare la variabile prima o durante (o al massimo, immediatamente dopo) l'installazione di Windows. Farlo in seguito, soprattutto dopo aver già installato programmi (in particolare programmi di grandi dimensioni che scavano in profondità nel sistema come la maggior parte dei programmi Microsoft) è una cattiva idea e piena di rischi.

(In realtà, mentre il punto centrale nell'uso delle variabili è rendere più semplice apportare modifiche, il fatto è che è sempre rischioso apportare modifiche a percorsi simili Program Filese Windowsnon importa quando lo si modifica, perché alcuni programmi, incluso Windows, inevitabilmente avere un pezzo di codice che si aspetta che le cose si trovino in un posto specifico, e quindi si romperà se lo cambi.)


Dov'è impostata la variabile? Come si fa a incorporare uno script binario o addirittura batch nel processo di installazione di Windows? Stavo pensando che sarebbe stato possibile evitare problemi con i programmi che prevedono che le cose si trovino nella posizione predefinita usando tecniche simili a quelle di Windows con "Documents and Settings" e simili.
Ярослав Рахматуллин,

La variabile è memorizzata nel registro HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion. Se si desidera modificarlo il prima possibile, è necessario montare l'hive del registro dai file di installazione, modificarlo, quindi installare Windows. In questo modo, quando verrà installato Windows, utilizzerà il percorso modificato fin dall'inizio.
Synetech,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.