Distributing installer of Windows desktop application - windows

I have an installer for my Windows app and it is quite big (>100 Mb).
I am also using ClickOnce deployment framework, so each time I issue an update all my users have to download the installer. We tried to use Amazon S3 to store the setup file, but it turns out that download speeds differ significantly across the globe, e.g. in US the download speed is several Mbps while in Europe or China it is less than 30Kbps, which is inapplicable.
However when I download most of the apps from internet, the download speed is usually good and doesn't depend this much on server location. How is this problem usually solved?

Big companies like Microsoft use a content delivery network which makes sure no matter where you come from a download server gets assigned to you which is as near as possible to your current location.

Related

InnoSetup - how to make setup.exe into 875kB? So that users download it faster and on download it will download another one?

Using InnoSetup i prepared my maininstaller.exe which is very large such as 90Mb when user downloads it, it take sometimes ages.
as a result often user ignores it and my setup is incomplete because of not user friendly.
Now i have compared Google Chrome/Canary web browsers concepts, they are also large in size, but they used 2 types of installer one is very tiny small size installer, which is just to download quickly and execute, to download the second large main installer, this method is more friendly to deploy large installation, and mostly accepted by many users.
Now, How can i do such (like Google Chrome web browser installer) with Innosetup? one first_setup.exe which is very tiny in size, so that user can quickly download it, but once that is executed it will go to internet and download my maininstaller.exe and make sure its downloaded correctly then execute it.
Is this possible? any idea.
Yes. You can build some sort of online installer which will e.g. download only components that the user chose during the setup wizard. For downloading component files or component setup files you can use e.g. the IDP plugin which I would prefer, or InnoTools Downloader.
Martijn Laan even considered to build in downloading feature for installed files in this issue.

Team Development of HTML5 PhoneGap App

First, I don't know if this is the right place to make this question but, I don't see any other place where to put it.
I would like to know how could I develop a mobile HTML5 App (using PhoneGap) with another friend, without need to have a copy of the project in more than one PC.
Could I somehow host the Code on a FTP Server and then we both could work on it for example, on Eclipse?
You need to look into using a source control system of some kind. Source control comes in many flavors, but in general it allows software developers to sync code between many servers, and allows developers to work concurrently without breaking each other's environments (imagine I have to take a component offline for many hours to code on it, but other people rely on it to do their work).
The two most common source control solutions are SVN and Git. Both of these work on Mac/Linux/PC and are documented thoroughly online.
without need to have a copy of the project in more than one PC.
How should that be possible? When want to view view something on your local computer, you must have it available on your local computer. But I think I know what you are looking for, three suggestions:
Use a cloud-based IDE. Cloud9 for example is one of the best. However, all of them tend to be slow and buggy.
Just synch the files between your computers. One of the best hosted services is Dropbox, or you can install ownCloud on your own Server.
Use a version control system. This is pretty common for software development as you can easily reproduce who made which change when and why. The best option is git and Github for hosting.
I know this is months late, but check out Adobe's Phonegap Build. Build and deploy in the cloud. They also allow you to assign a development team.
www.adobe.com/PhoneGap

analytics tool on windows server

