Restructured for single table of contents (docs/readme.md)
Removed numbering on file naming and separated into separate sub-directories for getting-started, using, and contributing.
41
README.md
@@ -1,7 +1,7 @@
|
|||||||
| Squirrel.Windows |
|
| README.md |
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
# Squirrel: It's like ClickOnce but Works™
|
# Squirrel: It's like ClickOnce but Works™
|
||||||
|
|
||||||
@@ -19,47 +19,20 @@ Windows apps should be as fast and as easy to install and update as apps like Go
|
|||||||
* **Installing** is Wizard-Free™, with no UAC dialogs, does not require reboot, and is .NET Framework friendly.
|
* **Installing** is Wizard-Free™, with no UAC dialogs, does not require reboot, and is .NET Framework friendly.
|
||||||
* **Updating** is in the background, doesn't interrupt the user, and does not require a reboot.
|
* **Updating** is in the background, doesn't interrupt the user, and does not require a reboot.
|
||||||
|
|
||||||
Refer to our full list of goals for [integrating, packaging, distributing, installing, and updating](docs/0-What-Do-We-Want.md).
|
Refer to our full list of goals for [integrating, packaging, distributing, installing, and updating](docs/goals.md).
|
||||||
|
|
||||||
## 1 Getting Started
|
## Documentation
|
||||||
|
|
||||||
Section 1, [Getting Started](docs/1-Getting-Started.md), will step through the integration of Squirrel.Windows for a basic c# application. The steps for using Squirrel.Windows with your application include the following:
|
See the documentation [Table of Contents](docs/readme.md) for an overview of the available documentation for Squirrel.Windows. It includes a [Getting Started Guide](docs/GettingStarted/0-index.md) as well as additional topics related to using Squirrel in your applications.
|
||||||
|
|
||||||
* [1.1 Integrating](docs/1.1-Integrating.md) - integrating Squirrel update into your application.
|
|
||||||
* [1.2 Packaging](docs/1.2-Packaging.md) - packaging application files and preparing them for release.
|
|
||||||
* [1.3 Distributing](docs/1.3-Distributing.md) - providing install and update files for users.
|
|
||||||
* [1.4 Installing](docs/1.4-Installing.md) - process of initial installation of your application.
|
|
||||||
* [1.5 Updating](docs/1.5-Updating.md) - process of updating an existing install.
|
|
||||||
|
|
||||||
## 2 Advanced Usage
|
|
||||||
|
|
||||||
Section [2 Advanced Usage](docs/2-Advanced-Usage.md), explores specific advanced topics for using Squirrel, including the following:
|
|
||||||
|
|
||||||
|
|
||||||
* [2.1 More Integrating](docs/2.1-More-Integrating.md) - details on integrating Squirrel in MyApp along with advanced topics (e.g., [Debugging](docs/2.1-Integrating-Debugging.md), [Custom Squirrel Events](docs/2.1-Integrating-Custom-Events.md)).
|
## License and Usage
|
||||||
* [2.2 More Packaging](docs/2.2-More-Packaging.md) - packaging meta data details and advanced topics (e.g., [Automating Packaging](docs/2.2.2-Packing-Automate-Nuspec.md), [Delta Packages](docs/2.2-Packaging-Delta-Packages.md), [Application Signing](docs/2.2-Packaging-Releasify-Application-Signing.md)).
|
|
||||||
* [2.3 More Distributing](docs/2.3-More-Distributing.md) - additional distribution options (e.g., [Microsoft IIS](docs/2.3-Distributing-IIS.md), [GitHub](docs/2.3-Distributing-GitHub.md), [Amazon S3](docs/2.3-Distributing-Amazon-S3.md)).
|
|
||||||
* [2.4 More Installing](docs/2.4-More-Installing.md) - detailed install steps and advanced topics (e.g., [Machine-wide Installs](docs/2.4-Machine-wide-Installs.md), [Loading GIF](docs/2.4-Loading-Gif.md)).
|
|
||||||
* [2.5 More Updating](docs/2.5-More-Updating.md) - detailed update steps.
|
|
||||||
|
|
||||||
|
|
||||||
## 3 Contributing
|
|
||||||
|
|
||||||
Why not give back and help make Squirrel even better by [contributing](docs/3-Contributing.md) to the project.
|
|
||||||
|
|
||||||
## 4 FAQ
|
|
||||||
|
|
||||||
Have a question? Review the [Frequently Asked Questions (FAQ)](docs/4-FAQ.md) document.
|
|
||||||
|
|
||||||
## 5 Copyright and Usage
|
|
||||||
|
|
||||||
See [COPYING](COPYING) for details on copyright and usage of the Squirrel.Windows software.
|
See [COPYING](COPYING) for details on copyright and usage of the Squirrel.Windows software.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|Next: [1 Getting Started](docs/1-Getting-Started.md)|
|
|
||||||
|:---|
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
| [Squirrel.Windows](../README.md) |
|
|
||||||
|:---|
|
|
||||||
|
|
||||||
# 1. Getting Started
|
|
||||||
|
|
||||||
Getting Started will walk you through the integration of Squirrel.Windows for a basic c# Windows Forms application named MyApp.
|
|
||||||
|
|
||||||
## MyApp
|
|
||||||
|
|
||||||
MyApp simply displays the assembly location and application version on a simple form.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
For simplicity, any unneeded references and files have been removed from the solution.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
If you wish to follow along, you can [download](examples/1-MyApp.zip) a zip file of the MyApp solution.
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
The primary steps for configuration include the following:
|
|
||||||
|
|
||||||
* [1.1 Integrating](1.1-Integrating.md) - integrating Squirrel update into your application.
|
|
||||||
* [1.2 Packaging](1.2-Packaging.md) - packaging application files and preparing them for release.
|
|
||||||
* [1.3 Distributing](1.3-Distributing.md) - providing install and update files for users.
|
|
||||||
* [1.4 Installing](1.4-Installing.md) - process of initial installation of your application.
|
|
||||||
* [1.5 Updating](1.5-Updating.md) - process of updating an existing install.
|
|
||||||
|
|
||||||
---
|
|
||||||
|Next: [1.1 Integrating](1.1-Integrating.md)|
|
|
||||||
|:---|
|
|
||||||
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [1\. Getting Started](1-Getting-Started.md) |
|
|
||||||
|:---|
|
|
||||||
|
|
||||||
# 1.3 Distributing
|
|
||||||
|
|
||||||
After packaging MyApp for distribution, the various files in the `Releases` directory are used to distribute MyApp to users.
|
|
||||||
|
|
||||||
* **Setup Application** - the `Setup.exe` application is provided to new users to install the current version of MyApp (see [1.4 Installing](1.4-Installing.md)).
|
|
||||||
* **Update Files** - the `RELEASES` file, along with versioned full and delta packages, are used by the update process (see [1.4 Updating](1.4-Updating.md)).
|
|
||||||
|
|
||||||
## Local File Distribution
|
|
||||||
|
|
||||||
For simplicity, this Getting Started guide uses a local file system location for updates. The location is defined in the update location provided to the `UpdateManager` (see code in [1.1.2 Basic Updating](1.1-Integrating.md)).
|
|
||||||
|
|
||||||
This generally is not practical for updates, unless all your users have access to similar network path where the files could be easily placed.
|
|
||||||
|
|
||||||
## Additional Distribution Options
|
|
||||||
|
|
||||||
Section [2.3 More Distributing](2.3-More-Distributing.md) will go over using alternate sources to serve your application packages, including the following:
|
|
||||||
|
|
||||||
* Microsoft IIS
|
|
||||||
* GitHub
|
|
||||||
* Amazon S3
|
|
||||||
|
|
||||||
---
|
|
||||||
|Next: [1.4 Installing](1.4-Installing.md)|
|
|
||||||
|:---|
|
|
||||||
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
| [Squirrel.Windows](../README.md) |
|
|
||||||
|:---|
|
|
||||||
|
|
||||||
# 2 Advanced Usage
|
|
||||||
|
|
||||||
This section explores specific advanced topics for using Squirrel.
|
|
||||||
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
The advanced usage sections are organized in the same order as Getting Started, but are meant as a reference and don't need to be reviewed in order.
|
|
||||||
|
|
||||||
* [2.1 More Integrating](2.1-More-Integrating.md) - details on integrating Squirrel in MyApp along with advanced topics (e.g., [Debugging](2.1-Integrating-Debugging.md), [Custom Squirrel Events](2.1-Integrating-Custom-Events.md)).
|
|
||||||
* [2.2 More Packaging](2.2-More-Packaging.md) - packaging meta data details and advanced topics (e.g., [Automating Packaging](2.2.2-Packing-Automate-Nuspec.md), [Delta Packages](2.2-Packaging-Delta-Packages.md), [Application Signing](2.2-Packaging-Releasify-Application-Signing.md)).
|
|
||||||
* [2.3 More Distributing](2.3-More-Distributing.md) - additional distribution options (e.g., [Microsoft IIS](2.3-Distributing-IIS.md), [GitHub](2.3-Distributing-GitHub.md), [Amazon S3](2.3-Distributing-Amazon-S3.md)).
|
|
||||||
* [2.4 More Installing](2.4-More-Installing.md) - detailed install steps and advanced topics (e.g., [Machine-wide Installs](2.4-Machine-wide-Installs.md), [Loading GIF](2.4-Loading-Gif.md)).
|
|
||||||
* [2.5 More Updating](2.5-More-Updating.md) - detailed update steps.
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|Next: [2.1 More Integrating](2.1-More-Integrating.md)|
|
|
||||||
|:---|
|
|
||||||
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md)|
|
|
||||||
|:---|
|
|
||||||
|
|
||||||
# 2.3 More Distributing
|
|
||||||
|
|
||||||
This section goes into greater detail for items related to section [1.3 Distributing](1.3-Distributing.md).
|
|
||||||
|
|
||||||
* [Microsoft IIS](2.3-Distributing-IIS.md) - using IIS to distribute your update packages.
|
|
||||||
* [GitHub](2.3-Distributing-GitHub.md) - using GitHub to distribute your update packages.
|
|
||||||
* [Amazon S3](2.3-Distributing-Amazon-S3.md) - using Amazon S3 to distribute your update packages.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|Next: [2.4 More Installing](2.4-More-Installing.md)|
|
|
||||||
|:---|
|
|
||||||
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
| [Squirrel.Windows](../README.md) |
|
|
||||||
|:---|
|
|
||||||
|
|
||||||
# 3 Contributing
|
|
||||||
|
|
||||||
Why not give back and help make Squirrel even better? Here is an overview of ways you can become more involved.
|
|
||||||
|
|
||||||
* **Join the Squirrel Slack Room** - email [paul@paulbetts.org](mailto:paul@paulbetts.org) with the email address you'd like to receive an invite.
|
|
||||||
* **Contribute Documentation** - improve the documentation or provide additional code examples to benefit others.
|
|
||||||
* **Subscribe to Issues on GitHub** - have some experience using Squirrel? Help answer questions under issues or post a Pull Request fixing a bug.
|
|
||||||
* **Contribute Code** - have a great feature that you feel is a good fit for Squirrel? Send a Pull Request.
|
|
||||||
|
|
||||||
|
|
||||||
## Additional Helps for Contributing
|
|
||||||
|
|
||||||
Here is some additional help on getting started contributing to the project.
|
|
||||||
|
|
||||||
### Visual Studio Solution Overview
|
|
||||||
|
|
||||||
Review the [high-level overview](3-Contributing-VS-Solution-Overview.md) of the Squirrel Visual Studio solution and it's projects.
|
|
||||||
|
|
||||||
**Tip:** You can compile the Squirrel.Windows solution with Visual Studio version 2013 and above (including community edition).
|
|
||||||
|
|
||||||
### Building Squirrel
|
|
||||||
|
|
||||||
For the Impatient:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
git clone https://github.com/squirrel/squirrel.windows
|
|
||||||
git submodule update --init --recursive ## THIS IS THE PART YOU PROBABLY FORGOT
|
|
||||||
.\.NuGet\NuGet.exe restore
|
|
||||||
msbuild /p:Configuration=Release
|
|
||||||
```
|
|
||||||
|
|
||||||
**Tip:** Squirrel.Windows is a fairly typical C# / C++ project, the only special part is making sure to clone submodules via the command above.
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|Next: [4. FAQ](4-FAQ.md)|
|
|
||||||
|:---|
|
|
||||||
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [X\. XXXXX](X-XXXXX.md) |
|
|
||||||
|:---|
|
|
||||||
|
|
||||||
# X Title
|
|
||||||
|
|
||||||
IntroText
|
|
||||||
|
|
||||||
## X.1 Section
|
|
||||||
|
|
||||||
## X.2 Section
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|Next: [X\. XXXX](XXXX.md)|
|
|
||||||
|:---|
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
21
docs/contributing/building-squirrel.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
| [docs](..) / [contributing](.) / building-squirrel.md
|
||||||
|
|:---|
|
||||||
|
|
||||||
|
# Building Squirrel
|
||||||
|
|
||||||
|
Squirrel.Windows is a fairly typical C# / C++ project, the only special part is making sure to clone submodules via the command shown below.
|
||||||
|
|
||||||
|
For the Impatient:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://github.com/squirrel/squirrel.windows
|
||||||
|
git submodule update --init --recursive ## THIS IS THE PART YOU PROBABLY FORGOT
|
||||||
|
.\.NuGet\NuGet.exe restore
|
||||||
|
msbuild /p:Configuration=Release
|
||||||
|
```
|
||||||
|
|
||||||
|
**Tip:** You can compile the Squirrel.Windows solution with Visual Studio version 2013 and above (including community edition).
|
||||||
|
|
||||||
|
---
|
||||||
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|
|----|
|
||||||
21
docs/contributing/contributing.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
| [docs](..) / [contributing](.) / contributing.md
|
||||||
|
|:---|
|
||||||
|
|
||||||
|
# Contributing
|
||||||
|
|
||||||
|
Why not give back and help make Squirrel even better? Here is an overview of ways you can become more involved.
|
||||||
|
|
||||||
|
* **Join the Squirrel Slack Room** - email [paul@paulbetts.org](mailto:paul@paulbetts.org) with the email address you'd like to receive an invite.
|
||||||
|
* **Contribute Documentation** - improve the documentation or provide additional code examples to benefit others.
|
||||||
|
* **Subscribe to Issues on GitHub** - have some experience using Squirrel? Help answer questions under issues or post a Pull Request fixing a bug.
|
||||||
|
* **Contribute Code** - have a great feature that you feel is a good fit for Squirrel? Send a Pull Request.
|
||||||
|
|
||||||
|
|
||||||
|
## See Also
|
||||||
|
|
||||||
|
* [Building Squirrel](building-squirrel.md) - steps to build squirrel for the impatient.
|
||||||
|
* [VS Solution Overview](vs-solution-overview.md) - overview of the various projects in the Squirrel.Windows Visual Studio solution.
|
||||||
|
|
||||||
|
---
|
||||||
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|
|----|
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [3\. Contributing](3-Contributing.md) |
|
| [docs](..) / [contributing](.) / vs-solution-overview.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 3 Contributing: Visual Studio Solution Overview
|
# Visual Studio Solution Overview
|
||||||
|
|
||||||
An overview of the various projects in the Squirrel.Windows Visual Studio solution and how they relate to different
|
An overview of the various projects in the Squirrel.Windows Visual Studio solution and how they relate to different aspects of the update process.
|
||||||
aspects of the update process.
|
|
||||||
|
|
||||||
|
|
||||||
| Project / Assembly Name | Libraries (NuGet) | Libraries (NuGet) | Releases Directory (releasify output) | MyApp (install location) |
|
| Project / Assembly Name | Libraries (NuGet) | Libraries (NuGet) | Releases Directory (releasify output) | MyApp (install location) |
|
||||||
@@ -25,6 +24,6 @@ aspects of the update process.
|
|||||||
**Note**: Note that the Squirrel.exe application found in the tools directory of the Squirrel.Windows NuGet package is actually a renamed version of the Update.exe application (see Squirrel.Windows\src\Squirrel.nuspec)
|
**Note**: Note that the Squirrel.exe application found in the tools directory of the Squirrel.Windows NuGet package is actually a renamed version of the Update.exe application (see Squirrel.Windows\src\Squirrel.nuspec)
|
||||||
|
|
||||||
---
|
---
|
||||||
|Return: [3\. Contributing](3-Contributing.md)|
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|:---|
|
|----|
|
||||||
|
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
| [Squirrel.Windows](../README.md) |
|
| [docs](.) / faq.md |
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 4 FAQ
|
# Frequently Asked Questions (FAQ)
|
||||||
|
|
||||||
Frequently Asked Questions for Squirrel.Windows, organized by area below.
|
Frequently Asked Questions for Squirrel.Windows, organized by area below.
|
||||||
|
|
||||||
## Integrating
|
## Integrating
|
||||||
|
|
||||||
1. **Can Squirrel.Windows be used on applications that aren't made with .Net?**
|
1. **Can Squirrel.Windows be used on applications that aren't made with .Net?**
|
||||||
Yes, you can package a non-c# application in the same manner as described in the Getting Started guide. For additional customization, see section 2.1 on integrating [custom squirrel events for non-c# apps](2.1-Integrating-Custom-Events-Non-CS.md).
|
Yes, you can package a non-c# application in the same manner as described in the Getting Started guide. For additional customization, see [custom squirrel events for non-c# apps](using/custom-squirrel-events-non-CS.md).
|
||||||
1. **How do I migrate a ClickOnce app to Squirrel?**
|
1. **How do I migrate a ClickOnce app to Squirrel?**
|
||||||
You may want to look into the [ClickOnceToSquirrelMigrator](https://github.com/flagbug/ClickOnceToSquirrelMigrator) migration helper.
|
You may want to look into the [ClickOnceToSquirrelMigrator](https://github.com/flagbug/ClickOnceToSquirrelMigrator) migration helper.
|
||||||
|
|
||||||
@@ -22,14 +22,14 @@ Frequently Asked Questions for Squirrel.Windows, organized by area below.
|
|||||||
## Distributing
|
## Distributing
|
||||||
|
|
||||||
1. **Can I distribute update files on IIS?**
|
1. **Can I distribute update files on IIS?**
|
||||||
Yes you can, see [2.3 Distributing: Microsoft IIS](2.3-Distributing-IIS.md) for details.
|
Yes you can, see [Microsoft IIS](using/microsoft-iis.md) for details.
|
||||||
|
|
||||||
## Installing
|
## Installing
|
||||||
|
|
||||||
1. **The Initial Install via `Setup.exe` is failing. How do I learn what is going wrong?**
|
1. **The Initial Install via `Setup.exe` is failing. How do I learn what is going wrong?**
|
||||||
Check `%LocalAppData%\SquirrelTemp\SquirrelSetup.log` for logs related to the initial install.
|
Check `%LocalAppData%\SquirrelTemp\SquirrelSetup.log` for logs related to the initial install.
|
||||||
1. **Installer application doesn't do anything. The animation flashes but the application never starts.**
|
1. **Installer application doesn't do anything. The animation flashes but the application never starts.**
|
||||||
The app is likely crashing on the first run (see [2.1 Integrating: Debugging](2.1-Integrating-Debugging.md) for details).
|
The app is likely crashing on the first run (see [Debugging Installs](using/debugging-installs.md) for details).
|
||||||
2. **The Installer seems to be blocked in Enterprise environments. How can confirm this?**
|
2. **The Installer seems to be blocked in Enterprise environments. How can confirm this?**
|
||||||
Squirrel may be prevented from installing if Group Policy disallows the running of executables from `%LocalAppData%`. In this case, the "show log" button on the "installation failed" dialog will fail because `Update.exe` can not run to create a log file.
|
Squirrel may be prevented from installing if Group Policy disallows the running of executables from `%LocalAppData%`. In this case, the "show log" button on the "installation failed" dialog will fail because `Update.exe` can not run to create a log file.
|
||||||
|
|
||||||
@@ -46,11 +46,12 @@ This program is blocked by group policy. For more information, contact your syst
|
|||||||
## Updating
|
## Updating
|
||||||
|
|
||||||
1. **How do I determine what is going wrong with the UpdateManager in MyApp?**
|
1. **How do I determine what is going wrong with the UpdateManager in MyApp?**
|
||||||
You can setup your `\bin` directory so you can execute MyApp in the Visual Studio debugger and simply step through the update process as well as catch exceptions and log the results (see [2.1 Integrating: Debugging](2.1-Integrating-Debugging.md) for details)
|
You can setup your `\bin` directory so you can execute MyApp in the Visual Studio debugger and simply step through the update process as well as catch exceptions and log the results (see [Debugging Updates](using/debugging-updates.md) for details)
|
||||||
2. **I've Distributed a Broken Copy of Update.exe. How can I fix this?**
|
2. **I've Distributed a Broken Copy of Update.exe. How can I fix this?**
|
||||||
Sometimes, you might ship a broken copy of `Update.exe` that succeeds the initial install, but doesn't do what you want for some reason. To fix this, you can force an update of the `Update.exe` by including a copy of `Squirrel.exe` in your app update package. If Squirrel sees this, it will copy in this latest version to the local app installation.
|
Sometimes, you might ship a broken copy of `Update.exe` that succeeds the initial install, but doesn't do what you want for some reason. To fix this, you can force an update of the `Update.exe` by including a copy of `Squirrel.exe` in your app update package. If Squirrel sees this, it will copy in this latest version to the local app installation.
|
||||||
|
3. **How can you replace DLLs while they're loaded? Impossible!**
|
||||||
|
You can't. So, how can you do it? The basic trick that ClickOnce uses is, you have a folder of EXEs and DLLs, and an Application Shortcut. When ClickOnce goes to update its stuff, it builds a completely *new* folder of binaries, then the last thing it does is rewrite the app shortcut to point to the new folder. See []
|
||||||
|
|
||||||
---
|
---
|
||||||
| Return: [Squirrel.Windows](../README.md) |
|
| Return: [Table of Contents](readme.md) |
|
||||||
|:---|
|
|:---|
|
||||||
34
docs/getting-started/0-overview.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
| [docs](..) / [getting-started](.) / 0-overview.md|
|
||||||
|
|:---|
|
||||||
|
|
||||||
|
# Getting Started Guide
|
||||||
|
|
||||||
|
Getting Started will walk you through the integration of Squirrel.Windows for a basic c# Windows Forms application named MyApp.
|
||||||
|
|
||||||
|
## MyApp
|
||||||
|
|
||||||
|
MyApp simply displays the assembly location and application version on a simple form.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
For simplicity, any unneeded references and files have been removed from the solution.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
If you wish to follow along, you can [download](Example/MyApp.zip) a zip file of the MyApp solution.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
This guide will go over the following steps to demonstrate using Squirrel.Windows to distribute and update MyApp.
|
||||||
|
|
||||||
|
1. [Integrating](1-integrating.md) - integrating Squirrel `UpdateManager` into your application.
|
||||||
|
1. [Packaging](2-packaging.md) - packaging application files and preparing them for release.
|
||||||
|
1. [Distributing](3-distributing.md) - providing install and update files for users.
|
||||||
|
1. [Installing](4-installing.md) - process of initial installation of your application.
|
||||||
|
1. [Updating](5-updating.md) - process of updating an existing install.
|
||||||
|
|
||||||
|
---
|
||||||
|
| Next: [1. Integrating](1-integrating.md)|
|
||||||
|
|:---|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [1\. Getting Started](1-Getting-Started.md) |
|
| [docs](..) / [getting-started](.) / 1-integrating.md |
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 1.1 Integrating
|
|
||||||
|
|
||||||
|
# Step 1. Integrating
|
||||||
|
|
||||||
The first step is to configure MyApp to work with Squirrel.Windows. This requires you to install the Squirrel.Windows NuGet Package into the `MyApp.sln`.
|
The first step is to configure MyApp to work with Squirrel.Windows. This requires you to install the Squirrel.Windows NuGet Package into the `MyApp.sln`.
|
||||||
|
|
||||||
@@ -49,13 +51,9 @@ The code above demonstrates the most basic update mechanism using the `UpdateApp
|
|||||||
|
|
||||||
**Tip:** By default, the files for updating MyApp will be placed in the same directory as your `MyApp.sln` file under a `Releases` directory (e.g., `C:\Projects\MyApp\Releases`).
|
**Tip:** By default, the files for updating MyApp will be placed in the same directory as your `MyApp.sln` file under a `Releases` directory (e.g., `C:\Projects\MyApp\Releases`).
|
||||||
|
|
||||||
## Additional Update Options
|
|
||||||
|
|
||||||
See section [2.1 More Integrating](2.1-More-Integrating.md) for additional options related to the update process.
|
|
||||||
|
|
||||||
**Tip:** In this example we simply put the code in the `Program.cs` file. For a production application, place the update code later in start-up process so as to avoid slowing down your program start.
|
**Tip:** In this example we simply put the code in the `Program.cs` file. For a production application, place the update code later in start-up process so as to avoid slowing down your program start.
|
||||||
|
|
||||||
---
|
---
|
||||||
|Next: [1.2 Packaging](1.2-Packaging.md)|
|
| Previous: [Getting Started Guide](0-overview.md) | Next: [2. Packaging](2-packaging.md)|
|
||||||
|:---|
|
|:---|:---|
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [1\. Getting Started](1-Getting-Started.md) |
|
| [docs](..) / [getting-started](.) / 2-packaging.md |
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 1.2 Packaging
|
# Step 2. Packaging
|
||||||
|
|
||||||
Packaging is the process of building, packing, and preparing MyApp release packages for distribution.
|
Packaging is the process of building, packing, and preparing MyApp release packages for distribution.
|
||||||
|
|
||||||
@@ -68,15 +68,7 @@ The `Squirrel --releasify` command completes the following:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Additional Packaging Options
|
|
||||||
|
|
||||||
Section [2.2 More Packaging](2.2-More-Packaging.md) will go over advanced packaging options including the following:
|
|
||||||
|
|
||||||
* Application Version Automation
|
|
||||||
* Automated Packaging
|
|
||||||
* Application Signing
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|Next: [1.3 Distributing](1.3-Distributing.md)|
|
| Previous: [1. Integrating](1-integrating.md) | Next: [3. Distributing](3-distributing.md)|
|
||||||
|:---|
|
|:---|:---|
|
||||||
|
|
||||||
22
docs/getting-started/3-distributing.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
| [docs](..) / [getting-started](.) / 3-distributing.md |
|
||||||
|
|:---|
|
||||||
|
|
||||||
|
# Step 3. Distributing
|
||||||
|
|
||||||
|
After packaging MyApp for distribution, the various files in the `Releases` directory are used to distribute MyApp to users.
|
||||||
|
|
||||||
|
* **Setup Application** - the `Setup.exe` application is provided to new users to install the current version of MyApp (see [Installing](4-installing.md) for details).
|
||||||
|
* **Update Files** - the `RELEASES` file, along with versioned full and delta packages, are used by the update process (see [Updating](5-updating.md) for details).
|
||||||
|
|
||||||
|
## Local File Distribution
|
||||||
|
|
||||||
|
For simplicity, this Getting Started guide uses a local file system location for updates. The location is defined in the update location provided to the `UpdateManager` (see code in [Integrating: Basic Updating](1-integrating.md)).
|
||||||
|
|
||||||
|
This generally is not practical for updates, unless all your users have access to similar network path where the files could be easily placed.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
| Previous: [2. Packaging](2-packaging.md) | Next: [4. Installing](4-installing.md)|
|
||||||
|
|:---|:---|
|
||||||
|
|
||||||
@@ -1,17 +1,16 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [1\. Getting Started](1-Getting-Started.md) |
|
| [docs](..) / [getting-started](.) / 4-installing.md |
|
||||||
|:---|
|
|:---|
|
||||||
|
# Step 4. Installing
|
||||||
# 1.4 Installing
|
|
||||||
|
|
||||||
The process to install MyApp is as simple as executing the `Setup.exe` application. `Setup.exe` is generated by the `Squirrel --releasify` process and is located in the `Releases` directory.
|
The process to install MyApp is as simple as executing the `Setup.exe` application. `Setup.exe` is generated by the `Squirrel --releasify` process and is located in the `Releases` directory.
|
||||||
|
|
||||||
## Setup.exe
|
## Setup.exe
|
||||||
|
|
||||||
`Setup.exe` is a C++ bootstrapper application used to install MyApp on the user's local system. It includes the latest full version of the MyApp package files embedded in the exe file.
|
`Setup.exe` is a C++ bootstrapper application used to install MyApp on the user's local system. It includes the latest full version of the MyApp package files embedded in the exe file (see [Install Process](../using/install-process.md) for details).
|
||||||
|
|
||||||
## Install Process Overview
|
## Install Process Overview
|
||||||
|
|
||||||
The `Setup.exe` application does the following (see [2.4.2 Detail Install Process](2.4-More-Installing.md) for details):
|
The `Setup.exe` application does the following (see [Install Process](../using/install-process.md) for details):
|
||||||
|
|
||||||
* Creates a `%LocalAppData%\MyApp` directory for the MyApp to be installed.
|
* Creates a `%LocalAppData%\MyApp` directory for the MyApp to be installed.
|
||||||
* Extracts and prepares the MyApp files under an `app-1.0.0` directory.
|
* Extracts and prepares the MyApp files under an `app-1.0.0` directory.
|
||||||
@@ -25,16 +24,8 @@ An installation for MyApp will look like the following after the initial install
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Additional Install Options
|
|
||||||
|
|
||||||
Section [2.4 More Installing](2.4-More-Installing.md) will provide additional information about the Squirrel installation process, including the following:
|
|
||||||
|
|
||||||
* Detailed Install Process
|
|
||||||
* Machine-wide Installs
|
|
||||||
* Install Options (e.g., Loading GIF)
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|Next: [1.5 Updating](1.5-Updating.md)|
|
| Previous: [3. Distributing](3-distributing.md) | Next: [5. Updating](5-updating.md)|
|
||||||
|:---|
|
|:---|:---|
|
||||||
|
|
||||||
@@ -1,13 +1,12 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [1\. Getting Started](1-Getting-Started.md) |
|
| [docs](..) / [getting-started](.) / 5-updating.md |
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 1.5 Updating
|
# Step 5. Updating
|
||||||
|
|
||||||
The update process uses the update files generated by the `Squirrel --releasify` process. This includes the `RELEASES` file as well as versioned full and delta packages as required. The location of where to look for the distributed update files is provided to the `UpdateManager` in the MyApp code (see code in [1.1 Basic Updating](1.1-Integrating.md)).
|
The update process uses the update files generated by the `Squirrel --releasify` process. This includes the `RELEASES` file as well as versioned full and delta packages as required. The location of where to look for the distributed update files is provided to the `UpdateManager` in the MyApp code (see code in [Integrating: Basic Updating](1-integrating.md)).
|
||||||
|
|
||||||
Updating MyApp to a new version is the culmination of [Integrating](1.1-Integrating.md), [packaging](1.2-Packaging.md), and [distributing](1.3-Distributing.md) after [installing](1.4-Installing.md) MyApp. The process will cause you to revisit the packaging and distributing steps.
|
Updating MyApp to a new version is the culmination of integrating, packaging, and distributing after installing MyApp. The process will cause you to revisit the packaging and distributing steps.
|
||||||
|
HH
|
||||||
## New Release Packaging
|
|
||||||
|
|
||||||
To release a new update, you must first build, pack, and releasify your updated application.
|
To release a new update, you must first build, pack, and releasify your updated application.
|
||||||
|
|
||||||
@@ -70,11 +69,11 @@ E3F67244E4166A65310C816221A12685C83F8E6F MyApp-1.0.0-full.nupkg 600725
|
|||||||
|
|
||||||
## Application Updating
|
## Application Updating
|
||||||
|
|
||||||
In [Section 1.1](1.1-Integrating.md), we configured MyApp to look for and install any updates in the background each time MyApp is executed. In the MyApp example, a path to the `Releases` directory on the file system was specified.
|
In [Step 1. Integrating](1-integrating.md), we configured MyApp to look for and install any updates in the background each time MyApp is executed. In the MyApp example, a path to the `Releases` directory on the file system was specified.
|
||||||
|
|
||||||
### Updating Process Overview
|
### Updating Process Overview
|
||||||
|
|
||||||
The following steps are performed by the `UpdateManager` each time MyApp is executed (see [2.5 More Updating](2.5-More-Updating.md) for details):
|
The following steps are performed by the `UpdateManager` each time MyApp is executed (see [Update Process](../using/update-process.md) for details):
|
||||||
|
|
||||||
* The `UpdateManager` checks the `RELEASES` file at the distribution location for any updates.
|
* The `UpdateManager` checks the `RELEASES` file at the distribution location for any updates.
|
||||||
* Any update packages are downloaded and the new MyApp is prepared for execution.
|
* Any update packages are downloaded and the new MyApp is prepared for execution.
|
||||||
@@ -94,11 +93,7 @@ The next time MyApp is executed, it will be the newly installed version.
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Additional Update Options
|
|
||||||
|
|
||||||
Section [2.5 More Updating](2.5-More-Updating.md) will provide additional information about the Squirrel update process.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|Next: [2. Advanced Usage](2-Advanced-Usage.md)|
|
| Previous: [4. Installing](4-installing.md) | Return: [Table of Contents](../readme.md)|
|
||||||
|:---|
|
|:---|:---|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
@@ -1,4 +1,4 @@
|
|||||||
| [Squirrel.Windows](../README.md) |
|
| [docs](.) / goals.md |
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# What Do We Want?
|
# What Do We Want?
|
||||||
@@ -42,5 +42,5 @@ Windows apps should be as fast and as easy to install and update as apps like Go
|
|||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|Return: [README](../README.md)|
|
| Return: [Table of Contents](readme.md) |
|
||||||
|:---|
|
|:---|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
| Squirrel.Windows |
|
|
||||||
|:---|
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
# Table of Contents
|
|
||||||
|
|
||||||
This document provides a table of contents for all the Squirrel documentation.
|
|
||||||
|
|
||||||
## Getting Started
|
|
||||||
|
|
||||||
* **[Test]()**
|
|
||||||
Lots of text goes here so that it wraps and we can see the blocking on GitHub. lots of text goes here so that it [wraps]() and we can see the blocking on GitHub.
|
|
||||||
* **Test**
|
|
||||||
lots of text goes here so that it wraps and we can see the blocking on GitHub. lots of text goes here so that it wraps and we can see the blocking on GitHub.
|
|
||||||
* Test
|
|
||||||
* TEst
|
|
||||||
* Test
|
|
||||||
* Test
|
|
||||||
* **Test**
|
|
||||||
Additional summary goes here.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
63
docs/readme.md
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
| [docs](.) / Table of Contents |
|
||||||
|
|:---|
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
# Table of Contents
|
||||||
|
|
||||||
|
This document provides a table of contents for all the Squirrel documentation.
|
||||||
|
|
||||||
|
## General Documentation
|
||||||
|
|
||||||
|
* **[Squirrel Goals](goals.md)** - overview of the goals of the Squirrel.Windows project.
|
||||||
|
* **[Frequently Asked Questions (FAQ)](faq.md)** - list of frequently asked questions.
|
||||||
|
* **[Squirrel.Windows License](../COPYING)** - copyright and license for using Squirrel.Windows
|
||||||
|
|
||||||
|
## Getting Started Guide
|
||||||
|
|
||||||
|
The **[Getting Started Guide](getting-started/0-overview.md)** provides a step-by-step guide for integrating Squirrel into a simple Windows Forms application named MyApp.
|
||||||
|
|
||||||
|
1. **[Integrating](getting-started/1-integrating.md)** - integrating Squirrel `UpdateManager` into MyApp.
|
||||||
|
1. **[Packaging](getting-started/2-packaging.md)** - packaging MyApp files and preparing them for release.
|
||||||
|
1. **[Distributing](getting-started/3-distributing.md)** - providing install and update files for MyApp.
|
||||||
|
1. **[Installing](getting-started/4-installing.md)** - process of initial installation of MyApp.
|
||||||
|
1. **[Updating](getting-started/5-updating.md)** - process of updating an existing install of MyApp.
|
||||||
|
|
||||||
|
## Using Squirrel
|
||||||
|
|
||||||
|
|
||||||
|
* **Installing** - documentation related to the initial installation of your application via Setup.exe (and Setup.msi).
|
||||||
|
* [Install Process](using/install-process.md) - overview of the steps in the install process.
|
||||||
|
* [Custom Squirrel Events](using/custom-squirrel-events.md) - preforming custom actions for Squirrel events.
|
||||||
|
* [Custom Squirrel Events (non-c# apps)](using/custom-squirrel-events-non-cs.md) - steps on making a non-c# application Squirrel Aware and handling custom events.
|
||||||
|
* [Loading GIF](loading-gif.md) - specify a "loading" image during initial install of large applications.
|
||||||
|
* [GitHub](using/github.md) - overview of using GitHub for installing, distributing, and updating.
|
||||||
|
* [Machine-wide Installs](using/machine-wide-installs.md) - generating an MSI file suitable for installation via Group Policy.
|
||||||
|
* [Debugging Installs](using/debugging-installs.md) - tips for debugging Squirrel.Windows initial installs.
|
||||||
|
|
||||||
|
* **Packaging** - documentation related to packaging app files and preparing them for release.
|
||||||
|
* [NuGet Package Metadata](using/nuget-package-metadata.md) - overview of the NuGet metadata and its uses by Squirrel.
|
||||||
|
* [Squirrel Command Line](using/squirrel-command-line.md) - command line options for `Squirrel --releasify`
|
||||||
|
* [Delta Packages](using/delta-packages.md) - an overview of how `Squirrel.exe` creates delta packages.
|
||||||
|
* [Application Signing](using/application-signing.md) - adding code signing to `Setup.exe` and your application.
|
||||||
|
|
||||||
|
* **Distributing** - documentation related to distributing the Setup.exe and update package files.
|
||||||
|
* [Microsoft IIS](using/microsoft-iis.md) - overview of using Microsoft IIS for distributing your application.
|
||||||
|
* [Amazon S3](using/amazon-s3.md) - overview of using Amazon S3 for distributing your application.
|
||||||
|
* [GitHub](using/github.md) - overview of using GitHub for installing, distributing, and updating.
|
||||||
|
* **Updating** - documentation related to updating an existing install via the `UpdateManager`.
|
||||||
|
* [Update Process](using/update-process.md) - overview of the steps in the update process.
|
||||||
|
* [Update Manager](using/update-manager.md) - reference guide for the `UpdateManager`.
|
||||||
|
* [GitHub](using/github.md) - overview of using GitHub for installing, distributing, and updating.
|
||||||
|
* [Debugging Updates](using/debugging-updates.md) - tips for debugging Squirrel.Windows updates.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Why not give back and help make Squirrel even better by contributing to the project.
|
||||||
|
|
||||||
|
* [Contributing](contributing/contributing.md) - overview of ways you can become more involved with Squirrel.Windows.
|
||||||
|
* [Building Squirrel](contributing/building-squirrel.md) - steps to build squirrel for the impatient.
|
||||||
|
* [VS Solution Overview](contributing/vs-solution-overview.md) - overview of the various projects in the Squirrel.Windows Visual Studio solution.
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md) / [2.3 More Distributing](2.3-More-Distributing.md)|
|
| [docs](..) / [using](.) / amazon-s3.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.3 Distributing: Using Amazon S3
|
# Amazon S3
|
||||||
|
|
||||||
Amazon S3 can be used as an easy mechanism to host your releases
|
Amazon S3 can be used as an easy mechanism to host your releases
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ After you have setup your S3 account, the following steps will distribute a new
|
|||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
| Return: [2.3 More Distributing](2.3-More-Distributing.md)|
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|----|
|
|----|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md) / [2.2 More Packaging](2.2-More-Packaging.md)|
|
| [docs](..) / [using](.) / application-signing.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.2 Releasify: Application Signing
|
|
||||||
|
# Application Signing
|
||||||
|
|
||||||
Signing your installer with a valid code signing certificate is one of the most important things that you need to do for production apps. Both IE SmartScreen as well as virus scanning software will give a significant amount of "points" to apps that are signed correctly, preventing your users from getting scary dialogs.
|
Signing your installer with a valid code signing certificate is one of the most important things that you need to do for production apps. Both IE SmartScreen as well as virus scanning software will give a significant amount of "points" to apps that are signed correctly, preventing your users from getting scary dialogs.
|
||||||
|
|
||||||
@@ -14,8 +15,15 @@ An example invocation including both of these features would be something like:
|
|||||||
~~~powershell
|
~~~powershell
|
||||||
PM> Squirrel --releasify MyApp.1.0.0.nupkg -n "/a /f CodeCert.pfx /p MySecretCertPassword"
|
PM> Squirrel --releasify MyApp.1.0.0.nupkg -n "/a /f CodeCert.pfx /p MySecretCertPassword"
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## See Also
|
||||||
|
* [Squirrel Command Line](squirrel-command-line.md) - command line options for `Squirrel --releasify`
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
| Return: [2.2 More Packaging](2.2-More-Packaging.md) |
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|----|
|
|----|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md) / [2.1 More Integrating](2.1-More-Integrating.md)|
|
| [docs](..) / [using](.) / custom-squirrel-events-non-cs.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.1 Integrating: Custom Squirrel Events (Non-C# Apps)
|
# Custom Squirrel Events (Non-C# Apps)
|
||||||
|
|
||||||
Squirrel events allow you to handle custom events around the installation and updating process.
|
Squirrel events allow you to handle custom events around the installation and updating process.
|
||||||
|
|
||||||
@@ -36,10 +36,10 @@ This means that this EXE will be executed by the installer in a number of differ
|
|||||||
* `--squirrel-obsolete x.y.z.m` - called when your out-of-date app is no longer the newest version. Exit as soon as you're finished.
|
* `--squirrel-obsolete x.y.z.m` - called when your out-of-date app is no longer the newest version. Exit as soon as you're finished.
|
||||||
* `--squirrel-uninstall x.y.z.m` - called when your app is uninstalled. Exit as soon as you're finished.
|
* `--squirrel-uninstall x.y.z.m` - called when your app is uninstalled. Exit as soon as you're finished.
|
||||||
|
|
||||||
### See Also
|
## See Also
|
||||||
|
|
||||||
* [Custom Squirrel Events](2.1-Integrating-Custom-Events.md) - steps on making a non-c# application Squirrel Aware and handling custom events.
|
* [Custom Squirrel Events for c# Apps](custom-squirrel-events.md) - steps on making a c# application Squirrel Aware and handling custom events.
|
||||||
|
|
||||||
---
|
---
|
||||||
| Return: [2.1 More Integrating](2.1-More-Integrating.md) |
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|----|
|
|----|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md) / [2.1 More Integrating](2.1-More-Integrating.md)|
|
| [docs](..) / [using](.) / custom-squirrel-events.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.1 Integrating: Custom Squirrel Events
|
# Custom Squirrel Events
|
||||||
|
|
||||||
## Handling Squirrel Events
|
## Handling Squirrel Events
|
||||||
|
|
||||||
@@ -46,10 +46,10 @@ These methods help you to set up your application in Squirrel events - if you're
|
|||||||
|
|
||||||
* `[Create/Remove]UninstallerRegistryEntry` - creates and removes the uninstaller entry. Normally called by `Update.exe`.
|
* `[Create/Remove]UninstallerRegistryEntry` - creates and removes the uninstaller entry. Normally called by `Update.exe`.
|
||||||
|
|
||||||
### See Also
|
## See Also
|
||||||
|
|
||||||
* [Custom Squirrel Events for non-c# Apps](2.1-Integrating-Custom-Events-Non-CS.md) - steps on making a non-c# application Squirrel Aware and handling custom events.
|
* [Custom Squirrel Events for non-c# Apps](custom-squirrel-events-non-cs.md) - steps on making a non-c# application Squirrel Aware and handling custom events.
|
||||||
|
|
||||||
---
|
---
|
||||||
| Return: [2.1 More Integrating](2.1-More-Integrating.md) |
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|----|
|
|----|
|
||||||
22
docs/using/debugging-installs.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
| [docs](..) / [using](.) / debugging-installs.md
|
||||||
|
|:---|
|
||||||
|
|
||||||
|
# Debugging Installs
|
||||||
|
|
||||||
|
The following tips will help you to debug the installation of an Squirrel app.
|
||||||
|
|
||||||
|
## Simulating an Install and First Run
|
||||||
|
|
||||||
|
If the install of your application doesn't seem to be working, you can explore the behavior by executing the install steps from the command line:
|
||||||
|
|
||||||
|
~~~ps
|
||||||
|
C:\user\AppData\Local\MyApp> Update.exe --squirrel-install 1.0.0
|
||||||
|
C:\user\AppData\Local\MyApp> Update.exe --squirrel-firstrun
|
||||||
|
~~~
|
||||||
|
|
||||||
|
The first cmd should create some shortcuts then immediately exit, then the 2nd one should start your app ([source](https://github.com/Squirrel/Squirrel.Windows/issues/525))
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|
|----|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md) / [2.1 More Integrating](2.1-More-Integrating.md)|
|
| [docs](..) / [using](.) / debugging-updates.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.1 Integrating: Debugging
|
# Debugging Updates
|
||||||
|
|
||||||
The following tips will help you to debug the integration of the update process in your application.
|
The following tips will help you to debug the update process in your application.
|
||||||
|
|
||||||
## Update.exe not found?
|
## Update.exe not found?
|
||||||
|
|
||||||
@@ -19,18 +19,7 @@ To resolve this, you can simply place a file named `Update.exe` or you can copy
|
|||||||
|
|
||||||
Executing MyApp from Visual Studio will now cause it to complete the update process and your `\bin` directory will resemble the `%LocalAppData\MyApp%` install directory:
|
Executing MyApp from Visual Studio will now cause it to complete the update process and your `\bin` directory will resemble the `%LocalAppData\MyApp%` install directory:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Simulating an Install and First Run
|
|
||||||
|
|
||||||
If the install of your application doesn't seem to be working, you can explore the behavior by executing the install steps from the command line:
|
|
||||||
|
|
||||||
~~~ps
|
|
||||||
C:\user\AppData\Local\MyApp> Update.exe --squirrel-install 1.0.0
|
|
||||||
C:\user\AppData\Local\MyApp> Update.exe --squirrel-firstrun
|
|
||||||
~~~
|
|
||||||
|
|
||||||
The first cmd should create some shortcuts then immediately exit, then the 2nd one should start your app ([source](https://github.com/Squirrel/Squirrel.Windows/issues/525))
|
|
||||||
|
|
||||||
## Catching Update Exceptions
|
## Catching Update Exceptions
|
||||||
|
|
||||||
@@ -45,5 +34,5 @@ Alternatively, set up Splat Logging, see [here](https://github.com/Squirrel/Squi
|
|||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
| Return: [2.1 More Integrating](2.1-More-Integrating.md) |
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|----|
|
|----|
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md) / [2.2 More Packaging](2.2-More-Packaging.md)|
|
| [docs](..) / [using](.) / delta-packages.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.2 Releasify: Delta Packages
|
|
||||||
|
# Delta Packages
|
||||||
|
|
||||||
Now, once we've got a full package, we need to generate a Delta package. To do this, we'll replace all the DLL/EXEs in the NuGet packages with bsdiff files. [bspatch/bsdiff](http://code.logos.com/blog/2010/12/binary_patching_with_bsdiff.html) is a mostly efficient algorithm for calculating diffs between binary files (especially Native binaries, but it works well for .NET ones too), and a way to apply them.
|
Now, once we've got a full package, we need to generate a Delta package. To do this, we'll replace all the DLL/EXEs in the NuGet packages with bsdiff files. [bspatch/bsdiff](http://code.logos.com/blog/2010/12/binary_patching_with_bsdiff.html) is a mostly efficient algorithm for calculating diffs between binary files (especially Native binaries, but it works well for .NET ones too), and a way to apply them.
|
||||||
|
|
||||||
@@ -24,8 +25,9 @@ So now we've got all of the *metadata* of the original package, just none of its
|
|||||||
1. If we can't find a bspatch for a file, nuke it (it doesn't exist in the new rev)
|
1. If we can't find a bspatch for a file, nuke it (it doesn't exist in the new rev)
|
||||||
1. Zip it back up
|
1. Zip it back up
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
| Return: [2.2 More Packaging](2.2-More-Packaging.md) |
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|----|
|
|----|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,11 +1,40 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md) / [2.3 More Distributing](2.3-More-Distributing.md)|
|
| [docs](..) / [using](.) / github.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.3 Distributing: GitHub
|
# Using GitHub
|
||||||
|
|
||||||
GitHub release assets can be used to distribute the necessary Squirrel files for the Squirrel update process. It still requires you to upload all the release files as assets for each release, but provides you a means of hosting your update files via your GitHub repository.
|
GitHub release assets can be used to distribute the necessary Squirrel files for the Squirrel install and update process. It still requires you to upload all the release files as assets for each release, but provides you a means of hosting your update files via your GitHub repository.
|
||||||
|
|
||||||
### Integrating with GitHub
|
## Installing from GitHub
|
||||||
|
|
||||||
|
GitHub allows you to provide a [static link](https://help.github.com/articles/linking-to-releases/) to a repositories latest release page. You can direct your users to download the `Setup.exe` from the list of assets you uploaded for the release.
|
||||||
|
|
||||||
|
~~~
|
||||||
|
https://github.com/myuser/MyApp/releases/latest
|
||||||
|
~~~
|
||||||
|
|
||||||
|
**Tip:** This link simply redirects to the repositories latest release page, and cannot be used to download an asset directly (i.e., you can't simply make a static link to ".../releases/latest/Setup.exe"). However, you can use the [GitHub API with ajax](http://stackoverflow.com/a/26454035) to provide a direct link on your website and avoid the user having to select the correct file or navigate to the GitHub website.
|
||||||
|
|
||||||
|
## Distributing from GitHub
|
||||||
|
|
||||||
|
The following steps are required to distribute your RELEASES and update NuGet packages with GitHub:
|
||||||
|
|
||||||
|
1. **Commit Latest Code** - In order for GitHub to mark a new release as the `Latest`, you have at least on additional commit since since the last release tag was added (i.e., releases tags must not share the same commit).
|
||||||
|
1. **Create a New Release** - [Create a new GitHub release](https://help.github.com/articles/creating-releases/) in your MyApp repository matching your current release version (e.g., 1.0.0).
|
||||||
|
2. **Upload Release Files** - upload all of the files from `Releases` as assets of the GitHub release (e.g., RELEASES, MyApp.1.0.0-full.nupkg, MyApp.1.0.1-delta.nupkg, MyApp.1.0.1-full.nupkg).
|
||||||
|
3. **Set Pre-release (optional)** - if desired, set the release as a pre-release.
|
||||||
|
4. **Publish the Release** - click the "Publish Release" to make the release available to the general public and your users.
|
||||||
|
|
||||||
|
**Important:** You must upload all packages as assets you wish to be available for update (i.e., the GitHubUpdateManager doesn't look back to previous GitHub releases for previous version packages). If you only include the latest packages, Squirrel will be forced to download the latest full package for each update.
|
||||||
|
|
||||||
|
|
||||||
|
## Updating with GitHub
|
||||||
|
|
||||||
|
The Updating process requires you to build, package, releasify, and distribute the update files.
|
||||||
|
|
||||||
|
**Important:** You must ensure there is at least one additional commit since the last version release before adding a new release. GitHub will not update the latest release if the new release tag is tied to the same last commit as a previous release tag.
|
||||||
|
|
||||||
|
### GitHub Update Manager
|
||||||
|
|
||||||
To use GitHub release assets as your distribution mechanism you need to replace `UpdateManager` with `GitHubUpdateManager` when integrating Squirrel in your app:
|
To use GitHub release assets as your distribution mechanism you need to replace `UpdateManager` with `GitHubUpdateManager` when integrating Squirrel in your app:
|
||||||
|
|
||||||
@@ -25,34 +54,6 @@ Task task = Task.Run(async () =>
{
using (var mgr = UpdateManager.GitHubUpda
|
|||||||
|
|
||||||
**Source:** See [Issue #442](https://github.com/Squirrel/Squirrel.Windows/issues/442) for more information.
|
**Source:** See [Issue #442](https://github.com/Squirrel/Squirrel.Windows/issues/442) for more information.
|
||||||
|
|
||||||
### Distributing to GitHub
|
|
||||||
|
|
||||||
The following steps are required to distribute your update files with GitHub:
|
|
||||||
|
|
||||||
1. **Commit Latest Code** - In order for GitHub to mark a new release as the `Latest`, you have at least on additional commit since since the last release tag was added (i.e., releases tags must not share the same commit).
|
|
||||||
1. **Create a New Release** - [Create a new GitHub release](https://help.github.com/articles/creating-releases/) in your MyApp repository matching your current release version (e.g., 1.0.0).
|
|
||||||
2. **Upload Release Files** - upload all of the files from `Releases` as assets of the GitHub release (e.g., RELEASES, MyApp.1.0.0-full.nupkg, MyApp.1.0.1-delta.nupkg, MyApp.1.0.1-full.nupkg).
|
|
||||||
3. **Set Pre-release (optional)** - if desired, set the release as a pre-release.
|
|
||||||
4. **Publish the Release** - click the "Publish Release" to make the release available to the general public and your users.
|
|
||||||
|
|
||||||
**Important:** You must upload all packages as assets you wish to be available for update (i.e., the GitHubUpdateManager doesn't look back to previous GitHub releases for previous version packages). If you only include the latest packages, Squirrel will be forced to download the latest full package for each update.
|
|
||||||
|
|
||||||
### Installing from GitHub
|
|
||||||
|
|
||||||
GitHub allows you to provide a [static link](https://help.github.com/articles/linking-to-releases/) to a repositories latest release page. You can direct your users to download the `Setup.exe` from the list of assets you uploaded for the release.
|
|
||||||
|
|
||||||
~~~
|
|
||||||
https://github.com/myuser/MyApp/releases/latest
|
|
||||||
~~~
|
|
||||||
|
|
||||||
**Tip:** This link simply redirects to the repositories latest release page, and cannot be used to download an asset directly (i.e., you can't simply make a static link to ".../releases/latest/Setup.exe"). However, you can use the [GitHub API with ajax](http://stackoverflow.com/a/26454035) to provide a direct link on your website and avoid the user having to select the correct file or navigate to the GitHub website.
|
|
||||||
|
|
||||||
### Updating with GitHub
|
|
||||||
|
|
||||||
The Updating process is the same as described in section [1.5 Updating](1.5-Updating.md). It requires you to build, package, releasify, and distribute the update files.
|
|
||||||
|
|
||||||
**Important:** You must ensure there is at least one additional commit since the last version release before adding a new release. GitHub will not update the latest release if the new release tag is tied to the same last commit as a previous release tag.
|
|
||||||
|
|
||||||
### How it Works
|
### How it Works
|
||||||
|
|
||||||
The GitHub API is used by the `GitHubUpdateManager` to obtain the correct release and asset files for downloading. The following actions are performed:
|
The GitHub API is used by the `GitHubUpdateManager` to obtain the correct release and asset files for downloading. The following actions are performed:
|
||||||
@@ -63,7 +64,7 @@ The GitHub API is used by the `GitHubUpdateManager` to obtain the correct releas
|
|||||||
4. Follows the normal Squirrel update process by looking for a `RELEASES` file and downloading the necessary delta or full application packages.
|
4. Follows the normal Squirrel update process by looking for a `RELEASES` file and downloading the necessary delta or full application packages.
|
||||||
|
|
||||||
---
|
---
|
||||||
| Return: [2.3 More Distributing](2.3-More-Distributing.md)|
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|----|
|
|----|
|
||||||
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
@@ -1,19 +1,19 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md)|
|
| [docs](..) / [using](.) / install-process.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.4 More Installing
|
# Install Process
|
||||||
|
|
||||||
This section goes into greater detail for items related to section [1.4 Installing](1.4-Installing.md).
|
This section goes into detail about the install process.
|
||||||
|
|
||||||
## More on Setup.exe
|
## Setup.exe
|
||||||
|
|
||||||
`Setup.exe` is a C++ bootstrapper application used to install MyApp on the user's local system.
|
`Setup.exe` is a C++ bootstrapper application used to install your app on the user's local system. It is generated as part of the `Squirrel --releasify` process.
|
||||||
|
|
||||||
The `Setup.exe` file includes the `Update.exe` application and the latest version of the MyApp package to be installed. A single executable file can be provided due to the `WriteZipToSetup.exe` tool injecting the appropriate files into the exe.
|
The `Setup.exe` file includes the `Update.exe` application and the latest version of the MyApp package to be installed. A single executable file can be provided due to the `WriteZipToSetup.exe` tool injecting the appropriate files into the exe.
|
||||||
|
|
||||||
In addition, the `Setup.exe` will also ensure that .NET 4.5 is installed on the user's computer.
|
In addition, the `Setup.exe` will also ensure that .NET 4.5 is installed on the user's computer.
|
||||||
|
|
||||||
## Installation Location
|
## Install Location
|
||||||
|
|
||||||
The `Setup.exe`, and later the `UpdateManager` in MyApp must have the ability to write files to and execute files from the application install location. To ensure permission for all types of users, the user's application data directory is selected as the install location (i.e., `%LocalAppData%\MyApp`).
|
The `Setup.exe`, and later the `UpdateManager` in MyApp must have the ability to write files to and execute files from the application install location. To ensure permission for all types of users, the user's application data directory is selected as the install location (i.e., `%LocalAppData%\MyApp`).
|
||||||
|
|
||||||
@@ -36,9 +36,9 @@ The installation root really only needs to consist of two types of folders:
|
|||||||
|
|
||||||
The packages directory is effectively immutable, it simply consists of the packages we've downloaded. Using the user's local application data directory means that we the needed write-access to the install directory on a per-user basis.
|
The packages directory is effectively immutable, it simply consists of the packages we've downloaded. Using the user's local application data directory means that we the needed write-access to the install directory on a per-user basis.
|
||||||
|
|
||||||
**Tip:** See [Machine-wide Installs](2.4-Machine-wide-Installs.md) for more information on ensuring your application pushed to all users in an enterprise environment.
|
**Tip:** See [Machine-wide Installs](machine-wide-installs.md) for more information on ensuring your application pushed to all users in an enterprise environment.
|
||||||
|
|
||||||
## Detail Install Process
|
## Install Process Overview
|
||||||
|
|
||||||
The `Setup.exe` application preforms the following:
|
The `Setup.exe` application preforms the following:
|
||||||
|
|
||||||
@@ -60,17 +60,14 @@ By default, application shortcuts are created on the desktop and the Windows Sta
|
|||||||
* **Target:** `C:\Users\kbailey\AppData\Local\MyApp\Update.exe --processStart MyApp.exe`
|
* **Target:** `C:\Users\kbailey\AppData\Local\MyApp\Update.exe --processStart MyApp.exe`
|
||||||
* **Start in:** `C:\Users\kbailey\AppData\Local\MyApp\app-1.0.0`
|
* **Start in:** `C:\Users\kbailey\AppData\Local\MyApp\app-1.0.0`
|
||||||
|
|
||||||
## Advanced Install Topics
|
|
||||||
|
|
||||||
* [Machine-wide Installs](2.4-Machine-wide-Installs.md) - machine-wide Installer via MSI installer.
|
## See Also
|
||||||
* [Loading GIF](2.4-Loading-Gif.md) - specify a "loading" image during initial install of large applications.
|
|
||||||
|
|
||||||
### See Also
|
* [Loading GIF](loading-gif.md) - specify a "loading" image during initial install of large applications.
|
||||||
|
* [Machine-wide Installs](machine-wide-installs.md) - generating an MSI file suitable for installation via Group Policy.
|
||||||
* [2.1 Integrating: Debugging](2.1-Integrating-Debugging) - tips on debugging your Squirrel application.
|
* [NuGet Package Metadata](using/nuget-package-metadata.md) - overview of the NuGet metadata and its uses by Squirrel.
|
||||||
* [2.2 More Packaging: Packaging Metadata](2.2-More-Packaging.md) - description of the various NuGet metadata and MyApp.exe properties used for naming MyApp.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|Next: [2.5 More Updating](2.5-More-Updating.md)|
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|:---|
|
|----|
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md) / [2.4 More Installing](2.4-More-Installing.md)|
|
| [docs](..) / [using](.) / loading-gif.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.4 Installing: Loading GIF
|
# Loading GIF
|
||||||
|
|
||||||
Squirrel installers don't have any UI - the goal of a Squirrel installer is to install so blindingly fast that double-clicking on Setup.exe *feels* like double-clicking on an app shortcut. Make your installer **fast**.
|
Squirrel installers don't have any UI - the goal of a Squirrel installer is to install so blindingly fast that double-clicking on Setup.exe *feels* like double-clicking on an app shortcut. Make your installer **fast**.
|
||||||
|
|
||||||
@@ -11,7 +11,10 @@ However, for large applications, this isn't possible. For these apps, Squirrel w
|
|||||||
PM> Squirrel --releasify MyApp.1.0.0.nupkg -g .\loading.gif
|
PM> Squirrel --releasify MyApp.1.0.0.nupkg -g .\loading.gif
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
---
|
## See Also
|
||||||
| Return: [2.4 More Installing](2.4-More-Installing.md)|
|
* [Squirrel Command Line](squirrel-command-line.md) - command line options for `Squirrel --releasify`
|
||||||
|----|
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|
|----|
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md) / [2.4 More Installing](2.4-More-Installing.md)|
|
| [docs](..) / [using](.) / machine-wide-installs.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.4 Installing: Machine-wide Installs
|
|
||||||
|
# Machine-wide Installs
|
||||||
|
|
||||||
Squirrel's Releasify command generates an MSI file suitable for installation via Group Policy. This MSI isn't a general-purpose installer, this means that once you run the MSI, users from now on will get the app installed, on next Login.
|
Squirrel's Releasify command generates an MSI file suitable for installation via Group Policy. This MSI isn't a general-purpose installer, this means that once you run the MSI, users from now on will get the app installed, on next Login.
|
||||||
|
|
||||||
@@ -9,15 +10,15 @@ So, most normal users should continue to run the Setup.exe's generated by Releas
|
|||||||
|
|
||||||
Most users of Squirrel won't have to do anything new to enable this behavior, though certain NuGet package IDs / names might cause problems with MSI.
|
Most users of Squirrel won't have to do anything new to enable this behavior, though certain NuGet package IDs / names might cause problems with MSI.
|
||||||
|
|
||||||
**Tip:** Generating MSIs can be disabled via the --no-msi flag as shown below:
|
**Source:** See [issue #466](https://github.com/Squirrel/Squirrel.Windows/issues/466) for more details.
|
||||||
|
|
||||||
|
### Disabling MSI Generation
|
||||||
|
Generating MSIs can be disabled via the --no-msi flag as shown below:
|
||||||
|
|
||||||
~~~powershell
|
~~~powershell
|
||||||
PM> Squirrel --releasify MyApp.1.0.0.nupkg --no-msi
|
PM> Squirrel --releasify MyApp.1.0.0.nupkg --no-msi
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
**Source:** See [issue #466](https://github.com/Squirrel/Squirrel.Windows/issues/466) for more details.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
| Return: [2.4 More Installing](2.4-More-Installing.md)|
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|----|
|
|----|
|
||||||
|
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md) / [2.3 More Distributing](2.3-More-Distributing.md)|
|
| [docs](..) / [using](.) / microsoft-iis.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.3 Distributing: Using IIS
|
# Microsoft IIS
|
||||||
|
|
||||||
If you use Microsoft IIS to distribute the necessary Squirrel files, you must provide a custom `Web.config` file as described below.
|
If you use Microsoft IIS to distribute the necessary Squirrel files, you must provide a custom `Web.config` file as described below.
|
||||||
|
|
||||||
### Hosting on IIS
|
## Hosting on IIS
|
||||||
|
|
||||||
All versions of IIS (including Microsoft Azure PaaS) deny serving files when
|
All versions of IIS (including Microsoft Azure PaaS) deny serving files when
|
||||||
the extension MIME type is unknown. If you are hosting your updates in this
|
the extension MIME type is unknown. If you are hosting your updates in this
|
||||||
@@ -27,10 +27,8 @@ follows:
|
|||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
| Return: [2.3 More Distributing](2.3-More-Distributing.md)|
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|----|
|
|----|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,11 +1,7 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md)|
|
| [docs](..) / [using](.) / nuget-package-metadata.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.2 More Packaging
|
# NuGet Package Metadata
|
||||||
|
|
||||||
This section goes into greater detail for items related to section [1.2 Packaging](1.2-Packaging.md).
|
|
||||||
|
|
||||||
## Packaging Metadata
|
|
||||||
|
|
||||||
Squirrel uses information from your app's EXE as well as the NuGet package Metadata for the setup and uninstall UI.
|
Squirrel uses information from your app's EXE as well as the NuGet package Metadata for the setup and uninstall UI.
|
||||||
|
|
||||||
@@ -14,16 +10,8 @@ Squirrel uses information from your app's EXE as well as the NuGet package Metad
|
|||||||
* **Version** - version specified in `Properties\Assembly.cs`. Used for naming the release package(e.g., MyApp-**1.0.0**-full.nupkg) as well as describing the version number in the Windows Uninstaller (see screenshot below).
|
* **Version** - version specified in `Properties\Assembly.cs`. Used for naming the release package(e.g., MyApp-**1.0.0**-full.nupkg) as well as describing the version number in the Windows Uninstaller (see screenshot below).
|
||||||
* **Icon Url** - url to an icon to be used for the application. Used for the shortcuts and Windows Uninstaller icons.
|
* **Icon Url** - url to an icon to be used for the application. Used for the shortcuts and Windows Uninstaller icons.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Advanced Packaging Topics
|
|
||||||
|
|
||||||
* [Delta Packages](2.2-Packaging-Delta-Packages.md) - an overview of how `Squirrel.exe` creates delta packages.
|
|
||||||
* [Command Line Options](2.2-Packaging-Releasify-Command-Line-Options.md) - command line options for `Squirrel --releasify`
|
|
||||||
* [Application Signing](2.2-Packaging-Releasify-Application-Signing.md) - adding code signing to `Setup.exe` and your application.
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|Next: [2.3 More Distributing](2.3-More-Distributing.md)|
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|:---|
|
|----|
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md) / [2.2 More Packaging](2.2-More-Packaging.md)|
|
| [docs](..) / [using](.) / squirrel-command-line.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.2 Releasify: Command Line Options
|
# Squirrel Command Line
|
||||||
|
|
||||||
Here is a simplified help output specifically around creating releases:
|
Here is a simplified help output specifically around creating releases:
|
||||||
|
|
||||||
@@ -25,12 +25,12 @@ Options:
|
|||||||
parameters given
|
parameters given
|
||||||
```
|
```
|
||||||
|
|
||||||
### See Also
|
## See Also
|
||||||
* [2.4.2 Loading GIF](2.4.2-Loading-Gif.md) - specify a "loading" image during initial install of large applications.
|
* [Loading GIF](loading-gif.md) - specify a "loading" image during initial install of large applications.
|
||||||
* [Application Signing](2.2.3-Releasify-Application-Signing.md) - adding code signing to `Setup.exe` and your application.
|
* [Application Signing](application-signing.md) - adding code signing to `Setup.exe` and your application.
|
||||||
|
|
||||||
---
|
---
|
||||||
| Return: [2.2 More Packaging](2.2-More-Packaging.md) |
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|----|
|
|----|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md)|
|
| [docs](..) / [using](.) / update-manager.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.1 More Integrating
|
# Update Manager Reference
|
||||||
|
|
||||||
This section goes into greater detail for items related to section [1.1 Integrating](1.1-Integrating.md).
|
|
||||||
|
|
||||||
## Update Manager Methods
|
## Basic Updating
|
||||||
|
|
||||||
Section 1.1.2, [Basic Updating](1.1-Integrating.md), introduced the `UpdateApp` method for simple updating.
|
The "Easy Mode" method that does everything all in one go.
|
||||||
|
|
||||||
* `UpdateApp` - downloads and updates the app to the latest version. This method is the "Easy Mode" method that does everything all in one go.
|
* `UpdateApp` - downloads and updates the app to the latest version.
|
||||||
|
|
||||||
|
## Advanced Updating
|
||||||
|
|
||||||
The following methods are provided to allow you to have more control of the update process (i.e., to interact with app updates and apply them if desired).
|
The following methods are provided to allow you to have more control of the update process (i.e., to interact with app updates and apply them if desired).
|
||||||
|
|
||||||
@@ -47,17 +47,11 @@ public interface ReleaseEntry
|
|||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
|
||||||
## Advanced Integrating Topics
|
## See Also
|
||||||
|
* [Update Process](update-process.md) - overview of the steps in the update process.
|
||||||
* [Debugging](2.1-Integrating-Debugging.md) - tips for debugging Squirrel.Windows integration in MyApp.
|
* [GitHub Update Manager](update-manager-github.md) - process of using `GitHubUpdateManager`.
|
||||||
* [Custom Squirrel Events](2.1-Integrating-Custom-Events.md) - preforming custom actions for Squirrel events.
|
|
||||||
* [Custom Squirrel Events (non-c# apps)](2.1-Integrating-Custom-Events-Non-CS.md) - steps on making a non-c# application Squirrel Aware and handling custom events.
|
|
||||||
|
|
||||||
|
|
||||||
### See Also
|
|
||||||
* [2.3 Distributing: Using GitHub](2.3-Distributing-GitHub.md) - process of using `GitHubUpdateManager`.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|Next: [2.2 More Packaging](2.2-More-Packaging.md)|
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|:---|
|
|----|
|
||||||
|
|
||||||
@@ -1,17 +1,10 @@
|
|||||||
| [Squirrel.Windows](../README.md) / [2\. Advanced Usage](2-Advanced-Usage.md)|
|
| [docs](..) / [using](.) / update-process.md
|
||||||
|:---|
|
|:---|
|
||||||
|
|
||||||
# 2.5 More Updating
|
|
||||||
|
|
||||||
This section goes into greater detail of the update process (see [1.5 Updating](1.5-Updating.md) for basic concepts).
|
|
||||||
|
|
||||||
## How can you replace DLLs while they're loaded? Impossible!
|
# Update Process
|
||||||
|
|
||||||
You can't. So, how can you do it? The basic trick that ClickOnce uses is, you have a folder of EXEs and DLLs, and an Application Shortcut. When ClickOnce goes to update its stuff, it builds a completely *new* folder of binaries, then the last thing it does is rewrite the app shortcut to point to the new folder.
|
The following steps are performed by the `UpdateManager` each time your app is executed:
|
||||||
|
|
||||||
## Detailed Updating Process
|
|
||||||
|
|
||||||
The following steps are performed by the `UpdateManager` each time MyApp is executed:
|
|
||||||
|
|
||||||
1. **Check for Updates** - the `RELEASES` file at the distribution location is downloaded and compared to local `RELEASES` file to check for any updates.
|
1. **Check for Updates** - the `RELEASES` file at the distribution location is downloaded and compared to local `RELEASES` file to check for any updates.
|
||||||
2. **Download & Verify Update Packages** - if there is a new release, the `UpdateManager` determines whether to download the deltas or the latest full package to update to the current version. The packages are compared against their SHA1 in the `RELEASES` file for verification.
|
2. **Download & Verify Update Packages** - if there is a new release, the `UpdateManager` determines whether to download the deltas or the latest full package to update to the current version. The packages are compared against their SHA1 in the `RELEASES` file for verification.
|
||||||
@@ -20,11 +13,13 @@ The following steps are performed by the `UpdateManager` each time MyApp is exec
|
|||||||
4. **Update Shortcuts** - desktop and Windows Start Menu shortcuts are updated to point to the new MyApp version (via the `--processStart` command line parameter passed to `Update.exe`).
|
4. **Update Shortcuts** - desktop and Windows Start Menu shortcuts are updated to point to the new MyApp version (via the `--processStart` command line parameter passed to `Update.exe`).
|
||||||
5. **Previous Version Clean-up** - on the next startup of MyApp, the previous packages and installed app directory of all but the previous install are also deleted.
|
5. **Previous Version Clean-up** - on the next startup of MyApp, the previous packages and installed app directory of all but the previous install are also deleted.
|
||||||
|
|
||||||
### See Also
|
## See Also
|
||||||
|
|
||||||
|
* [Update Manager](update-manager.md) - reference guide for the `UpdateManager`.
|
||||||
|
* [Debugging Updates](debugging-updates.md) - tips on debugging your Squirrel application.
|
||||||
|
|
||||||
* [2.1 Integrating: Debugging](2.1-Integrating-Debugging) - tips on debugging your Squirrel application.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|Next: [3 Contributing](3-Contributing.md)|
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|:---|
|
|----|
|
||||||
|
|
||||||
26
docs/using/x-doc-template.md
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
| [docs](..) / [using](.) / filename.md
|
||||||
|
|:---|
|
||||||
|
|
||||||
|
# Title
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
## Sub-title
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
~~~cs
|
||||||
|
code
|
||||||
|
~~~
|
||||||
|
|
||||||
|
**Tip:** text
|
||||||
|
|
||||||
|
|
||||||
|
## See Also
|
||||||
|
|
||||||
|
* [seealso]() - text
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
| Return: [Table of Contents](../readme.md) |
|
||||||
|
|----|
|
||||||