Hola chicos
¿cómo puedo obtener la dirección IP local del usuario usando la configuración Inno? Pensé en utilizar Win32 api GetIpAddrTable, pero no está claro cómo hacer el ajuste. ¿Alguien tiene alguna otra forma? o sabes cómo hacerlo? tanquesCómo obtener la dirección IP local usando Inno-setup
Respuesta
Depende de si desea la dirección IPv4 o la dirección IPv6. Pero como mencionaste GetIpAddrTable y solo devuelve direcciones IPv4, sospecho que eso es lo que querías.
Cada máquina puede tener más de una dirección IP local. Así que los devuelvo como un TStringList La máquina en la que probé lo siguiente tenía 5 direcciones IP.
Dado que InnoSetup no es compatible con los punteros, tuve que hacer todo lo posible a través de una matriz de bytes para el búfer.
El siguiente código es una secuencia de comandos InnoSetup completa que demuestra cómo usar esta función.
[Setup]
AppName=Test
AppVersion=1.5
DefaultDirName={pf}\test
[Code]
const
ERROR_INSUFFICIENT_BUFFER = 122;
function GetIpAddrTable(pIpAddrTable: Array of Byte;
var pdwSize: Cardinal; bOrder: WordBool): DWORD;
external '[email protected] stdcall';
procedure GetIpAddresses(Addresses : TStringList);
var
Size : Cardinal;
Buffer : Array of Byte;
IpAddr : String;
AddrCount : Integer;
I, J : Integer;
begin
// Find Size
if GetIpAddrTable(Buffer,Size,False) = ERROR_INSUFFICIENT_BUFFER then
begin
// Allocate Buffer with large enough size
SetLength(Buffer,Size);
// Get List of IP Addresses into Buffer
if GetIpAddrTable(Buffer,Size,True) = 0 then
begin
// Find out how many addresses will be returned.
AddrCount := (Buffer[1] * 256) + Buffer[0];
// Loop through addresses.
For I := 0 to AddrCount -1 do
begin
IpAddr := '';
// Loop through each byte of the address
For J := 0 to 3 do
begin
if J > 0 then
IpAddr := IpAddr + '.';
// Navigagte through record structure to find correct byte of Addr
IpAddr := IpAddr + IntToStr(Buffer[I*24+J+4]);
end;
Addresses.Add(IpAddr);
end;
end;
end;
end;
function InitializeSetup(): Boolean;
var
SL : TStringList;
begin
SL := TStringList.Create;
GetIpAddresses(SL);
MsgBox(SL.Text, mbInformation, MB_OK);
SL.Free;
end;
+1 para las importaciones directas de API en innosetup. –
Sí, +1 también, pero personalmente movería todo el código de utilidad fuera de la secuencia de comandos (y en una DLL auxiliar) tanto como sea posible. Los scripts de instalador no se escalan demasiado bien, los mantienen medios y ajustados para la legibilidad/mantenibilidad. –
Colocaría estas rutinas en una declaración ISPP '# include' para mantener las cosas limpias. –
Cree una DLL externa que devuelva una lista de direcciones IP y lea esa lista en la secuencia de comandos Inno Setup.
En this article encontrará ejemplos de código sobre cómo crear una DLL y cómo llamarla en la secuencia de comandos InnoSetup.
In this SO post encontrará cómo obtener direcciones IP usando la biblioteca Indy o WinApi simple.
No es necesario crear una DLL externa, InnoSetup puede llamar directamente a la API –
- 1. ¿Cómo obtener dirección IP local usando vb?
- 2. Obtener dirección IP local usando Boost.Asio
- 3. Obteniendo la dirección IP local
- 4. ¿Cómo obtengo la dirección IP local del servidor usando PHP?
- 5. ¿Cómo obtener la dirección IP?
- 6. Obtener la dirección IP local sin conectarse a Internet
- 7. ¿Cómo obtener la dirección IP del usuario usando .net?
- 8. Cómo obtener la dirección IP del cliente usando jQuery
- 9. Obtener la dirección IP 'externa' en Java
- 10. Cómo obtener la dirección IP de sockaddr
- 11. ¿Cómo obtener la dirección IP desde $ SSH_CLIENT
- 12. ¿Cómo obtener la dirección IP del servidor?
- 13. Obtener la dirección IP de los visitantes
- 14. ¿Cómo puedo obtener IP local en .NET?
- 15. Python: obtenga la dirección IP local utilizada para enviar datos IP a una dirección IP remota específica
- 16. ¿Cómo puedo obtener el nombre de la computadora y la dirección IP de la computadora local?
- 17. Obtener mi dirección de IP
- 18. Obtener la dirección IP del usuario
- 19. ¿Por qué recibo :: 1 como dirección IP en ASP.Net .. y cómo obtener la dirección IP correcta?
- 20. Cómo bloquear una dirección IP usando web.xml?
- 21. Ruby: obtener IP (nix) local
- 22. Obtener dirección MAC en la máquina local con Java
- 23. ¿Cómo obtengo la dirección IP del cliente usando TcpClient?
- 24. WICKET: cómo obtener la dirección/ip del cliente
- 25. Obtenga la dirección IP local correcta del applet de java
- 26. ¿Cómo compararías la dirección IP?
- 27. ¿Cómo obtengo la dirección IP de la red local de una computadora mediante programación? (C#)
- 28. Obtener la dirección IP de la computadora en un proyecto de Android usando Java
- 29. ¿Cómo obtener la dirección IP del servidor en ASP.NET?
- 30. ¿Cómo obtener la dirección IP del cliente de escritorio remoto?
¿Qué quiere decir con el uso de la configuración inno? – opc0de
@ opc0de: Probablemente esté escribiendo un script de instalación de Inno. Inno Setup es compatible con el script de Pascal. –
En el proceso de instalación necesito mostrarle al usuario una lista de la dirección IP ** local ** (en caso de que tenga más de una tarjeta de red física o lógica) y dejar que el usuario seleccione de una lista de direcciones IP . –