There are several tools that help to analyze the users behavior on your website. I would tend to divide them into ones that live on an own platform and which can be accessed through and API (like Google Analytics) and that ones that are to be installed on your own server (like Piwik).
I will launch a new web project soon, which requires such a tool and thus I wonder which one I should use. In my case I need to collect the data on my own server, so I will have to stick with the second type of tools. After playing around a little bit on my beta server I considered Piwik to be pretty nice to personalize, but until now, I had issues to set up piwik on the production server, because it is a windows server and the piwik version that is available at the webapp installer platform of windows server requires a different php version.
Installing Piwik on another - let's say - analytics server, is not an option for me, because I don't want to create all this https traffic, just because I am not able to set it up on my production server. And I also don't want to purchase another https certificate ;-).
I browsed the Windows Webapp Installer Platform in hope of something that just works out of the box in Windows. Similar questions like this also propose Google Analytics or Piwik. But this cannot be it, can it?
So..
Is there a tool which all you Windows Server people use?
Are there other tools that are used frequently?
Or even: Is it somehow possible to set up Piwik on a Windows Server without using The windows Web App Installer? I posted a related question here that focusses on the installation of piwik.
Logparser is a free tool from Microsoft that lets you throw direct SQL queries to the IIS Logs generated on your Web server. You may use it to query basic stats such as:
[1] From what ip-address range I get the maximum queries? (users' country-profile)
[2] What particular pages (aspx/html) are most frequently visited?
[3] At what time of the day, do I get the maximum requests?
I remember using this tool in one of my earlier projects, but the reason was to track down some performance issues. Also, the tool itself is console based, so you need to be familiar with command-line. However, a GUI front-end could be easily developed in a high-level language such as C#, I think there should be already some, that are free to download

SharePoint - Developing on a standalone machine without sharepoint server

I want to start learning SharePoint and I need my system setup.
I know I need a SharePoint server, whether on a physical server or a virtual machine. I have done this in the past for the company I worked for. But now I want to use my system to develop but the requirements doesn't meet the SharePoint server specification
I have seen this link and several others on serverfault and they always recommend the Virtual Machine approach
Where is the Location of Microsoft.Sharepoint.dll
I have also obtain a link to Microsoft Hyper-V pre-installed virtual machine but it's too heavy for my machine.
I have read article that says I should download dlls from a SharePoint server and paste in a replica directory structure on my system
http://www.techerator.com/2011/02/how-to-perform-sharepoint-development-on-a-client-workstation/
I see that a lot of developer are faced with this challenge and I wish to know if there is now a workaround. Also, what are the limitations?
Do yourself a big favor and upgrade your development box so that it can handle a VM with SharePoint. Hardware is cheap these days, and a SharePoint capable laptop doesn't break the bank.
The amount of time you spend on trying to come up with a working Gaffa tape solution will soon fall apart again when you need to debug something in a real life scenario. That time is then wasted and you wish you had gone for a proper setup instead.
Check out CloudShare. It is worth the price. There is a 14 day trial.

What is a "Cloud OS"?

The term is getting 'hotter' with Microsoft Azure and Windows 7.
What are the benefits + how does the status quo of desktop computing now change? Does the machine no longer need an OS installation (or a highly stripped down version of a typical OS)... what is needed to interact with the 'Cloud' ?
Update: Received my first RTFM on SO today.
To elaborate.. I'm interested in knowing how different is the 'new way' w.r.t. the services provided by a typical desktop OS today (read Win XP/Vista, linux flavors galore, etc.)... NOT the benefits of cloud computing.
Two buzzwords.
Basically its Microsoft's form of competition against Google's recent web-apps boom. So if you want to know what it's all about just open up google docs and gmail, and there you go :)
Now on a personal note, I'm glad Microsoft and Apple(Mobile Me) are trying to fight back against Google. We need the competition, so us the users can choose and get better apps.
Also I'm really not a fan of any corporation, so I'm not all that excited about Google killing off everyone else any more than Microsoft doing the same to others.
When Microsoft says Azure is a Cloud OS, what they mean is that it provides the same kind of services to developers targeting the "Cloud" abstractions that are akin to what a Desktop OS provides developers targeting desktop.
Amitabh Srivistava gave a great interview on Channel 9 explaining it. Basically, if you want to write a notepad application for a desktop user, you don't have to be concerned with writing code that interprets key strokes from the keyboard, or that sets up communications with a printer. This is due to the desktop os. Similarly, Azure lets a developer focus on their cloud app better by abstracting things like load balancing, authentication and authorization, failover, and a lot of concerns that one would normally have to address when developing for the Cloud.
Old school network diagrams always showed the internet as a cloud. Microsofts approach is still a client-server model, although a real 'cloud' os in theory would be a SOA architecture of loosely fit components interconnecting and working together without really being aware of eachother. Example: creating services for email, document authoring, file storage, etc- which could all be interconnected by different services that don't erally need to be aware of the final product.
So different way of thinking of it: the 'system' exists in the network- not one single location.
Gains: Transparency, redundancy (not only of each service, but for replacing parts if vendors drop out) and availability (as long as you are also connected to the network).
Losses: Vendor lock-ins, vendor's dropping out, interoperability nightmare, as far as I know- there are no real standards for this model.
Microsoft did not coin 'cloud' computing term. Please refer to the wikipedia entry for a more specific definition and etymology.
whats with the RTFM questions on SO lately? unless I'm missing some deeper meaning, your questions are obvious.
http://en.wikipedia.org/wiki/Cloud_computing
Cloud computing is Internet-based
("cloud") development and use of
computer technology ("computing"). The
cloud is a metaphor for the Internet
(based on how it is depicted in
computer network diagrams) and is an
abstraction for the complex
infrastructure it conceals.[1] It is a
style of computing in which IT-related
capabilities are provided “as a
service”,[2] allowing users to access
technology-enabled services from the
Internet ("in the cloud")[3] without
knowledge of, expertise with, or
control over the technology
infrastructure that supports them.[4]
According to a 2008 paper published by
IEEE Internet Computing "Cloud
Computing is a paradigm in which
information is permanently stored in
servers on the Internet and cached
temporarily on clients that include
desktops, entertainment centers, table
computers, notebooks, wall computers,
handhelds, sensors, monitors, etc."[5]
http://en.wikipedia.org/wiki/Azure_Services_Platform
Microsoft's Azure Services Platform is
a cloud platform (cloud computing
platform as a service) offering that
"provides a wide range of internet
services that can be consumed from
both on-premises environments or the
internet"[1]. It is signficant in that
it is Microsoft's first step into
cloud computing following the recent
launch of the Microsoft Online
Services offering.
...
The idea and push from Microsoft to
compete directly in the software as a
service model that Google's Google
Docs have offered is increasingly seen
by them and others as an important
next step in application development.
In this idea, a software doesn't have
to be installed and managed on the
user's computer. It also allows files
and folders to be accessed from the
web.
So far, it looks like the idea of having software & your data hosted at msft's data centre.
SOA seems to be related to what cloud is offering.
No need to have local software (office will run from internet, your docs will be saved there. so that, you can access it anywhere). I think, the target could be big companies - thereby giving them services (software + hardware (data storage + processing power)) on subscription basis.
An expert can shed light on how this can be useful?
Will people be willing to put everything in the cloud?
Cloud is Time Sharing. Us old timers remember those days. You either wrote your own apps and ran it on their (the Time Share/Cloud providers) systems or you use the software they supplied. Usually word processors and accounting apps.
Google Apps is cloud. And since you get HD space you can already serve up your own app running on their systems.
Time Share was all the rage in the 70's and 80. Cause maintaining a system of your own wasn't cheap. Back then the smallest system any company ran was a mid-range (like Honeywell, AS400, Dec, etc, etc). Fell out of favor as the PC became popular. I remember when Lotus 1-2-3 came out and everyone predicted it would destroy what was left of Time Sharing. And it (along with dBase and other aps) did.
It's funny how we re-invite everything.
PS: Forgot one thing about Time Sharing. Since the Net wasn't around, you had to schedule your time. SO your staff would go to the providers Data Center and work. It was like renting space and the systems. Time Share and Cloud operate differently, but the function is the same.
Well like many new terms, there can be more than one answer. Frequently it can be defined as a compute platform, where the developer doesn't have to worry about resource management, scalability or hardware failures, because the cloud infrastructure handles it. Here is a link to some information the company I work for has:
http://www.appistry.com/resource-library/index.html
There are some good white papers linked here that might be helpful to you.
-Brett
A cloud operating system primarily manages the operation of one or more virtual machines within a virtualized environment.
Microsoft Windows Azure and Google Chrome OS are among current examples of cloud operating systems.
Azure App Service is one of the common and most used services. While it is possible to immediately deploy apps, jobs etc., to the app service, a common factor that baffles decision makers is the wide spectrum of the tiers (options of plans) available in the marketspace. To know more details,visit:https://www.impigertech.com/blog/azure-app-service/

Resources