INNO Setup É XouDeBola
Logo que comecei a utilizar o instalador INNO Setup para meus sistemas, meus clientes notaram a real necessidade e respeito ao suporte.
Ao se depararem com telas de instalação mais sofisticadas e interativas, tomaram consciencia de que o trabalho do suporte é algo cheio de novidades e de um alto grau de complexidade.
Prestar suporte é um mal necessário nas empresas produtoras de sistemas, mas prestar com qualidade é um árduo trabalho.
Eu, particularmente, presto suporte de meu sistema sozinho, chegando a atender até vinte solicitações diárias que envolvem atualizações de bases de dados, criação e adapatação de relatórios, manejo de telas e consultas e criação de novos módulos.
Tudo isto toma tempo. E toma mais ainda quando se tem um sistema personalizado como o meu.
Não sei qual a forma de trabalho de cada um de voces, mas eu parto do presuposto de que o meu sistema é genérico e o código também.
Evito ao mà ximo redundancias e se uma mesma função for utilizada mais de uma vez, transformo-a em função.
Em relação ao sistema, que hoje possui quase 30 módulos e pelo menos 380 .PRG, seria algo inconcebÃvel de manejar de forma personalizada se não fossem as facilidades do Clipper com suas #ifdef...#define para compilação condicional.
Mas o fato é que no momento de gerar o update para o cliente que deve ser diferenciado a cada vez, tornava-se um pesadelo saber quantas atualizações novas poderiam existir num mesmo dia e qual ele possuia instalado.
Por isto criei uma séria de mecanismos de controle de versão tanto do sistema como do update.
Um destes mecanismos gerou uma adaptação em um de meus .BATs( adoro criar BATchs ) que criava uma instalação usando WinZIP SelfExtractor.
Como era de se esperar, encontrei o INNO Setup e demorei muito para entender o funcionamento de seu arquivo de script e de que forma ele iria me auxiliar.
Por fim crie o .BAT SETUP.BAT que cria a instalação de meu sistema, seguindo um critério de segurança que eu mesmo bolei.
É passado um antivirus no executável antes dele entrar no pacote do instalador e após gerado o mesmo é novamente verificado e então enviado para meu site na internet através de outro .BAT.
Na verdade após executar a compilação eu executo o comando SETUP que cria o meu controle de versão da seguinte forma:
CLIENTE-DATA-COMPILACAO
Ou seja:
SISTEMA-260704-136
Desta forma em um mesmo dia se forem enviadas mais de uma atualização o numero final indica qual a mais atual ou estável.
O comando ainda gera o arquivo .ISS e chama o INNO Setup para realizar a instalação.
Após gerada a instalação o arquivo começa a ser enviado para internet diminuindo o meu prazo de entrega e deixando livre para trabalhar em outras atualizações.
Depois deste papo todo exemplificando algo que muitos nem lerão disponibilizo abaixo o código do gerador de .ISS para facilitar a vida de voce amigos:
----------------------******************************************************--------------------------
@IF "%2"=="" GOTO CADEEXE
@IF "%1"=="" GOTO CADECLI
@ECHO SET CLIPPER=F150 > SISTEMA.BAT
@ECHO MODE CON COLS=80 LINES=25 >> SISTEMA.BAT
@DEL OUTPUT\*.EXE
@ECHO OFF
@ECHO ; > %1.ISS
@ECHO ; Script de Geracao do INSTALLador para cliente. >> %1.ISS
@ECHO ; >> %1.ISS
@ECHO [Setup] >> %1.ISS
@ECHO AppName=Seu Sistema >> %1.ISS
@ECHO AppVerName=Sistema 1.0 >> %1.ISS
@ECHO AppPublisherURL=http://www.seudominio.com >> %1.ISS
@ECHO AppSupportURL=http://www.seudominio.com >> %1.ISS
@ECHO AppUpdatesURL=http://www.seudominio.com >> %1.ISS
@ECHO AppCopyright=Direitos Reservados Sua Empresa Ltda. >> %1.ISS
@ECHO DefaultDirName=C:\SISTEMA >> %1.ISS
@ECHO DefaultGroupName=Nome do Seu Sistema >> %1.ISS
@ECHO LicenseFile=c:\sistemas\licenca.txt >> %1.ISS
@ECHO InfoBeforeFile=c:\sistemas\aviso.txt >> %1.ISS
@ECHO CreateUninstallRegKey=yes >> %1.ISS
@ECHO Compression=lzma >> %1.ISS
@ECHO Uninstallable=yes >> %1.ISS
@ECHO UninstallDisplayIcon={app}\unins000.exe >> %1.ISS
@ECHO UninstallFilesDir={app} >> %1.ISS
@ECHO ;WizardImageFile=c:\sistemas\sistema.bmp >> %1.ISS
@ECHO ;UserInfoPage=yes >> %1.ISS
@ECHO ;Encryption=yes >> %1.ISS
@ECHO Password=SUASENHA >> %1.ISS
@ECHO SolidCompression=yes >> %1.ISS
@ECHO ; uncomment the following line if you want your installation to run on NT 3.51 too. >> %1.ISS
@ECHO ; MinVersion=4,3.51 >> %1.ISS
@ECHO ;>> %1.ISS
@ECHO [Files] >> %1.ISS
@ECHO Source: "c:\sistemas\%1\%2.exe"; DestDir: "{app}" >> %1.ISS
@ECHO Source: "c:\sistemas\%1\%2.bat"; DestDir: "{app}" >> %1.ISS
@ECHO Source: "c:\sistemas\%1\%2.hlp"; DestDir: "{app}" >> %1.ISS
@ECHO Source: "c:\sistemas\%1\%2.dll"; DestDir: "{app}" >> %1.ISS
@ECHO Source: "c:\sistemas\logo.ico"; DestDir: "{app}" >> %1.ISS
@ECHO Source: "c:\sistemas\licenca.txt"; DestDir: "{app}"; Flags: isreadme >> %1.ISS
@ECHO ;>> %1.ISS
@ECHO [INI] >> %1.ISS
@ECHO Filename: "{app}\Sistema.url"; Section: "InternetShortcut"; Key: "URL"; String: "http://www.seudominio.com" >> %1.ISS
@ECHO ;>> %1.ISS
@ECHO [Icons] >> %1.ISS
@ECHO Name: "{group}\Sua Empresa - Sistema 1.0"; Filename: "{app}\%2.exe"; IconFilename: "{app}\logo.ico" >> %1.ISS
@ECHO Name: "{group}\Sua Empresa - Sistema 1.0 Desinstalar"; Filename: "{app}\unins000.exe"; IconFilename: "{app}\logo.ico" >> %1.ISS
@ECHO Name: "{commonprograms}\Sua Empresa - Sistema 1.0"; Filename: "{app}\%2.exe"; IconFilename: "{app}\logo.ico" >> %1.ISS
@ECHO Name: "{userdesktop}\Sua Empresa - Sistema 1.0"; Filename: "{app}\%2.exe"; IconFilename: "{app}\logo.ico" >> %1.ISS
@ECHO Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Sistema 1.0"; Filename: "{app}\%2.exe"; IconFilename: "{app}\logo.ico" >> %1.ISS
@ECHO ;>> %1.ISS
@ECHO [UninstallDelete] >> %1.ISS
@ECHO Type: files; Name: "{app}\Sistema.url" >> %1.ISS
@CLS
@ECHO Verificando viroses no aplicativo...
@C:\ARQUIV~1\NORTON~1\NAVDX.EXE %2.EXE /B- /S- /M- /DELETE
@IF NOT EXIST %2.EXE GOTO TINHAVIRUS
@CLS
@ECHO Compilando...
@C:\ARQUIV~1\innosetup4\compil32 /cc %1.iss
@PAUSE Faca o teste na instalacao
@OUTPUT\SETUP.EXE
@CLS
@ECHO Verificando viroses na instalacao...
@C:\ARQUIV~1\NORTON~1\NAVDX.EXE OUTPUT\SETUP.EXE /B- /S- /M-
rem /DELETE
@IF NOT EXIST OUTPUT\SETUP.EXE GOTO TINHAVIRUS
GOTO FIM
:CADECLI
@ECHO.
@ECHO ATENCAO. cade o nome do CLIente?
@ECHO.
GOTO FIM
:CADEEXE
@ECHO.
@ECHO ATENCAO. cade o nome do EXEcutavel?
@ECHO.
GOTO FIM
:TINHAVIRUS
@ECHO.
@ECHO ATENCAO. Tinha virus no arquivo?
@ECHO.
GOTO FIM
:FIM
----------------------******************************************************--------------------------
Os requisitos são poucos:
Alterem as chamadas aos programas de antivirus e o compilador INNO Setup.
Incluam os nomes de arquivos de seus aplicativos na sessão [FILES].
O arquivo .ISS gerado faz chamadas aos arquivos LICENCA.TXT e AVISO.TXT dentro do diretório C:\SISTEMAS, altere os caminhos a seu gosto.
Os arquivos LICENCA.TXT e AVISO.TXT podem ser alterados a seu gosto.
Salvem o arquivo SETUP.BAT num diretório que possa ser chamado de qualquer lugar.
Executem o mesmo dentro do diretório ondes está o executável de seu cliente.
Use a seguinte sintaxe: SETUP CLIENTE SISTEMA
O arquivo disponibilizado contém uma estrutura de teste no qual voces podem avaliar o SETUP.BAT
http://www.softclever.com/downloads/innotst.zip
Descompacte-o com PKUNZIP INNOTST -d
Voces não terão mais que criar trocentos arquivos .ISS no INNO Setup.
@braços :?)