Application works without installation - vb.net

I created a program in vb.net in vb language. After that I created an installer (.msi) for the same in Advanced Installer program. I installed it on the computer and everything seems professional.
I copied the folder that contains the program and all its dependees and sent to to a different computer. I was surprised that the application (.exe) file works without installation!!
How can I make my application works only with installation?
Appreciate the help.

Advanced Installer has a licensing module that works for VB.NET apps too, which you can easily integrate into your installer.
However, this is in the Enterprise edition, and I assume you are using the free edition, as this sounds like quite a simple application/installer.
In this case you can try looking for an alternative OSS solution for a licensing/trial library.
Basically with this library every user that needs to use the software will need a key to activate it, so even if they copy the folder with the application files from Programs Folder, they will still not be able to run your app.

Related

Publish vs. Release

I created a simple application in VB.net in Visual Studio 2013.
It's not a website or a web app, it's just a simple Calculator, I think I created it as a Windows Forms Application.
When I build the application in release mode, it builds and runs properly.
It puts the executable it built in: Documents\Visual Studio 2013\Projects\DataCalculator\DataCalculator\bin\Release
I can just send that executable alone to someone and the program works fine. So what is the purpose of all the other files?
Furthermore, there is a Publish button in the Build menu of VS2013. What does publishing the program do that the the release doesn't?
Also, when I click the publish button it asks me how the user will install the application. What if I don't want them to install it, I just want it to run from a simple click of the executable. So what is the purpose of publishing?
If by "all the other files" you mean .application, .manifest, .pdb, etc., they all have uses in various contexts. If your calculator is stand-alone, then it will only require the .NET Framework version you used to create it installed and the .exe itself.
I have used the Publish feature a few times - at a previous company - it's useful for 'transparent updates' to users. For example, the tools I created were published to a shared drive on the server along with the associated "other files". The users then installed the tool from the shared drive by clicking on the setup/install version, which creates a shortcut on their start menu/desktop/wherever. The beauty of this particular method, is that you can configure the application to automatically update when it is run; so I continuously improved the tools and every time a user ran one, it copied the newer exe to their PC and ran that, without any further updates/reinstalls from their perspective.
It worked quite well for small engineering tools, but I'm sure with larger/more complex applications with databases and backward-compatibility to worry about, it could cause headaches in many situations.
Release will only create an .EXE Application file which is executable in supported platforms, but database must be separately copied . where as publish will create a setup file along with database and the sub folders inside the project folder. It helps you to install your application in any computer which meets the requirements.
Click to refer Advantages and procedure for publish http://msdn.microsoft.com/en-us/library/vstudio/ms233806(v=vs.100).aspx

How to share vb.net .exe from one system another system(min 6 systems)

I developed Vb.net project.
My project name is Lone.
My front-end is Vb.net Backend is Ms Access.
I completed my project.
Now I copy the Lone.exe and put shortcut into my system desktop.
Now I want to run that Lone.exe to all system.
I don’t no how to share that one.
Tell me how I want to run my project to all system.
Note: In my system only having Vb.net.
Remaining systems doesn’t installed vb.net.
You have to install the correct version of the .Net framework on all 6 systems, you don't need the whole VB.Net development environment, just the framework. This might already have been installed using Windows Update or similar, so this step might not be needed.
Just try googling download .net framework x.x where x.x is the version you need and you should find a link to download the correct version from Microsoft if needed.
After that just copy that executable to each system and run it.

Why Setupper created by Publish feature does not copy files to c:/PROGRAM FILES

I have VB project and I tried to use PUBLISH feature.
It seems to create nicely some kind of setup program, but the setup program does not ask where to copy files (it does not seem to copy filesto target machine "PROGRAM FILES".)
Is this setup program somehow different from usual installers?
NOTE: I want that app files are installed to Hard disk( from USB stick source)
Is the signing recommended or necessary? My App is pretty simple, its just using access DB + printer api, should I still sign?
The "Publish" feature creates a ClickOnce installer. Such applications are installed per-user instead of per-machine, i.e., they are installed somewhere into the user's profile. This is by design and has the advantage that the user installing the software does not need administrative privileges on the machine.
You can also create a setup project by going to File/New/Project/Other Project Types/Setup and Deployment/Setup Project. This creates a "conventional" MSI-based installer, offering the "classic" C:\Program Files type of installation.
On MSDN, two approaches are compared here.
Our biggest problem in-house is privleges.Does the "user" have access to write to "Program Files"?

another way to publish besides clickonce?

