Windows Installer API (SDK)

Como criar um banco de dados MSI?

Há várias maneiras de o fazer. O mais conveniente é certamente adquirir um programa especialmente optimizado para este fim. Há fabricantes / autores que fornecem editores para ficheiros MSI, tais como Orca, SuperOrca, InstEd. Outros produtos são Flexera Software com o produto AdminStudio, Advanced Installer da Caphyon, Wise Installer da Symantec [RIP], AKInstallerMSI da AKApplications e InstallAware da InstallAware Software Corporation. Começando com Visual Studio .NET, a Microsoft oferece, por exemplo, para todos os programas criados em Visual Studio, a possibilidade de criar bases de dados MSI com uma ferramenta integrada em Visual Studio.

Embora estes possam simplificar a implementação de pacotes SW, ainda são demorados e o próprio manuseamento tem de ser aprendido. Alguns destes produtos são freeware, outros custam dinheiro e o resto custa meia fortuna. Alguns prometem felicidade, outros nem sequer querem tocar com um par de alicates.
Se quiser levar este tópico a sério, deve definitivamente descarregar o Windows Installer SDK da Microsoft, que documenta a tecnologia do Windows Installer e também oferece ferramentas para o ajudar no seu trabalho. O mais importante é certamente o Orca, um programa de edição de bases de dados MSI. Tudo isto também é gratuito. Com a ajuda do Windows Installer SDK, é mesmo possível criar novas bases de dados MSI "à mão" do zero, mas isto pode ser um enorme esforço.

automate the Windows Installer API.

Complexidade

refere-se geralmente à propriedade de um sistema ou modelo cujo comportamento global não pode ser descrito sem ambiguidade, mesmo que se tenha informação completa sobre os seus componentes individuais e as suas interacções. A complexidade é uma forma possível de um oposto de simplicidade, determinabilidade e capacidade de gestão.

Eficácia

Trabalhar eficazmente significa trabalhar de tal forma que se atinja um resultado desejado. Trabalhar eficazmente significa trabalhar de tal forma que o resultado alcançado e os meios utilizados estejam numa óptima relação custo-benefício e o benefício seja maior do que os custos (princípio económico). Pelo que os custos não se referem exclusivamente a meios monetários, mas a todas as consequências negativas da acção.

Automatismos

são definidos como processos que escapam em grande parte ao controlo consciente. Diz-se que os automatismos estão próximos da economia. O seu "valor acrescentado" baseia-se na poupança de esforços, o seu lucro é imediatamente óbvio: reduzem a complexidade dos processos e aumentam o "volume de negócios" dos processos em bom funcionamento. Os automatismos produzem novas estruturas - quase nas costas das pessoas envolvidas.

Paradigma

Um paradigma de programação é um estilo de programação fundamental e difere nos seus conceitos de elementos de programação estáticos (tais como objectos, métodos, variáveis, constantes) e dinâmicos (tais como atribuições, fluxo de controlo, fluxo de dados). Há uma série de outros critérios para o desenvolvimento de software tão livre de bugs e de manutenção quanto possível - tais como a legibilidade do código do programa, liberdade de redundância, modularidade, e liberdade de efeitos secundários.

Tem seis minutos?

Depois veja este vídeo. Mesmo com VB-Script pode aceder à API do instalador e se estiver interessado pode ver o código fonte de cada classe VBS na barra de menu à esquerda.

Provavelmente está a perguntar-se, porquê o Visual Basic Script? Resposta curta: porque actualmente não há PowerShell cmdlet que possa realizar as capacidades mostradas no meu vídeo. Curiosamente, o único módulo Powershell disponível neste momento é um módulo de "leitura", que lhe permite consultar produtos e patches do Windows Installer instalados no seu sistema (e mesmo isso é uma questão de sorte, artigo 974524 do KB).

SimplyCleverMSI

an overview about SimplyCleverMSI A versão apresentada já tem vários anos e existe também uma versão melhorada. Este VBScript (chamo-lhe SimplyCleverMSI) é um projecto iniciado por mim que me apoia em projectos relacionados com os meus clientes.

O mapeamento das tabelas MSI e a sua funcionalidade (base de dados relacional e SQL) sob a forma de uma linguagem de programação ou intérprete não é de facto tão complexo como se supõe. Por mais óbvio que pareça; depende fundamentalmente da compreensão da tecnologia para que possam ser criados automatismos. Com criatividade, soluções fascinantes podem ser tornadas possíveis.


How to build an Transform within an MSI (embedded Transforms)

Referenz » Embedded Transforms | Microsoft Docs

strSQL = "SELECT " & Chr(96) & "Name" & Chr(96) & "," & _
     Chr(96) & "Data" & Chr(96) & " FROM _Storages"
Set objView = objDatabase.OpenView(strSQL)

 'Create and Insert the row.
 Set objRecord = objInstaller.CreateRecord(2)
 objRecord.StringData(1) = NameOfStorage
 objView.Execute objRecord

 'Insert storage - copy data into stream
 objRecord.SetStream 2, PathAndNameOfMST
 objView.Modify msiViewModifyAssign, objRecord

objDatabase.Commit()
objView.Close
Set objView = Nothing

As transformadas incorporadas são armazenadas no ficheiro MSI do pacote. Isto garante aos utilizadores que a transformação está sempre disponível quando o pacote de instalação também está disponível. Principalmente, as transformações incorporadas são utilizadas em ambientes multi-tenant (configurações diferentes) e/ou por considerações de segurança.

msiexec /i cryptovision.msi TRANSFORMS=:CFG_ENV_A
msiexec /i cryptovision.msi TRANSFORMS=:CFG_ENV_B
msiexec /i cryptovision.msi TRANSFORMS=:CFG_ENV_C

As transformações incorporadas podem conter valores de propriedade e também informação de registo, mas não ficheiros. Se os ficheiros tiverem de ser transportados, um remendo (.MSP) é a melhor escolha.