Here's the problem. We have some software, there is a free edition and a paid edition available.
The software is an EXE download which sets up the software. The way we are hoping to gain most sales are from people downloading the free edition, then deciding through various links in the software that they would like to pay for it now and unlock new features.
At the moment we run several campaigns to get visitors to our site. We know that a visitor came from say our Reddit campaign, downloaded our software and then from all intents and purposes they have vanished. If they use the software and wish to pay, they click a link in the software and the purchase is annonymous.
What we would like to do is when they download the software, somehow it generates a text file in their install directory with the source of their download in it. This file would contain data like "reddit1" to indicate they originated from reddit campaign #1. Then every link in the software sends that variable in a GET request so we know where the sale actually has come from.
What we can't figure out the best way to do, is when we have the variable with their source in it on the website, how to pass this to the EXE download so during install it generates the data file? We don't want to have multiple downloads for each campaign we run.
We managed to solve this problem by passing an Id into the filename, such as:
setup_221.exe
Where 221 = the referal. The setup program can take the referal ID and save this into the directory, then pass it to the website which translates it as the actual campaign.
One way would be to ask the client to complete some details before download, so you can uniquely identify him and give him a serial number.
After the download finishes, the first time is ran, the soft will ask the user for the serial
and then will make a request to the server and get needed details related to that user like the campaign, etc...
When the user wants to update his licence, the software will ask the server for a link based on that user.
(Provided that you're using .NET, which, from your other questions, this appears to be the case...)
Perhaps you don't have multiple versions of your product, but still multiple EXEs for each campaign. You could maintain and possibly even automate these "one off" builds at download-time by merging in a lightweight "referrer" assembly into the final EXE using ILMerge. Your referrer assembly should try to be loaded at runtime by the main product EXE, and if it finds it, then it could modify its referrer parameter.
Is it an option to generate the exe file when the download starts? If so, you could add the textfile then.
Related
To enable certain Apple app features (Sign in with Apple in this case) Apple requires that you register an associated web domain. This domain needs to host a file called apple-app-site-association (with no extension) in the root of that domain.
I am looking for a free way to do this. My developer website is hosted by Wix website builder. Wix will not allow you to upload files with no extension. Even if they did, I'm not convinced that their domain system would allow it. Wix domains follow the pattern of https://{YourUser}.wixsite.com/{YourWebsite}. Apple would look for the file at https://{YourUser}.wixsite.com/, a location which you have no control over. I believe that the other free website builder, Squarespace, suffers in the same way. Someone found a Cloudflare workaround, but Cloudflare no longer works with either website.
I didn't know it would be such a pain to put this file somewhere. What is the best solution to this? I'm surely not the first person to stumble into it.
I wasn't able to get a working solution with any of the standard website building platforms. I was able to get two slightly different solutions working though. GitHub Pages is free and lets you set up a repository that meets the requirements for Apple's file. Firebase lets you do the same thing through their "Hosting" service, in the free tier. On Windows you will need to use command prompt to create a folder that begins with a period for both repositories. GitHub Pages can be uploaded to from any Git program, Firebase Hosting requires you use their command line tools package.
I work at a software development company, and one of our tasks is to distribute our software to our customers before deployment. We have a lot of software components that at built separately, so we end up with 5 or more packages - usually more, and some times up to several hundred files because we also need to distribute data sets from time to time. We would like to find a way to distribute these packages to the customers as easy as possible. Currently we are using Box which is OK, but uploading and downloading several hundred packages takes a while, so we would like a method that will automatically place the files at the customers site.
Ideally we would like to end up with a file structure on our build environment, where we could place folders like:
Customer1
Customer2
Customer3
etc.
and putting files into those folders would automatically end up at that particular customer. It could probably be done by Dropbox, but we cannot install that at the customers sites.
We expect to build something with that functionality ourselves, but are there any frameworks or anything so we don't have to start from scratch? It's important that the files actually end up at the customers sites, and not on a shared drive somewhere in the cloud, since some of the customers have really slow internet connection. We are running on Windows.
You can link your startup page with web based verification process. If the software is installed in particular MAC ID, then verify it first at your web portal, and create one file or a value in db to ensure it is verified. From the 2nd time the startup page will check for the verification key in db or the verification file. If it is available then it will open the software otherwise it should redirect the software to registration page.
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.
The team I'm working with have created a CRM4 add-on which encapsulates 'standard' CRM customisations (such as modifying existing entities, adding our own custom entities), reports, plug-ins, and our own web pages (in IFrames) and web services. All pretty typical stuff.
I'm writing all the requisite installation code to simplify / automate the install process so that our ISV add-on can downloaded and trialled by anyone, but have been asked to think of appropriate way restrict functionality - to encourage people to purchase a license.
I'm not that familiar with the concepts/best practices/pitfalls when it comes to the 'licensing' of .net apps (especially CRM4 add-ons) so am asking you if you have any suggestions. We're looking for something fairly simple, and should be reasonably 'crackable', since we believe that having to enter a license code is generally a PITA.
Does the CRM API have anything to offer the ISV developer? (I see that one is able to nterrogate the License entity, but I'm assuming that this is for the CRM license itself)
Are there any existing code samples / projects / frameworks that are appropriate to use or implement?
I'm tempted to create a Registry Key upon installation of the add-on which, if after a month the correct license key has not been entered, will restrict functionality. Is this the best way to do this? Have you seen any other add-ons do it differently / better?
In terms of restricting functionality, I'm thinking of throwing InvalidPluginExecutionExceptions. Surely there must be a more 'graceful' way to do this?
All thoughts and suggestions appreciated.
Regards,
Peter.
My thoughts:
Yes, you can query the License entity to get the number of licensed users, which is a common license type from what I've seen. Lots of 3rd party vendors charge by the number of licensed users, regardless of how many of those users actually use the customization. I try to stay away from these because the license costs are often prohibitive for enterprise deployments.
Not that I know of.
I like this option, and have seen at least one 3rd party tool use this method. They allow you to declare the license key in your .config file, and if their runtime doesn't find it there it checks a known registry key. The tool comes with an app that registers the license key in the registry for you. I'd be careful to test and make sure your custom code can read the registry in a least-privilege environment.
Definitely not graceful to throw exceptions, but it does prove your point. :) Other than that, just outright skipping your code is another possibility, although that could have data implications. If you must throw exceptions, I would suggest trying to run some javascript on form load of your entities that warns the user that their license is expired and a save will result in an error. Some more nefarious schemes could include Thread.Sleep, kinda like the old shareware nagscreens. :)
Another idea - can you set up an Enterprise IFD deployment so you can give customers remote access to your demo, including their own demo organization? This depends on your audience, but your customers may not have the luxury (time, dev environment) of downloading and installing your trial. They may just want to see it in action - once you qualify the sale maybe you offer free remote installation and not spend so much time on a flawless setup package? Again, depends on your audience and the volume of licenses you expect to sell. Technically, you could dynamically provision organizations using the SDK and make the online trial process completely automatic. Of course this is a big investment, but allows you to maintain absolute control over your demo/IP.
Hope that helps!
There is not official standard dealing with the layout of about boxes, which display the credits of a computer software and other information.
What should a good about box contain? And... is it okay to put an easter egg in?
(source: seasip.info)
I generally prefer to make tabbed "About" boxes. The first tab usually displays information about the application (name, version, copyright, etc.). The other tab is usually a log of changes with the most recent changes at the top.
Legal will want their copyright and stuff, marketing will want their branding (even though the user has already bought the product), the dev team will want their names up there in liquid crystal, but what do users need?
App name and version number. Users may need this to troubleshoot problems, perhaps while in contact with tech support or when using a knowledge base. Use a version number system such that this is all the user needs to specify their build. Version number is also needed for the users to know if they can upgrade.
A brief statement of what the app does (e.g., “Photograph and picture organizer.”). Users often end up with software for which they can’t guess the purpose. “About” is a logical place to tell the user what the app is about.
Put the above in conspicuous text at the top of About. Have a single OK button. Everything else that may be required by others in your company really isn’t of any interest to the user and can all be in “fine print.”
You could also include the web site or email for tech support if you can rely on that being stable for years, but usually users have this before going to the About box.
Easter eggs are fine if you think it’s appropriate to have a little fun in your app and your users lean towards the geeky side of things. Just make sure it isn’t something that will alarm a low-end user (or a future high-end developer; see: http://blogs.msdn.com/jensenh/archive/2005/10/20/483041.aspx).
Looking at a few examples of About boxes:
Name of the software
Name of the publisher/author
Copyright and licensing information
Version information
A nice logo
These days, it probably wouldn't hurt to have a way to directly go to the website for the software in the About box itself.
Microsoft's Windows Vista User Experience Guidelines tend to have useful information on designing good user interfaces. I wasn't able to find information specific to About boxes, but the section for Dialog Boxes may be somewhat relevant.
A team in my workplace actually has made the coolest About box ever:
Every time you open it, it displays a different simple game, with pictures of the dev. team (memory games, tic-tac-toe, sudoku, etc)
As for the About page content, that is the best place to have the version / release information so you can offer easy support.
I am using mine as the abstract description and a link to the legal pages and a credits page. If you have a website, its URL should be there as well -- might as well make that click-able into your own web-view browser to your big "Company About" page on your web server (don't launch a real browser, or the user just left your application).
Make it enjoyable to read but be concise. Avoid any scrolling or paging -- except to a completely different set of informational screens.
Also, let it be obvious and easy to dismiss.
By-the-way, if you add an easter egg to an app that is submitted to Apple Store, you have to disclose the sequence for Apple to 'test'; they promise to keep the sequence confidential. If they discover it later, which will make it back to them through forums, etc., then they will automatically pull it from the store.
I tend to add program name, version, company copyright, contact information, license information. I also add various variables for problem resolving. Winows version, servicepack, dll version if i use critical dll's etc. A large application icon. Sometimes I add an easter egg or some keycombo that launch parts of the program meant for debug and support purposes.