Estoy creando un Asistente de instalación de Visual Studio 2008 para mi programa
http://support.microsoft.com/kb/307353
veo que es posible añadir entradas de registro, etc .. ¿Existe una posibilidad de registrar variable de entorno de Windows sin necesidad de escribir una acción personalizada?
Y si debo escribir una acción personalizada, ¿cuál es la forma menos dolorosa de hacerlo?¿Es posible registrar variables de entorno en el proyecto del asistente de instalación?
Respuesta
mediante Visual Studio 2008, que fácilmente puede hacerlo estableciendo la variable correspondiente en el registro de Windows:
- En el Explorador de soluciones, haga clic en su proyecto (no la solución), y seleccione Ver -> registro
- Crear la clave de registro (carpeta):
- Para una variable de usuario: Haga clic en HKEY_CURRENT_USER, seleccione "Nueva clave ", y asígnele el nombre" Entorno ".
- Para una variable de sistema: Haga clic en HKEY_LOCAL_MACHINE , seleccione "nueva clave", y el nombre "SISTEMA". Continúe haciendo esto para crear la ruta "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment".
- Haga clic en la tecla deMedio Ambiente (carpeta), seleccione Nuevo-> Cadena, y darle el nombre que desee.
- Con la cadena seleccionada, encontrar los Propiedades ventana (Alt + Enter traerá para arriba)
- En la ventana Propiedades, rellenar el Valor desea.
Si desea que el valor haga referencia al directorio de instalación, puede hacerlo así utilizando las variables de propiedad: [TARGETDIR] SomeFile.ext (ver http://msdn.microsoft.com/en-us/library/aa370905%28v=vs.85%29.aspx para más variables de las propiedades)
Windows Installer admite variables de entorno a través de la tabla Environment, pero los proyectos de instalación de Visual Studio no permiten su uso.
Una solución es utilizar una herramienta de autoría de configuración diferente que soporta las variables de entorno: http://en.wikipedia.org/wiki/List_of_installation_software
Otra solución es añadir manualmente en la tabla de Medio Ambiente mediante la edición del MSI con Orca.
También existe el enfoque de acción personalizada que mencionaste.
principio Respuesta explica cómo hacerlo sin una acción personalizada, pero aquellos que buscan una acción personalizada puede utilizar el siguiente código como una plantilla:
[RunInstaller(true)]
public partial class GRInstallCustomAction : System.Configuration.Install.Installer
{
string environmentKey = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment";
string pathUrl = "C:\\Program Files (86)\\TargetFolder";
public GRInstallCustomAction()
{
InitializeComponent();
}
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
}
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
string environmentVar = Environment.GetEnvironmentVariable("PATH");
//get non-expanded PATH environment variable
string oldPath = (string)Registry.LocalMachine.CreateSubKey(environmentKey).GetValue("Path", "", RegistryValueOptions.DoNotExpandEnvironmentNames);
var index = oldPath.IndexOf(pathUrl);
if (index < 0)
{
//set the path as an an expandable string
Registry.LocalMachine.CreateSubKey(environmentKey).SetValue("Path", oldPath + ";" + pathUrl, RegistryValueKind.ExpandString);
}
}
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
public override void Rollback(IDictionary savedState)
{
base.Rollback(savedState);
}
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
//get non-expanded PATH environment variable
string oldPath = (string)Registry.LocalMachine.CreateSubKey(environmentKey).GetValue("Path", "", RegistryValueOptions.DoNotExpandEnvironmentNames);
string removeString = pathUrl + ";";
var index = oldPath.IndexOf(removeString);
if (index < 0)
{
removeString = pathUrl;
index = oldPath.IndexOf(removeString);
}
if (index > -1)
{
oldPath = oldPath.Remove(index, pathUrl.Length);
//set the path as an an expandable string
Registry.LocalMachine.CreateSubKey(environmentKey).SetValue("Path", oldPath, RegistryValueKind.ExpandString);
}
}
}
Este paseo a través le muestra cómo crear y aplicar la acción personalizada: https://msdn.microsoft.com/en-us/library/d9k65z2d(v=vs.100).aspx
- 1. Cómo eliminar el texto "Bienvenido al Asistente de instalación" del proyecto del instalador de Visual Studio
- 2. ¿Es posible usar variables de entorno en php.ini?
- 3. ¿Es posible modificar el archivo del proyecto VS durante la instalación del paquete NuGet?
- 4. Software de asistente de instalación gratuito
- 5. Variables de entorno de referencia en web.xml
- 6. ¿Es posible registrar paquetes dinámicamente en Symfony2?
- 7. ¿Puedo recoger variables de entorno en el script vbscript WSH?
- 8. Variables de entorno de Javascript
- 9. Leer variables de entorno del archivo en Windows Batch (cmd.exe)
- 10. Configuración de variables de entorno en Mathematica
- 11. Lista de variables de texto del proyecto de instalación de Visual Studio 2010
- 12. ¿Se pueden usar variables de entorno en scripts Inno Setup?
- 13. Configuración de variables de entorno en EngineYard
- 14. PHP: instalación de doctrina en el proyecto
- 15. Incluir carpeta en el proyecto de instalación
- 16. Comprobación de variables de entorno
- 17. ¿Es posible construir nombres variables de otras variables en bash?
- 18. ¿Es posible configurar MongoDB en un entorno de alojamiento compartido?
- 19. Variables de entorno en Python en Linux
- 20. ¿Es posible "desarmar" una variable de entorno en un Makefile?
- 21. MySQL: Usar variables de entorno en el script
- 22. ¿Es posible agregar el asistente de conexión de origen de datos en mi aplicación?
- 23. MSBuild requiere variables de entorno
- 24. ¿Es posible registrar consultas sql en tareas de rake?
- 25. ¿Cuál es el significado de estas variables del entorno de Windows: HOMEDRIVE, HOMEPATH, HOMESHARE, PERFIL_USUARIO
- 26. Variables de entorno Xcode para subproyectos
- 27. ¿Es posible un entorno múltiple en el mismo servidor RabbitMQ?
- 28. Cómo registrar un CCW .NET con regasm desde un proyecto de instalación de Visual Studio 2008
- 29. Cómo establecer variables de entorno en Python
- 30. ¿Es posible tener el guión Haml HTML generado por un asistente de visualización en Rails?
No existe Visual Studio 2009. Y puedo contar el número de instancias en una mano donde un instalador realmente necesita registrar una variable de entorno. Las posibilidades son * muy * buenas de que no seas uno de esos casos. –
@CodyGray, por favor explique las posibles alternativas. –
Supongo que recomendaría el registro o un archivo de datos en el directorio del perfil del usuario/directorio de datos del programa. O si su proyecto es un proyecto .Net, un valor de app.config. Aunque estoy en desacuerdo con el sentido de la declaración, si agrega su programa al 'PATH', esa podría ser una buena razón para rebuscar con variables de entorno. De lo contrario, estaría de acuerdo en que probablemente haya mejores lugares para poner sus datos. –