does vb.net have a different way to build an application without using clickonce?
If your application doesn't need an installer then you don't need to use ClickOnce at all. Just do a build in Visual Studio to produce your exe and off you go. There are actually quite a few single-file applications on the internet that are done this way.
If you do need a proper installer, I still wouldn't normally suggest ClickOnce. ClickOnce was designed to allow a user to literally click a button in a web browser just "once" to install your product into a secure-but-limited sandbox. The sandbox where the application lives will then have limited permissions to the file system and such. It's pretty cool in theory. But in practice the limitations involved can become a pain for any but the most basic of applications.
For a powerful installer system for Windows, I'd suggest NSIS. It's free, open source, and scriptable. I've used it to build the installer for a couple of VB.NET software applications. One of them has been downloaded & installed by thousands of users. I'm also the main point of contact for technical support and I haven't heard a single report of a problem with the installer itself.
I could go on and on, but suffice it to say that I've tried others such as InstallShield and Wise and even ClickOnce (that was short-lived). But nothing could compare to the speed, power, reliability, and lightweight-edness of NSIS.
Command line:
vbc /out:MyProg.exe MyFile.vb

What is the best way to deploy a VB.NET application?

Generally when I use ClickOnce when I build a VB.NET program but it has a few downsides. I've never really used anything else, so I'm not sure
what my options are.
Downsides to ClickOnce:
Consists of multiple files - Seems easier to distribute one file than manageing a bunch of file and the downloader to download those files.
You have to build it again for CD installations (for when the end user dosn't have internet)
Program does not end up in Program Files - It ends up hidden away in some application catch folder, making it much harder to shortcut to.
Pros to ClickOnce:
It works. Magically. And it's built
into VisualStudio 2008 express.
Makes it easy to upgrade the
application.
Does Windows Installer do these things as well? I know it dosen't have any of the ClickOnce cons, but It would be nice to know if it also has the ClickOnce pros.
Update:
I ended up using Wix 2 (Wix 3 was available but at the time I did the project, no one had a competent tutorial). It was nice because it supported the three things I (eventually) needed. An optional start-up-with-windows shortcut, a start-up-when-the-installer-is-done option, and three paragraphs of text that my boss thinks will keep uses from clicking the wrong option.
Have you seen WiX yet?
http://wix.sourceforge.net/
It builds windows installers using an XML file and has additional libraries to use if you want to fancify your installers and the like. I'll admit the learning curve for me was medium-high in getting things started, but afterwards I was able to build a second installer without any hassles.
It will handle updates and other items if you so desire, and you can apply folder permissions and the like to the installers. It also gives you greater control on where exactly you want to install files and is compatible with all the standardized Windows folder conventions, so you can specify "PROGRAM_DATA" or something to that effect and the installer knows to put it in C:\Documents and Settings\All Users\Application Data or C:\ProgramData depending on if you're running XP or Vista.
The rumor is that Office 2007 and Visual Studio 2008 used WiX to create their installer, but I haven't been able to verify that anywhere. I do believe is is developed by some Microsoft folks on the inside.
I agree with Joseph, my experience with ClickOnce is its great for the vast majority of projects especially in a corporate environment where it makes build, publish and deployment easy. Implementing the "forced upgrade" to ensure users have the latest version when running is so much easier in ClickOnce, and a main reason for my usage of it.
Issues with ClickOnce: In a corporate environment it has issues with proxy servers and the workarounds are less than ideal. I've had to deploy a few apps in those cases from UNC paths...but you can't do that all the time. Its "sandbox" is great, until you want to find the executable or create a desktop shortcut.
Have not deployed out of 2008 yet so not sure if those issues still exist.
Creating an installer project, with a dependency on your EXE (which in turn depends on whatever it needs) is a fairly straightforward process - but you'll need at least VS Standard Edition for that.
Inside the installer project, you can create custom tasks and dialog steps that allow you to do anything you code up.
What's missing is the auto-upgrade and version-checking magic you get with ClickOnce. You can still build it in, it's just not automatic.
I don't believe there is any easy way to make a Windows Installer project have the ease or upgradability of ClickOnce. I use ClickOnce for all the internal .NET apps I develop (with the exception of Console Apps). I find that in an enterprise environment, the ease of deployment outweighs the lack of flexibility.
ClickOnce can be problematic if you have 3rd party components that need to be installed along with your product. You can skirt this to some extent by creating installers for the components however with ClickOnce deployment you have to create the logic to update said component installers.
I've in a previous life used Wise For Windows Installer to create installation packages. While creating upgrades with it were not automatic like ClickOnce is, they were more precise and less headache filled when it came to other components that needed to be registered/added.