Título: [INNO Setup] Que estoy haciendo mal
Publicado por: rusco en 5 Febrero 2013, 22:24 pm
[MOD] USA TÍTULOS DESCRIPTIVOS!
Hola, Que estoy haciendo mal, el script del innosetup me instala dos veces el archivo (Numisoftware.mde) Este que esta dentro dew Numisoftware sobra: C:\Numisoftware\ Actualiza DatosNumi Programa Numisotware.mde Lo correcto es: C:\Numisoftware\ Actualiza DatosNumi Programa\Numisoftware.mde Os dejo el script par ver donde tengo el error. [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{561F01CD-4A2F-4E84-B650-F586E2493B8E} AppName=Numisoftware AppVerName=Numisoftware 1.0 VersionInfoVersion=1.0 AppPublisher=Numisoftware AppPublisherURL=http://www.numisoftware.com/ AppSupportURL=http://www.numisoftware.com/ AppUpdatesURL=http://www.numisoftware.com/ DefaultDirName=C:\ DisableDirPage=yes DefaultGroupName=Numisoftware DisableProgramGroupPage=yes LicenseFile=C:\Numisoftware\Programa\Licencias\Lic enciaES.rtf OutputDir=C:\Instalador OutputBaseFilename=Numsetup SetupIconFile=C:\Numisoftware\Programa\Iconos\numi software.ico Compression=lzma SolidCompression=yes AppCopyright=Copyright © 2011 by NUMISOFTWARE VersionInfoCompany=NUMISOFTWARE WizardImageFile=compiler:WizModernImage-IS.bmp WizardSmallImageFile=compiler:WizModernSmallImage-IS.bmp WindowVisible=true VersionInfoDescription=Software para la gestión de colecciones VersionInfoTextVersion=Numisoftware 1.0 ShowUndisplayableLanguages=true
[Languages] Name: en; MessagesFile: compiler:Languages\English.isl; LicenseFile: C:\Numisoftware\Programa\Licencias\LicenseIN.rtf Name: es; MessagesFile: compiler:Languages\Spanish.isl; LicenseFile: C:\Numisoftware\Programa\Licencias\LicenciaES.rtf Name: catalan; MessagesFile: compiler:Languages\Catalan.isl; LicenseFile: C:\Numisoftware\Programa\Licencias\LlicènciaCAT.rt f Name: french; MessagesFile: compiler:Languages\French.isl; LicenseFile: C:\Numisoftware\Programa\Licencias\LicenceFR.rtf Name: german; MessagesFile: compiler:Languages\German.isl; LicenseFile: C:\Numisoftware\Programa\Licencias\LizenzDE.rtf Name: portuguese; MessagesFile: compiler:Languages\Portuguese.isl; LicenseFile: C:\Numisoftware\Programa\Licencias\LicençaPO.rtf Name: italian; MessagesFile: compiler:Languages\Italian.isl; LicenseFile: C:\Numisoftware\Programa\Licencias\LicenzaIT.rtf
[Files] ;Source: C:\Numisoftware\Programa\Numisoftware.mde; DestDir: {app}; Flags: ignoreversion Source: C:\Numisoftware\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs Source: C:\Numisoftware\Programa\Iconos\numisoftware.ico; DestDir: {app}\Programa\Iconos; Flags: ignoreversion recursesubdirs createallsubdirs Source: C:\Numisoftware\Programa\Referencias\Dao360.dll; DestDir: {sys}; Flags: sharedfile restartreplace regserver noregerror Source: C:\Numisoftware\Programa\Referencias\FM20.dll; DestDir: {sys}; Flags: sharedfile restartreplace regserver noregerror Source: C:\Numisoftware\Programa\Referencias\MSO.DLL; DestDir: {sys}; Flags: sharedfile restartreplace regserver noregerror Source: C:\Numisoftware\Programa\Referencias\msado21.tlb; DestDir: {sys}; Flags: sharedfile restartreplace regtypelib noregerror Source: C:\Numisoftware\Programa\Referencias\stdole2.tlb; DestDir: {sys}; Flags: sharedfile restartreplace regtypelib noregerror Source: C:\Numisoftware\Programa\Dlls\MouseWheelVScroll.dl l; DestDir: {sys}; Flags: sharedfile restartreplace regserver noregerror ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons] Name: {group}\Numisoftware; Filename: {app}\Programa\Numisoftware.mde; WorkingDir: {app}; IconFilename: {app}\Programa\Iconos\numisoftware.ico; IconIndex: 0 Name: {userdesktop}\Numisoftware; Filename: {app}\Programa\Numisoftware.mde; WorkingDir: {app}; IconFilename: {app}\Programa\Iconos\numisoftware.ico; IconIndex: 0 Name: {group}\{cm:UninstallProgram,Numisoftware}; Filename: {uninstallexe}; WorkingDir: {app}; IconFilename: {app}\Programa\Iconos\numisoftware.ico; IconIndex: 0
[Run] Filename: {app}\Programa\Scripts\SeguridadAccess2003.vbs; Check: fVersion('0010'); Flags: shellexec; Parameters: 1 Filename: {app}\Programa\Scripts\cc2010.exe; Check: fVersion('0001') or fVersion('0101'); Parameters: /cn C:\Numisoftware Description: {cm:LaunchProgram,cc2010}; Flags: waituntilterminated ;Filename: {app}\Programa\Scripts\cc2010.exe; Check: fVersion('0101'); Parameters: /cn C:\Numisoftware Description: {cm:LaunchProgram,cc2010}; Flags: waituntilterminated function fVersionAccess(): Byte; var localAccess : String; loaded: String; begin Result := 0; RegQueryStringValue( HKLM,'Software\Microsoft\Windows\CurrentVersion\Ap p Paths\Msaccess.exe','path',loaded ); RegQueryStringValue( HKLM,'Software\Microsoft\Office\9.0\Access\Install Root','Path',localAccess ); if fileexists(localAccess + '\MsAccess.exe') then if localAccess = loaded then Result:=1; //Access 2000 localAccess := ''; RegQueryStringValue( HKLM,'Software\Microsoft\Office\10.0\Access\Instal lRoot','Path',localAccess ); if fileexists(localAccess + '\MsAccess.exe') then if localAccess = loaded then Result := 2; //Access 2002 localAccess := ''; RegQueryStringValue( HKLM,'Software\Microsoft\Office\11.0\Access\Instal lRoot','Path',localAccess ); if fileexists(localAccess + '\MsAccess.exe') then if localAccess = loaded then Result := 3; //Access 2003 localAccess := ''; RegQueryStringValue( HKLM,'Software\Microsoft\Office\12.0\Access\Instal lRoot','Path',localAccess ); if fileexists(localAccess + '\MsAccess.exe') then if localAccess = loaded then Result := 4; //Access 2007 localAccess := ''; RegQueryStringValue( HKLM,'Software\Microsoft\Office\14.0\Access\Instal lRoot','Path',localAccess ); if fileexists(localAccess + '\MsAccess.exe') then if localAccess = loaded then Result := 5; //Access 2010 end;
function fversion(version: String): Boolean; begin result:=false; Case version of '1110': begin if not fVersionAccess()=4 then // Si no tiene Access 2007 result:=true; end; '0011': begin if not fVersionAccess()=5 then // Si no tiene Access 2010 result:=true; end; '1100': begin if not fVersionAccess()=3 then // Si no tiene Access 2003 result:=true; end; '0001': begin if fVersionAccess()=4 then //Access 2007 result:=true; end; '0010': begin if fVersionAccess()=3 then //Access 2003 result:=true; end; '0101': begin if fVersionAccess()=5 then //Access 2010 result:=true; end; end; end;
function IsAccessRuntimeInstalled(): Boolean; begin Result := RegKeyExists (HKLM, 'SOFTWARE\Microsoft\Office\14.0\Registration\{9012 0000-001C-0C0A-0000-0000000FF1CE}'); end;
Saludos, ximo
Título: Re: Que estoy haciendo mal
Publicado por: Eleкtro en 5 Febrero 2013, 23:19 pm
1. Tu instalador sólo funcionará en equipos que dispongan de la unidad C:\, debes usar la constante adecuada: 2. Source: C:\Numisoftware\Programa\Numisoftware.mde; DestDir: {app}; Flags: ignoreversion Estás indicando en el directorio de destino la ruta "C:\": {app} = DefaultDirName = C:\Entonces haz esto: Source: C:\Numisoftware\Programa\Numisoftware.mde; DestDir: {app}\Programa\; Flags: ignoreversion Y eso equivaldría a: C:\Programa\Numisoftware.mde Saludos
Título: Re: [INNO Setup] Que estoy haciendo mal
Publicado por: rusco en 5 Febrero 2013, 23:39 pm
Hola,
Gracias Elektro, solo con un par de modificaciones a sido suficiente, solo una duda, como dices que un pc puede no tener Unidad C:\, se que las letras se pueden cambiar pero sería nefasto para mi que C no estubiese en la pc que se instale, no por el instalador que es lo de menos, si no por la propia aplicación que apunta a C:\ y así se donde esta cada cosa, de lo contrario tendría que cambiar esto y meterlo en un archivo *.ini.
Bueno esta son las modificaciones hechas.
DefaultDirName=C:\Numisoftware
Source: C:\Numisoftware\Programa\Numisoftware.mde; DestDir: {app}\Programa\; Flags: ignoreversion
Lo dicho muchas gracias, saludos. ximo
Título: Re: [INNO Setup] Que estoy haciendo mal
Publicado por: Eleкtro en 5 Febrero 2013, 23:57 pm
La letra de unidad se puede modificar muy fácilmente, y "C:\" no tiene porque ser siempre la unidad principal, en muchos casos es "D:\", y si tu APP depende de rutas del sistema, pues... bueno, irá en el 99,9% de PC's, eso también te lo digo xD.
Espero que no te ofendas pero sincéramente eso de desarrollar una aplicación utilizando "C:\" (o cualquier otra ruta absoluta del sistema) para cosas importantes en lugar de usar la variable que contiene el valor de la letra del disco duro (o de la ruta absoluta del sistema) lo véo muy mala práctica e ineficáz, usa las variables de Windows, que para algo están. :P
PD: Me alegra haberte podido ayduar.
Un saludo.
|