O SharePoint que a equipe usa no navegador, acessível pelo Windows Explorer.
O EasyShare é um aplicativo Windows que aproxima o SharePoint da rotina de quem trabalha com arquivos todos os dias. Ele cria uma unidade virtual no Explorer e permite fixar pastas do SharePoint para que elas sejam acessadas por um caminho familiar, sem transformar o trabalho em uma sequência de abas, URLs e logins repetidos.
O SharePoint é excelente como plataforma de colaboração, mas nem sempre oferece a experiência mais simples para o trabalho operacional. Muitas equipes precisam abrir o navegador, localizar o site correto, navegar por várias camadas e repetir esse processo sempre que precisam consultar ou enviar um arquivo.
O EasyShare existe para reduzir essa distância: manter o SharePoint como fonte de dados e oferecer uma experiência mais próxima do Windows, com pastas organizadas, unidade virtual e acesso centralizado.
No dia a dia, o usuário pode enfrentar:
- dificuldade para encontrar o site, biblioteca ou pasta correta;
- dependência do navegador para uma tarefa que normalmente seria feita no Explorer;
- múltiplas URLs e logins espalhados entre equipes e projetos;
- necessidade de configurar manualmente cada pasta que precisa acessar;
- confusão entre sincronizar arquivos, abrir uma pasta online e trabalhar com a estrutura real do SharePoint;
- perda de contexto quando o app é fechado ou o Windows é reiniciado.
Esses atritos aumentam o tempo gasto em tarefas simples e favorecem cópias locais desnecessárias, caminhos incorretos e erros de operação.
O EasyShare combina uma sessão autenticada do SharePoint com uma unidade virtual no Windows:
- O usuário entra no SharePoint pelo próprio EasyShare ou usa o Client ID corporativo configurado pela TI.
- No explorador nativo, escolhe um site descoberto para sua conta, a biblioteca e a pasta desejada.
- Fixa essa pasta no aplicativo.
- O EasyShare organiza as pastas fixadas em uma unidade virtual, acessível pelo Explorer.
- O conteúdo é consultado sob demanda, mantendo o SharePoint como origem dos dados.
O resultado é um fluxo mais direto: o usuário continua trabalhando com o SharePoint, mas encontra suas pastas no lugar em que já sabe trabalhar.
As pastas importantes ficam fixadas e organizadas em um único lugar. O usuário não precisa lembrar qual site ou URL contém cada documento.
O acesso acontece pelo Explorer, com uma unidade virtual e nomes de pastas definidos pela equipe. Isso reduz a curva de aprendizado e facilita a adoção por usuários menos técnicos.
O EasyShare não cria uma nova plataforma de documentos. Ele funciona como uma ponte de acesso ao conteúdo já existente no SharePoint.
O modo principal permite entrar pelo próprio aplicativo usando a conta Microsoft do usuário. Ambientes corporativos que possuem configuração no Microsoft Entra ID podem usar o modo com Client ID e Tenant fornecidos pela TI.
O aplicativo mantém as pastas fixadas, restaura a sessão quando possível, pode iniciar com o Windows e permanece na bandeja para manter a unidade virtual disponível.
As configurações ficam concentradas no aplicativo: modo de acesso, inicialização, ponto de montagem, sessão, cache e reset dos dados locais.
- Unidade virtual do Windows baseada em WinFsp.
- Assistente de configuração em sete etapas para orientar a primeira execução e recomendar opções adequadas ao ambiente.
- Explorador nativo de sites, bibliotecas e pastas: descoberta ampla via Microsoft Graph e navegação das rotas já autenticadas pela sessão WebView.
- Busca inteligente local por arquivos e pastas indexados, com histórico de itens mais acessados isolado por conta.
- Navegação do SharePoint por sessão integrada com WebView2.
- Fixação por IDs estáveis de site, drive e item no modo Microsoft Graph; na WebView, a rota validada permanece baseada em URL, sem criar identidades Graph artificiais.
- Pastas fixadas com nome personalizado no Explorer.
- Adição, edição, remoção e teste de pastas configuradas.
- Leitura e download sob demanda de arquivos.
- Upload inicial e renomeação conectados ao SharePoint.
- Restauração da sessão e atualização da unidade após o carregamento.
- Inicialização com o Windows e opção de iniciar minimizado.
- Ícone na bandeja do sistema para manter o app disponível sem ocupar a tela.
- Tela de envios para acompanhar operações pendentes.
- Ajuda integrada para orientar usuários não técnicos.
- Reset completo das configurações locais sem apagar arquivos do SharePoint.
- Atualizações pelo canal de origem: Microsoft Store para instalações da Store e GitHub Releases para instalações externas.
- Interface WinUI 3 responsiva, com tema escuro e claro e layouts adaptáveis.
Na primeira execução, o EasyShare apresenta um assistente completo para que o usuário configure o aplicativo sem precisar conhecer previamente Microsoft Entra, SharePoint, cache ou unidades virtuais. O fluxo usa a mesma identidade visual do aplicativo, adapta-se a janelas compactas, funciona por teclado e está integralmente localizado em Português (Brasil) e English (US). A mudança de idioma é aplicada desde a primeira etapa.
O assistente organiza a configuração em sete etapas:
- Boas-vindas e idioma: seleciona
pt-BRouen-USe apresenta o objetivo do fluxo. - Aparência e acessibilidade: configura tema Sistema, Claro ou Escuro e a preferência de alto contraste.
- Modo de acesso: compara Microsoft Graph e Sessão do navegador em linguagem simples e destaca a opção recomendada para o ambiente.
- Conexão: orienta Client ID, Tenant e login delegado no modo Graph ou valida a URL inicial e a manutenção da sessão no modo Browser.
- Integração com o Windows: escolhe uma letra de unidade disponível, montagem automática, inicialização com o Windows e início minimizado.
- Cache, offline e notificações: define validade das listagens, limite do cache offline, pausas em rede limitada ou bateria e preferências de avisos/modo silencioso.
- Revisão: mostra as escolhas, valida a configuração completa e permite conectar e iniciar a experiência ao concluir.
As alterações permanecem em um rascunho durante a navegação entre as etapas. Elas são validadas em cada avanço e aplicadas às configurações em um único commit somente na conclusão, evitando que um cancelamento deixe o aplicativo parcialmente configurado. Valores definidos por política corporativa são respeitados, permanecem bloqueados para edição e participam das recomendações e validações do assistente.
A conclusão da primeira execução é versionada. Quando uma versão futura do assistente exigir novas decisões, o EasyShare pode apresentar o fluxo novamente sem apagar configurações válidas. O usuário também pode iniciá-lo manualmente pelo botão Executar assistente novamente em Ajustes; nesse caso, as preferências existentes preenchem o rascunho e só são substituídas após a confirmação final.
- Instale o EasyShare a partir da release mais recente.
- Abra o aplicativo e siga o assistente: escolha o idioma, a aparência e as preferências recomendadas.
- Selecione o modo de acesso indicado para o ambiente. Use Microsoft Graph quando a TI fornecer Client ID/Tenant; a Sessão do navegador permanece disponível como alternativa compatível quando permitida.
- Conclua a conexão e escolha a integração com o Windows, o cache offline e as notificações.
- Revise as opções e conclua o assistente para aplicá-las de uma só vez.
- No modo Graph, use o Explorador para descobrir sites e fixar uma pasta. No modo Browser, fixe ou teste uma pasta pela Sessão; depois ela também fica navegável no Explorador.
- Use Busca inteligente para indexar as pastas fixadas e pesquisar arquivos ou pastas sem sair do EasyShare.
- Acesse a unidade criada pelo EasyShare no Windows Explorer.
Se a unidade não aparecer, verifique se o WinFsp está instalado, se existe pelo menos uma pasta fixada e se a opção Criar unidade automaticamente está habilitada em Ajustes.
- Windows 10 versão 19041 ou superior, ou Windows 11.
- WebView2 Runtime para a sessão integrada do SharePoint.
- WinFsp para a unidade virtual.
- Conectividade com o ambiente Microsoft 365/SharePoint da organização.
O instalador pode incluir os pré-requisitos necessários, conforme a versão publicada.
É o caminho recomendado para a maioria dos usuários. A autenticação acontece na sessão integrada do EasyShare e não exige que o usuário conheça Client ID ou Tenant.
É destinado a ambientes em que a TI registrou o aplicativo no Microsoft Entra ID e forneceu os dados necessários. O uso desse modo depende de permissões, redirect URI e consentimento administrativo configurados corretamente.
Usuário
↓
EasyShare / WinUI 3
├─ Explorador SharePoint via Microsoft Graph + MSAL ou rotas WebView autenticadas
├─ Índice local e histórico de acesso por identidade
├─ Sessão SharePoint via WebView2
├─ Rotas e ajustes locais via SQLite
├─ Unidade virtual via WinFsp
└─ Serviços de conteúdo SharePoint
↓
SharePoint / Microsoft 365
- WinUI 3 e Windows App SDK: interface e janela nativas do Windows.
- WebView2: sessão integrada para autenticação no SharePoint.
- WinFsp e WinFsp.Net: criação e operação da unidade virtual.
- SQLite: armazenamento local de rotas e preferências.
- Fila de uploads: grava cada alteração em
LocalApplicationData\EasyShare\UploadQueueantes de tentar a rede, com retry e preservação do arquivo em caso de queda. - Microsoft Graph/MSAL: login delegado, descoberta limitada às permissões da conta, navegação nativa e operações de conteúdo para rotas fixadas por IDs estáveis.
- Microsoft Store / GitHub Releases: o tipo de assinatura do pacote seleciona automaticamente o canal de atualização; instalações da Store usam as APIs da Store e instalações externas preservam o updater do GitHub.
As listagens de pastas ficam em cache no SQLite pelo intervalo definido em Ajustes > Cache de listagem. O cache guarda somente metadados da listagem, não o conteúdo dos arquivos, e é invalidado após criar, enviar, renomear ou excluir itens. Ao sair da sessão ou resetar o aplicativo, o cache é limpo.
Alterações feitas pelo Explorer são gravadas primeiro na fila local. O EasyShare tenta o envio em segundo plano com retentativa progressiva. Se o arquivo remoto mudou durante a edição, o envio fica marcado como conflito e o payload local é mantido para revisão; ele não sobrescreve silenciosamente a versão de outra pessoa.
O projeto valida HTTPS e hosts SharePoint tanto na sessão WebView quanto na descoberta Graph. A allowlist corporativa filtra os sites antes de exibi-los e é aplicada novamente ao fixar ou usar uma rota. Caminhos Graph são confinados à pasta fixada, e falhas remotas não substituem o cache válido por uma listagem vazia. Cache de diretórios, índice local e histórico são separados por identidade autenticada; cookies e tokens não são persistidos no índice. A limpeza de cache também é acionada durante o reset e a limpeza da sessão.
A descoberta delegada combina sites seguidos e busca do Microsoft 365; ela não é uma enumeração garantidamente completa de todo o tenant. Por isso, a pesquisa por nome e a entrada manual de URL continuam disponíveis como fallback. No modo Graph, a URL manual é resolvida e validada antes de salvar para obter os IDs estáveis de site, biblioteca e pasta; ela não muda silenciosamente para o transporte por cookies.
Ainda assim, o projeto está em desenvolvimento ativo e não deve ser tratado como uma distribuição de produção sem concluir:
- testes automatizados para os fluxos de autenticação e conteúdo;
- validação após reboot e fechamento completo do aplicativo;
- assinatura confiável de MSI, EXE e MSIX;
- validação criptográfica do instalador antes da execução pelo updater;
- revisão final do instalador e da política de confiança do certificado.
Não distribua certificados de teste como se fossem certificados de produção. Em máquinas com Smart App Control ou proteção equivalente, binários não assinados ou assinados apenas localmente podem ser bloqueados.
Para habilitar o modo Client ID da empresa:
- Registre um aplicativo em Microsoft Entra ID > Registros de aplicativo como aplicativo público/nativo.
- Em Autenticação, adicione o Redirect URI de aplicativo móvel e desktop
http://localhoste habilite o fluxo de cliente público. - Em Permissões de API > Microsoft Graph > Delegadas, adicione somente
User.Read,Sites.Read.All,Files.ReadWrite.Alleoffline_access.Sites.ReadWrite.Allnão é necessário para o fluxo atual; confirme a política de menor privilégio da organização. - Conceda consentimento administrativo quando o tenant exigir.
- Informe no EasyShare o Application (client) ID e o Tenant ID. Se a autenticação entrar em loop, remova a conta/cache do aplicativo e confirme o Redirect URI e o consentimento.
O modo Entrar pelo app continua sendo o caminho recomendado quando a TI não deseja registrar um aplicativo corporativo.
- Instalar WebView2, WinFsp e o Windows App Runtime compatíveis.
- Instalar o MSI/EXE somente depois de validar a assinatura Authenticode dos arquivos.
- Ativar Abrir EasyShare junto com o Windows apenas após confirmar que o pacote foi instalado para o usuário correto.
- Validar uma pasta fixada, criação/renomeação, upload com a rede desligada e remontagem após reinício.
- Publicar somente assets assinados por certificado de code signing confiável. O script de release aceita
-RequireTrustedSignaturepara bloquear a publicação quando essa condição não for atendida.
- .NET 10 SDK.
- Windows SDK compatível com o alvo
10.0.26100.0. - Dependências restauráveis via NuGet.
- WinFsp e WebView2 para executar e validar todos os fluxos.
git clone https://github.com/cainhooow/EasyShare.git
cd EasyShare
dotnet restore .\src\EasyShare\EasyShare.csproj --runtime win-x64
dotnet build .\EasyShare.slnx --configuration Release --no-restorePara gerar um pacote MSIX de teste:
dotnet publish .\src\EasyShare\EasyShare.csproj `
--configuration Release `
--runtime win-x64 `
--self-contained true `
-p:Platform=x64 `
-p:GenerateAppxPackageOnBuild=true `
-p:AppxPackageDir=.\dist\package\O pacote MSIX precisa ser assinado antes de ser copiado para o instalador manual e para o patch. Sem essa etapa, o Add-AppxPackage falha com 0x800B0100 mesmo que o certificado esteja instalado na máquina.
Use o certificado de code signing disponível no repositório local de certificados do Windows (ou informe o thumbprint do certificado de produção):
.\scripts\Sign-EasyShareArtifacts.ps1 `
-MsixPath .\dist\package\EasyShare_1.0.26.0_x64.msix `
-CertificateThumbprint $env:EASYSHARE_SIGNING_CERT_THUMBPRINTDepois de assinar o MSIX, copie-o para os payloads e gere o instalador manual e o patch canônico. Assine os executáveis finais antes de publicar. Quando uma release fizer a ponte entre canais de assinatura, informe ao patch o certificado confiável para o cliente de origem.
.\scripts\Sign-EasyShareArtifacts.ps1 `
-ExePath .\dist\EasyPointShareSetup.exe `
-CertificateThumbprint $env:EASYSHARE_SIGNING_CERT_THUMBPRINT
.\scripts\Sign-EasyShareArtifacts.ps1 `
-PatchExePath .\dist\EasySharePatch_from_1_0_0_25_to_1_0_26_0.exe `
-CertificateThumbprint $env:EASYSHARE_PATCH_SIGNING_CERT_THUMBPRINTO repositório consultado pelo updater pode ser alterado no build:
dotnet build .\src\EasyShare\EasyShare.csproj `
-p:GitHubRepositoryOwner=owner `
-p:GitHubRepositoryName=repoAntes de publicar, adicione em CHANGELOG.md uma seção com a versão exata do Package.appxmanifest, por exemplo ## [1.0.26.0] - 2026-07-14, descrevendo o que mudou. O script bloqueia a publicação quando essa seção não existe ou está vazia.
Depois de gerar os instaladores em dist/, use o script abaixo. É necessário ter o GitHub CLI instalado e autenticado com gh auth login.
.\scripts\Publish-GitHubRelease.ps1 `
-Repository cainhooow/EasyShare `
-ExePath dist/EasyPointShareSetup.exe `
-PatchExePath dist/EasySharePatch_from_1_0_0_25_to_1_0_26_0.exe `
-MsixPath dist/EasyShare_1.0.26.0_x64.msix `
-WindowsAppRuntimePath dist/payload-exe/Microsoft.WindowsAppRuntime.2.msix `
-WinFspPath dist/payload-exe/winfsp-2.1.25156.msi `
-InstallScriptPath installer/Install-EasyShare.ps1 `
-CertificatePath dist/payload-exe/EasyShare_TestCertificate.cer `
-BaseMsixPath dist/base/EasyShare_1.0.0.25_x64.msix `
-ExpectedBaseSha256 $env:EASYSHARE_BASE_MSIX_SHA256 `
-AdditionalAssetPaths @("dist/SHA256SUMS.txt", "dist/RELEASE-PROVENANCE.md") `
-ExpectedPatchSignerThumbprint $env:EASYSHARE_PATCH_SIGNING_CERT_THUMBPRINTO script valida as assinaturas, a identidade explícita do assinante do patch de transição, o manifesto do pacote e os hashes do MSIX incorporado nos dois executáveis. Os caminhos do Windows App Runtime, WinFsp, script de instalação e certificado são obrigatórios; nome, tamanho e SHA-256 de cada arquivo precisam coincidir com os metadados do instalador manual. O runtime tem estrutura, assinatura e identidade verificadas, o WinFsp precisa ter assinatura Authenticode do fornecedor aprovado e o certificado precisa corresponder ao MSIX alvo. O wrapper assinado eleva somente a etapa de pré-requisitos, que usa uma área temporária protegida em Program Files, sem redirecionamentos e acessível apenas por Administradores e SYSTEM. Depois dessa etapa, o processo original instala o MSIX no contexto do usuário que iniciou o setup; nenhum script elevado é executado a partir de cache gravável pelo usuário. Os digests dos assets são congelados antes das validações, reconferidos após elas e imediatamente antes do upload, e comparados aos digests remotos sem recalcular o valor esperado. O fluxo também aplica o patch sobre o pacote-base aprovado e exige reconstrução byte a byte do alvo. A release permanece em rascunho enquanto assets obsoletos são removidos e o conjunto final é conferido; MSI é rejeitado como asset público.
O app seleciona exclusivamente o patch cujo nome canônico liga a versão instalada à release mais recente. EasyPointShareSetup.exe e o MSIX ficam disponíveis na página apenas para instalação inicial ou recuperação manual; não há fallback automático para pacote completo.
Quando uma nova versão estiver disponível, o conteúdo da seção correspondente do GitHub Release aparece na tela Sobre, em O que há de novo, antes das ações de download e instalação.
Os próximos avanços prioritários são:
- concluir os testes de inicialização, bandeja e restauração da sessão;
- fortalecer downloads, retentativas e conflitos de upload;
- finalizar a assinatura e a validação do fluxo de atualização;
- publicar instaladores de produção com pré-requisitos confiáveis;
- automatizar build, testes e releases com CI/CD.
Issues, melhorias de UX, testes de integração e revisões de segurança são bem-vindos. Ao relatar um problema, inclua a versão do EasyShare, a versão do Windows, o modo de acesso usado e os passos para reproduzir o comportamento.
O EasyShare é um MVP funcional em evolução. A proposta principal — acessar pastas do SharePoint pelo Windows Explorer com uma configuração simples — já está implementada, enquanto os fluxos de distribuição e validação de produção continuam sendo aprimorados.