{"id":404,"date":"2006-02-13T18:32:55","date_gmt":"2006-02-13T18:32:55","guid":{"rendered":"http:\/\/osmeusapontamentos.com\/?p=404"},"modified":"2006-02-13T18:32:55","modified_gmt":"2006-02-13T18:32:55","slug":"inno-setup","status":"publish","type":"post","link":"https:\/\/osmeusapontamentos.com\/index.php\/2006\/02\/13\/inno-setup\/","title":{"rendered":"inno setup"},"content":{"rendered":"<p>Durante a semana que passou estive a trabalhar com um installer chamado innosetup (http:\/\/www.jrsoftware.org\/isinfo.php) usando o ide ScriptMaker (http:\/\/www.HiSoft2000.de\/)<br \/>\nembora a introdu&ccedil;&atilde;o do xcopy deployment nos tenha facilitado imenso a vida no que diz respeito aos desenvolvimento de pacotes de instala&ccedil;&atilde;o, quando queremos fazer coisas menos triviais como mapear drives ou criar datasources odbc a complexidade come&ccedil;a a aumentar.<br \/>\nn&atilde;o tenho a certeza se aquilo que fiz com o innosetup era impossivel de fazer num deployment project vstudio mas posso dizer que encontrei bastante informa&ccedil;&atilde;o e exemplos suficientes para conseguir fazer um setup que ainda h&aacute; uma semana atr&aacute;s me faria ganhar cabelos brancos s&oacute; de pensar nele&#8230;<\/p>\n<p><b>Requisitos<\/b><\/p>\n<ul>\n<li>copiar ficheiros<\/li>\n<li>mapear um drive<\/li>\n<li>acrescentar dados ao ficheiro hosts e services<\/li>\n<li>executar outra setup j&aacute; existente<\/li>\n<li>criar variaveis de ambiente<\/li>\n<li>alterar path<\/li>\n<li>criar datasource odbc<\/li>\n<\/ul>\n<p>como disse utilizei o scriptmaker para criar o programa de instala&ccedil;&atilde;o. embora com alguns sen&atilde;os ao nivel do interface, permite uma compreens&atilde;o muito rapida das funcionalidades e n&atilde;o nos obriga a aprender a linguagem (markups e op&ccedil;&otilde;es) do innosetup.<\/p>\n<p><b>Exemplos<\/b><br \/>\n* definir qual a lingua utiliza no setup<br \/>\n<code>[Languages]<br \/>\nName: \"pt\"; MessagesFile: \"compiler:LanguagesPortuguese.isl\"<\/code><\/p>\n<p>* utiliza&ccedil;&atilde;o de c&oacute;digo e fun&ccedil;&otilde;es internas<br \/>\n<code>[Files]<br \/>\n\tSource: {code:GetLocalizacaoMultiIni|''}; DestDir: {app}sistmulti.ini; Flags: External; Check: CopiarMultiIni('')<br \/>\n<\/code><br \/>\n<code>{code:GetLocalizacaoMultiIni|''}<\/code> =&gt; permite chamar uma fun&ccedil;&atilde;o definida no bloco [code], o | serve para definir diferentes parametros. nota: neste caso vai parametro &#8221; j&aacute; que sempre que definir fun&ccedil;&otilde;es sem parametros de entrada recebia um erro do compilador.<br \/>\n<code>{app}<\/code> =&gt; fun&ccedil;&atilde;o interna que devolve a path para o directorio onde vai ser instalada a aplica&ccedil;&atilde;o. outras fun&ccedil;&otilde;es interessantes {src}, {tmp}<\/p>\n<p>* mapear um drive<br \/>\npara fazer coisas menos normais podemos usar uma linguagem de programa&ccedil;&atilde;o baseada em pascal. desta forma podemos por exemplo chamar dlls do windows como neste caso<br \/>\n<code>Function WNetConnectionDialog(hWnd: Integer; dwType: INTEGER): INTEGER; External 'WNetConnectionDialog@mpr.dll stdcall';<\/code><\/p>\n<p>* odbc<br \/>\no mesmo se aplica para o odbc, podemos &#8220;simplesmente&#8221; chamar o dialogo que o windows implementa<br \/>\n<code>Function SQLConfigDataSource(hwndParent: LONGINT; fRequest: LONGINT;lpszDriver: String; lpszAttributes: STRING): LONGINT; External 'SQLConfigDataSource@ODBCCP32.DLL stdcall';<\/code><\/p>\n<p>* criar variaveis de ambiente<br \/>\no truque aqui &eacute; que uma variavel de ambiente &eacute; uma misera entrada no registry<br \/>\n<code>Root: HKCU; Subkey: Environment; ValueType: String; ValueName: DLC; ValueData: {code:GetPastaDestinoProgress|''}; Flags: UnInsDeleteValue <\/code><\/p>\n<p>* criar ecrans para ler valores do utilizador<br \/>\npor exemplo perguntar onde est&atilde;o ficheiros necess&aacute;rios para a instala&ccedil;&atilde;o<br \/>\naqui as coisas come&ccedil;am a complicar ligeiramente. para facilitar j&aacute; existem algumas fun&ccedil;&otilde;es internas como TInputQueryWizardPage (que permite definir caixas de texto para input de valores), TInputDirWizardPage (que permite definir caixas de texto com um bot&atilde;o browse &agrave; frente para procurar um ficheiro), etc.<br \/>\ntemos assim que primeiro definir uma variavel para essa pagina.<br \/>\n<code>Page_PerguntarDadosTerminal: TInputQueryWizardPage;<\/code><br \/>\ncriar os conteudos dessa pagina<br \/>\n<code>Page_PerguntarDadosTerminal := CreateInputQueryPage(wpWelcome,<br \/>\n  'Indique o nome do terminal', 'Nome do terminal. Este nome ficar&aacute; guardado no ficheiro multi.ini',<br \/>\n  'Para continuar, clique Next.');<br \/>\n  Page_PerguntarDadosTerminal.Add('Nome do Terminal:', false);  \t<\/code><br \/>\ne depois ler esses dados<br \/>\n<code>NomeTerminal := Page_PerguntarDadosTerminal.Values[0];<\/code><br \/>\ntemos acesso aos dados de uma pagina usando algum dos eventos predefinidos <code>NextButtonClick, BackButtonClick<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Durante a semana que passou estive a trabalhar com um installer chamado innosetup (http:\/\/www.jrsoftware.org\/isinfo.php) usando o ide ScriptMaker (http:\/\/www.HiSoft2000.de\/) embora a introdu&ccedil;&atilde;o do xcopy deployment nos tenha facilitado imenso a vida no que diz respeito aos desenvolvimento de pacotes de instala&ccedil;&atilde;o, quando queremos fazer coisas menos triviais como mapear drives ou criar datasources odbc a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[317,536],"class_list":["post-404","post","type-post","status-publish","format-standard","hentry","category-ler-ver-ouvir-passear","tag-innosetup","tag-programacao"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>inno setup - Os Meus Apontamentos<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/osmeusapontamentos.com\/index.php\/2006\/02\/13\/inno-setup\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"inno setup - Os Meus Apontamentos\" \/>\n<meta property=\"og:description\" content=\"Durante a semana que passou estive a trabalhar com um installer chamado innosetup (http:\/\/www.jrsoftware.org\/isinfo.php) usando o ide ScriptMaker (http:\/\/www.HiSoft2000.de\/) embora a introdu&ccedil;&atilde;o do xcopy deployment nos tenha facilitado imenso a vida no que diz respeito aos desenvolvimento de pacotes de instala&ccedil;&atilde;o, quando queremos fazer coisas menos triviais como mapear drives ou criar datasources odbc a [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/osmeusapontamentos.com\/index.php\/2006\/02\/13\/inno-setup\/\" \/>\n<meta property=\"og:site_name\" content=\"Os Meus Apontamentos\" \/>\n<meta property=\"article:published_time\" content=\"2006-02-13T18:32:55+00:00\" \/>\n<meta name=\"author\" content=\"Vitor Silva\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@vitorsilva\" \/>\n<meta name=\"twitter:site\" content=\"@vitorsilva\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vitor Silva\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/osmeusapontamentos.com\\\/index.php\\\/2006\\\/02\\\/13\\\/inno-setup\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/osmeusapontamentos.com\\\/index.php\\\/2006\\\/02\\\/13\\\/inno-setup\\\/\"},\"author\":{\"name\":\"Vitor Silva\",\"@id\":\"https:\\\/\\\/osmeusapontamentos.com\\\/#\\\/schema\\\/person\\\/d508df9c3ffc8b4e64a18dbf0ba18dd8\"},\"headline\":\"inno setup\",\"datePublished\":\"2006-02-13T18:32:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/osmeusapontamentos.com\\\/index.php\\\/2006\\\/02\\\/13\\\/inno-setup\\\/\"},\"wordCount\":485,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/osmeusapontamentos.com\\\/#\\\/schema\\\/person\\\/d508df9c3ffc8b4e64a18dbf0ba18dd8\"},\"keywords\":[\"innosetup\",\"programa\u00e7\u00e3o\"],\"articleSection\":[\"Ler\\\/ Ver\\\/ Ouvir\\\/ Passear\"],\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/osmeusapontamentos.com\\\/index.php\\\/2006\\\/02\\\/13\\\/inno-setup\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/osmeusapontamentos.com\\\/index.php\\\/2006\\\/02\\\/13\\\/inno-setup\\\/\",\"url\":\"https:\\\/\\\/osmeusapontamentos.com\\\/index.php\\\/2006\\\/02\\\/13\\\/inno-setup\\\/\",\"name\":\"inno setup - Os Meus Apontamentos\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/osmeusapontamentos.com\\\/#website\"},\"datePublished\":\"2006-02-13T18:32:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/osmeusapontamentos.com\\\/index.php\\\/2006\\\/02\\\/13\\\/inno-setup\\\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/osmeusapontamentos.com\\\/index.php\\\/2006\\\/02\\\/13\\\/inno-setup\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/osmeusapontamentos.com\\\/index.php\\\/2006\\\/02\\\/13\\\/inno-setup\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/osmeusapontamentos.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"inno setup\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/osmeusapontamentos.com\\\/#website\",\"url\":\"https:\\\/\\\/osmeusapontamentos.com\\\/\",\"name\":\"Os Meus Apontamentos\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/osmeusapontamentos.com\\\/#\\\/schema\\\/person\\\/d508df9c3ffc8b4e64a18dbf0ba18dd8\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/osmeusapontamentos.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/osmeusapontamentos.com\\\/#\\\/schema\\\/person\\\/d508df9c3ffc8b4e64a18dbf0ba18dd8\",\"name\":\"Vitor Silva\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f81f58ad909e8a213ab0a690f6ed65e5c0e0e2274bf35ac49ff31d7988d483ce?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f81f58ad909e8a213ab0a690f6ed65e5c0e0e2274bf35ac49ff31d7988d483ce?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f81f58ad909e8a213ab0a690f6ed65e5c0e0e2274bf35ac49ff31d7988d483ce?s=96&d=mm&r=g\",\"caption\":\"Vitor Silva\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f81f58ad909e8a213ab0a690f6ed65e5c0e0e2274bf35ac49ff31d7988d483ce?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/vitormrsilva\",\"https:\\\/\\\/x.com\\\/vitorsilva\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"inno setup - Os Meus Apontamentos","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/osmeusapontamentos.com\/index.php\/2006\/02\/13\/inno-setup\/","og_locale":"pt_PT","og_type":"article","og_title":"inno setup - Os Meus Apontamentos","og_description":"Durante a semana que passou estive a trabalhar com um installer chamado innosetup (http:\/\/www.jrsoftware.org\/isinfo.php) usando o ide ScriptMaker (http:\/\/www.HiSoft2000.de\/) embora a introdu&ccedil;&atilde;o do xcopy deployment nos tenha facilitado imenso a vida no que diz respeito aos desenvolvimento de pacotes de instala&ccedil;&atilde;o, quando queremos fazer coisas menos triviais como mapear drives ou criar datasources odbc a [&hellip;]","og_url":"https:\/\/osmeusapontamentos.com\/index.php\/2006\/02\/13\/inno-setup\/","og_site_name":"Os Meus Apontamentos","article_published_time":"2006-02-13T18:32:55+00:00","author":"Vitor Silva","twitter_card":"summary_large_image","twitter_creator":"@vitorsilva","twitter_site":"@vitorsilva","twitter_misc":{"Escrito por":"Vitor Silva","Tempo estimado de leitura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/osmeusapontamentos.com\/index.php\/2006\/02\/13\/inno-setup\/#article","isPartOf":{"@id":"https:\/\/osmeusapontamentos.com\/index.php\/2006\/02\/13\/inno-setup\/"},"author":{"name":"Vitor Silva","@id":"https:\/\/osmeusapontamentos.com\/#\/schema\/person\/d508df9c3ffc8b4e64a18dbf0ba18dd8"},"headline":"inno setup","datePublished":"2006-02-13T18:32:55+00:00","mainEntityOfPage":{"@id":"https:\/\/osmeusapontamentos.com\/index.php\/2006\/02\/13\/inno-setup\/"},"wordCount":485,"commentCount":0,"publisher":{"@id":"https:\/\/osmeusapontamentos.com\/#\/schema\/person\/d508df9c3ffc8b4e64a18dbf0ba18dd8"},"keywords":["innosetup","programa\u00e7\u00e3o"],"articleSection":["Ler\/ Ver\/ Ouvir\/ Passear"],"inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/osmeusapontamentos.com\/index.php\/2006\/02\/13\/inno-setup\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/osmeusapontamentos.com\/index.php\/2006\/02\/13\/inno-setup\/","url":"https:\/\/osmeusapontamentos.com\/index.php\/2006\/02\/13\/inno-setup\/","name":"inno setup - Os Meus Apontamentos","isPartOf":{"@id":"https:\/\/osmeusapontamentos.com\/#website"},"datePublished":"2006-02-13T18:32:55+00:00","breadcrumb":{"@id":"https:\/\/osmeusapontamentos.com\/index.php\/2006\/02\/13\/inno-setup\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/osmeusapontamentos.com\/index.php\/2006\/02\/13\/inno-setup\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/osmeusapontamentos.com\/index.php\/2006\/02\/13\/inno-setup\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/osmeusapontamentos.com\/"},{"@type":"ListItem","position":2,"name":"inno setup"}]},{"@type":"WebSite","@id":"https:\/\/osmeusapontamentos.com\/#website","url":"https:\/\/osmeusapontamentos.com\/","name":"Os Meus Apontamentos","description":"","publisher":{"@id":"https:\/\/osmeusapontamentos.com\/#\/schema\/person\/d508df9c3ffc8b4e64a18dbf0ba18dd8"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/osmeusapontamentos.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":["Person","Organization"],"@id":"https:\/\/osmeusapontamentos.com\/#\/schema\/person\/d508df9c3ffc8b4e64a18dbf0ba18dd8","name":"Vitor Silva","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/secure.gravatar.com\/avatar\/f81f58ad909e8a213ab0a690f6ed65e5c0e0e2274bf35ac49ff31d7988d483ce?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f81f58ad909e8a213ab0a690f6ed65e5c0e0e2274bf35ac49ff31d7988d483ce?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f81f58ad909e8a213ab0a690f6ed65e5c0e0e2274bf35ac49ff31d7988d483ce?s=96&d=mm&r=g","caption":"Vitor Silva"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/f81f58ad909e8a213ab0a690f6ed65e5c0e0e2274bf35ac49ff31d7988d483ce?s=96&d=mm&r=g"},"sameAs":["https:\/\/www.linkedin.com\/in\/vitormrsilva","https:\/\/x.com\/vitorsilva"]}]}},"_links":{"self":[{"href":"https:\/\/osmeusapontamentos.com\/index.php\/wp-json\/wp\/v2\/posts\/404","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/osmeusapontamentos.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/osmeusapontamentos.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/osmeusapontamentos.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/osmeusapontamentos.com\/index.php\/wp-json\/wp\/v2\/comments?post=404"}],"version-history":[{"count":0,"href":"https:\/\/osmeusapontamentos.com\/index.php\/wp-json\/wp\/v2\/posts\/404\/revisions"}],"wp:attachment":[{"href":"https:\/\/osmeusapontamentos.com\/index.php\/wp-json\/wp\/v2\/media?parent=404"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/osmeusapontamentos.com\/index.php\/wp-json\/wp\/v2\/categories?post=404"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/osmeusapontamentos.com\/index.php\/wp-json\/wp\/v2\/tags?post=404"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}