Programação para Windows sem redistributo
-
20-09-2019 - |
Pergunta
Pode ser uma pergunta estúpida, mas todas as minhas tentativas para o Google falharam. A questão é: como você pode desenvolver aplicativos do Windows que não precisam de um pré-instalado redistribuível? Quero criar aplicativos que sejam executados também em versões mais antigas do Windows, que não possuem a estrutura .NET ou algo semelhante incluído.
Obrigado Ewolf
Solução
Primeiro, programa em um idioma nativo, como C ++, sem clr.
Segundo, desative o manifesto e evite vincular DLLs externos (como STDC ou MFC).
Outras dicas
O que você quer dizer com versões mais antigas do Windows?
A estrutura .NET faz parte do Windows desde o Windows 2003 e .NET 1.1.
Portanto, se você estiver segmentando versões do Windows mais recentes que o Windows 2003, poderá ter certeza de que o .NET está disponível.
Há também soluções, que Automatize a vinculação/embalagem de produtos .NET, para que você não precise enviar nenhum redistribuível etc.
Atualizar:
Acabei de descobrir isso Mono permite que você vincule todo o tempo de execução ao seu executável.
Eles chamam isso de recurso Pacote.
Leia mais sobre isso aqui.
Use Delphi - Embora as versões mais recentes do IDE tenham alguns bugs ímpares, é fácil criar aplicativos nativos do Windows que não precisam de um redistribuível. Muito mais fácil de usar do que C ++/Win32.
Editar: Como Ewolf apontou, ele não precisava do .NET, apesar da pergunta original marcada como .NET.
Em suma, algumas máquinas mais antigas, como Win95/98/2000, podem não ter o tempo de execução instalado. Como você especificou .NET, suponho que você deseja criar um aplicativo usando .NET, há um grande, mas você precisa ter o tempo de execução .NET instalado de antemão, você pode executar o aplicativo .NET. Você pode facilmente contornar isso por dois métodos:
- Instale o tempo de execução .NET manualmente ou
Use um script de instalador personalizado que possa detectar se o .NET Runtime for instalado ou não, para instalar o .NET Runtime Redistributable.
Se você está falando de um aplicativo nativo, como C/C ++, o melhor caminho a seguir (para evitar dependências e minimizar o número de DLLs necessários) é, desenvolva -o no Raw WinApi32, usando apenas as DLLs padrão que muitas máquinas do Windows terá, commctrl.dll, user32.dll, advapi.dll para citar apenas alguns. O resultado final será um executável menor. É claro que você pode agrupar outras DLLs, vinculando estaticamente as DLLs para formar um grande executável do Mammoth.
Eu recomendo que você use o WTL, que é uma estrutura leve C ++. É apenas um passo acima da API Win32, para que você obtenha pequenos ex -dependentes com poucas dependências. O WTL requer a estrutura ATL a que você pode vincular estaticamente, o que significa que você só precisa enviar seu exe.
Outra estrutura que vale a pena ver é Qt. No entanto, isso exige que você envie algumas DLLs com seu aplicativo. O QT é uma estrutura fantástica e acho que você achará mais produtivo que o WTL (dependendo das necessidades do seu aplicativo, é claro.)