código - agregar meta tags en wix
RemotePayload: el sistema no puede encontrar el archivo '''' con tipo '''' (3)
Respuesta parcial a mi propia pregunta: el mensaje de error desaparece si agrego el atributo Compressed = "no" al elemento ExePackage.
La documentación sobre el atributo "Comprimido" dice: "Si la carga útil del paquete debe estar incrustada en un contenedor o dejarla como una carga útil externa" y su valor puede ser "sí", "no" o "predeterminado".
El uso de "sí" o "predeterminado" desencadena el mensaje de error. Usar "no" no.
Pasando a WiX 3.6, intento utilizar funciones de grabación para facilitar la descarga / instalación de las piezas necesarias, como un tiempo de ejecución de VC ++ específico.
Comencé pequeño con solo algunos "test.wxs", vea abajo, que está bien para candle.exe:
$ candle test.wxs
Windows Installer Xml Compiler version 3.6.3303.0
Copyright (C) Outercurve Foundation. All rights reserved.
test.wxs
Pero light.exe se ahoga en él:
$ light test.wixobj -ext WixBalExtension
Windows Installer Xml Linker version 3.6.3303.0
Copyright (C) Outercurve Foundation. All rights reserved.
light.exe : error LGHT0103 : The system cannot find the file '''' with type ''''.
¿Podría alguien ayudar con este mensaje de error (bastante críptico)?
Parece relacionado con RemotePayload, ya que una versión modificada con un archivo local funciona correctamente. Sin embargo, me gustaría ahorrar en el tamaño del paquete y dejar la descarga en la máquina de destino si es necesario.
El contenido completo de "test.wxs" fue:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle Version="1.0.0.0"
UpgradeCode="e349236d-6638-48c5-8d8b-db47682b9aeb">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<!-- C++ Runtime -->
<ExePackage Name="vcredist_x64.exe"
DownloadUrl="http://www.microsoft.com/en-us/download/confirmation.aspx?id=2092" >
<RemotePayload CertificatePublicKey="F321408E7C51F8544B98E517D76A8334052E26E8"
CertificateThumbprint="D57FAC60F1A8D34877AEB350E83F46F6EFC9E5F1"
Description="Microsoft Visual C++ 2008 Redistributable Setup"
Hash="13674C43652B941DAFD2049989AFCE63CB7C517B"
ProductName="Microsoft Visual C++ 2008 Redistributable"
Size="4961800"
Version="9.0.30729.17" />
</ExePackage>
</Chain>
</Bundle>
</Wix>
Tuve el mismo problema con otro paquete (el .NET framework) y Wix 3.7. Utilicé el código fuente de Wix para encontrar los nombres de paquetes y claves de registro apropiados para probar, y luego pegué los bits relevantes en mi instalador. Luego, intencionalmente configuré ''Comprimido = "sí"'' porque quería insertar el archivo en mi instalador en lugar de descargarlo.
Hubo un informe similar al suyo publicado en este hilo de la lista de correo :
Benjamin Mayrargue: si un ExePackage tiene un DownloadUrl y Compressed está configurado en yes, la luz falló con el error LGHT0103: El sistema no puede encontrar el archivo '''' con el tipo ''''.
Markus Wehrle: Ok, ya veo. Si desea tener el ExePackage comprimido en su bootstrapper.exe (comprimido = "sí"), debe especificarlo usando el atributo "Fuente". Debido a que se comprimirá en su boostrapper durante el tiempo de compilación, no debe declarar un DownloadUrl. Si especifica comprimido = "no", su ExePackage se descarga de DownloadUrl durante la instalación de su boostrapper.
Rob Mensching: Más específicamente, no puede usar el elemento RemotePayload y Compressed = ''yes'' en el elemento ExePackage juntos. Eso no tiene sentido y el error aquí es que el compilador no le dio un mensaje de error aquí diciendo eso.
Entonces, sí, has identificado correctamente la misma solución al problema.
Por cierto, el atributo Compressed
especifica ''Si la carga útil del paquete debe estar incrustada en un contenedor o debe dejarse como carga útil externa.'' Esa carga útil externa puede ser una RemotePayload
u otro archivo en el disco, pero la configuración típica es un único gestor de arranque con todos los recursos integrados.
El uso de yes
para el atributo Compresión permitirá que su aplicación y el tiempo de ejecución de VC ++ se instalen incluso si el usuario tiene una conexión a Internet lenta o inexistente. Elimine DownloadUrl
y RemotePayload
de su instalador y reemplácelos con Compressed="yes"
como este:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle Version="1.0.0.0"
UpgradeCode="e349236d-6638-48c5-8d8b-db47682b9aeb">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<!-- C++ Runtime -->
<ExePackage Name="vcredist_x64.exe"
Compressed="yes">
</ExePackage>
</Chain>
</Bundle>
</Wix>
A continuación, descargue el archivo vcredist_x64.exe (usted mismo, una vez) y colóquelo junto a su archivo test.wxs. Ajuste ''Nombre'' si lo quiere en una ubicación diferente. Tenga en cuenta que esto aumentará el tamaño de su bootstrapper resultante en aproximadamente el tamaño de vcredist_x64.exe, por lo que no es una buena idea que sus usuarios descarguen su instalador.
En mi caso, el error se produjo porque la ruta del nombre de archivo / directorio tenía más de 255 caracteres. El archivo existe pero el compilador indica que el archivo no existe.