Comments (5)
It raises several questions :
- Which technology is best suited : ClickOnce, WIX, Visual Studio Project template, ... The main con of ClickOnce is that it requires a digital code signing certificate (Authenticode).
- Where to store the setup and binaries to make them available to everyone ?
- How to update the application once installed ?
- How to communicate about the availability of this free application ?
I've just discovered this extension and will take a look on it : https://marketplace.visualstudio.com/items?itemName=caphyon.AdvancedInstallerforVisualStudio2019
from needabreak.
Advanced Installer is definitively not an option: it is a commercial product, the free version is too limited for my needs. For instance the free version do not permit to automatically launch the application after installation.
from needabreak.
In order to store binaries or setup, Github recommand using Releases : https://help.github.com/en/github/managing-large-files/distributing-large-binaries
There also are several other solutions:
- https://pages.github.com/
- https://www.softpedia.com/user/contact.php
- https://www.filehorse.com/submit/
- https://www.snapfiles.com/feedback/
from needabreak.
I will stick using ClickOnce because it is the most convenient way to create a setup and easily allow auto-update of the application. I'll have to buy an Authenticode digital certificate one day in order to get rid of the UAC message.
I just published a v1.0.0 release with setup files attached in a zip. I also created a GitHub page to hold the update location used by ClickOnce. It should allow auto-update.
I encountered an interesting problem while testing : the setup once uploaded to git did not work anymore. It was because the ClickOnce manifest is hashed with CRLF line endings and git replace CRLF with LF during commit. The hash did not match the file anymore and the setup was considered corrupted. I have solved the problem with this command :
git config --local core.autocrlf false
It disables the automatic CRLF correction for the project.
The error in the installation logs was
[03/04/2020 18:17:59] System.Deployment.Application.InvalidDeploymentException (HashValidation)
- Le manifeste d'application possède un hachage calculé différent de celui spécifié ou aucun hachage n'est spécifié.
- Source : System.Deployment
- Trace de la pile :
à System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, IDownloadNotification notification, DownloadOptions options, Uri& appSourceUri, String& appManifestPath)
à System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
à System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
à System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl, Uri& deploymentUri)
à System.Deployment.Application.ApplicationActivator.PerformDeploymentActivationWithRetry(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
--- Fin de la trace de la pile à partir de l'emplacement précédent au niveau duquel l'exception a été levée ---
à System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
à System.Deployment.Application.ApplicationActivator.PerformDeploymentActivationWithRetry(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
à System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
--- Exception interne ---
System.Deployment.Application.InvalidDeploymentException (HashValidation)
- Le fichier NeedABreak.exe.manifest possède un hachage calculé différent de celui spécifié dans le manifeste.
- Source : System.Deployment
- Trace de la pile :
à System.Deployment.Application.ComponentVerifier.VerifyFileHash(String filePath, Hash hash)
à System.Deployment.Application.ComponentVerifier.VerifyFileHash(String filePath, HashCollection hashCollection)
à System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, IDownloadNotification notification, DownloadOptions options, Uri& appSourceUri, String& appManifestPath)
from needabreak.
I put the GitHub page holding setup files in the gh-pages branch. This issue can be considered closed now.
from needabreak.
Related Issues (20)
- Discourage user from selecting "Postpone"
- The popup window should appear only when the user is inactive HOT 2
- Add a settings window HOT 1
- Countdown sometimes start twice [BUG]
- Idle detection can be improved
- [BUG] Counting time left should continue even when NeedABreak is suspended HOT 1
- [BUG] Update not automatically proposed HOT 1
- Replace "suspend mode" by "do not disturb" mode
- [BUG] Time left not reset after screen lock when "do not disturb" mode is active
- Benoît => Benoit
- [BUG] Manual session locking not detected anymore
- Update dependencies and migrate to .NET 8
- Publish wap project to Microsoft Store HOT 1
- Display today's screen time
- Win32Exception when clicking on INRS link
- Run at startup does not work with MSIX package HOT 2
- Store screen time in case of reboot
- The time remaining before session lockout should be reset when the user puts the PC to sleep
- mailto: opens a new webbrowser instead of mailing app HOT 1
- Keep time left when screen is locked for less than five minutes
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from needabreak.