Windows Installer 4.5 for 64 bit - c#

How can i install windows installer for 64 bit? I am getting the following error while building the setup file in InstallShield Limited Edition.

As for your errors, they can be caused by something as simple as having the directory open in an explorer window (try closing it a rerun). And have a look at this old IS KB Article
Another possible cause is your Setup PreRequisite file, see this link
"Error appears (in Installshiled 12) if during editing a .prq in Setup Prerequisite Editor select the check-box "Requires Windows Installer engine and/or .NET Framework to be installed first" and after deselect this option. After that in prq-file appears empty section "dependencies", which incorrectly, probably, processed by the builder. It is necessary to remove this section (in any text editor) to avoid an error. "
With regards to your warning:- Have you setup the software id tag ? the following is taken from here Especially read the part I've put in bold.
To include a software identification tag in your installation:
In the View List under Installation Information, click General Information.
In the Software Identification Tag area of the view, modify the values of the settings as needed.
The Use Software Identification Tag setting lets you specify whether you want to include a tag in your installation. Select Yes, which is the default value, and then configure the other settings in the Software Identification Tag area as needed.
When you use tagging in your project, InstallShield adds the tag to two new components that it creates, and it associates the components with one of your project’s features. The components are:
ISO19770_LocalTag, which has a destination of INSTALLDIR
ISO19770_SystemTag, which has a destination of CommonAppDataFolder
Use the Setup Design view if you want to associate these components with a different feature in your project. For more information, see Component-Feature Associations.
At build time, if the following conditions are true, InstallShield includes the software identification tag with the installation that it builds:
Yes, the default value, is selected for the Use Software Identification Tag setting in the General Information view.
The Unique ID, Tag Creator, and Tag Creator ID settings in the General Information view have values.
Note that if tagging is enabled but you have not entered values in one or more of the three aforementioned tag identification settings, InstallShield generates a build warning to inform you that the tag could not be included in your release. To resolve this warning, configure the settings in the Software Identification Tag area of the General Information view as needed.
If you configure your project to include a software identification tag and you also configure the release in the Releases view to use a .pfx file to digitally sign your release, InstallShield digitally signs the tag at build time. Note that the .NET Framework 2.0 or later must be installed on your build machine in order to sign a tag file.

Leaving the stuff below, but looking closer at your screenshot it looks like it's claiming certain files aren't in folders where it's looking... I don't think that has anything to do with installing the file to your system as your system isn't Vista, XP, AND Server 2008 (at least I would assume you aren't running three OS at the same time lol). I could be wrong, but this sounds like an import problem... it looks like it's trying to import those files as files your user needs to install your program... you need to get those 3 installers and then import them (package them, whatever this program you are using does) as prerequisites. That SHOULD solve the problem.
--------------Probably not applicable but if above is incorrect----------
Simple suggestions... unlikely, but my usual troubleshooting steps when all else fails.
Check your file paths.
Double check that you ARE installing the version for 64bit.
Your harddrive isn't full is it?
Turn off virus scanners.
Try installing in safe mode.
Run a virus scan (use something good like Malwarebytes).
Check the Windows error log.
If you downloaded it on a different device try downloading it on the computer you want to install it to.
Download the installer on a different device.
Run as Admin or from a new user account.
Change the folder you are running the installer out of... try running the installer right out of c:\
Install it through Windows Updates (I'm just assuming Win 7 has them, I avoid windows update).
Make sure you have all the .NET frameworks installed (I've seen odd things happen when you don't)
Run the installer on a different computer to make sure it works.
Found this through Google... http://winhlp.com/node/40 the bottom of the page shows some software that can contribute to this error... it may say 'server' but I'm sure that even if the computer isn't networked these can still cause the problem...

Related

some computers, the "Windows Installer" is retrieved again from the C # program that was loaded when the program was run

I have packaged a C# application using VSI_bundle.exe, and when it is installed on some PC's, the following message appears when trying to run the application.
Windows Installer >>>
"Please wait while Windows configures (Product Name)"
The application will then run fine, but when I turn it off and back on again, I get the same situation again. How can I fix this?
The message dialog means that the installed product is being repaired because it's damaged, not the same as when first installed. The Windows Event Log (Application) will have an MsiInstaller entry saying something about the ProductCode and the component that is missing.
It's a feature of Windows Installer that it repairs installed items that get removed, so if the application changes or removes files or registry entries then Windows will want to reinstall them. It's the same as going to Programs&Features and doing a Repair on the product.
Fixing it depends on why it's repairing. For example, is the app deleting files or registry entries, and if so then why?
Sometimes people install the MSI with DISABLEADVTSHORTCUTS set to 1 to prevent the shortcuts from doing the repair, but that cannot prevent all repairs, and may be disguising the fact that the app is removing required files.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa368297(v=vs.85).aspx
As others have pointed out, this seems to be a Windows Installer self-repair or "resiliency" issue.
Launching your application via an "advertised shortcut" (good Symantec article on the topic linked) will trigger a key path check for your MSI to determine if your product is properly installed. During this process a discrepancy is found, and a self-repair is triggered to install what is missing.
In certain cases the discrepancy can not be resolved by the self-repair, and it then keeps repeating in vain. Essentially you need to determine what component causes the discrepancy and hence triggers the repair.
Perhaps you can try Stefan Kruger's msifaq first, it is terse and to the point: Windows Installer launches unexpectedly, for no obvious reason.
I have written about self-repair too many times, one of the shorter answers might be this one: Why does the MSI installer reconfigure if I delete a file?
For future reference I include some links on the topic of Windows Installer self-repair or "resiliency":
Comprehensive explanation of self-repair, verbose and comprehensive: How can I determine what causes repeated Windows Installer self-repair?
Solution focused description of self-repair, attempting to find real-world solutions: What do I do when launching an application triggers repeating, endless Windows Installer self-repair?
Self-repair issues for developers, avoiding the problem in the first place: How do I avoid triggering MSI self-repair with my WiX / MSI package? (perhaps try this one too, should be a quick read and written specifically for developers).
Check your event viewer for windows installer related messages. Most of the time it will show the componentID that triggers the repair that Phil mentions. Take this GUID and search your installer or use a tool like InstEd! to open the MSI and search for the guid in the components table.

Visual Studio 2008 C# Deployment Variables

I inherited a project, that was just a modified sample project from Honeywell.
Whenever you make a build, you have to uncomment lines for variables setting the client, the server url, and the device the build is being made for. Then, you need to go into the solution's Cab project, and change the application name (based on client / server), and change the shortcut's name to match. After the build, I then need to rename the CAB file it created. And usually I have to do this for a combination of 5 servers, 3 clients and 2 devices.
It's all very redundant. My absolute ideal would be to pick each ( or the combination "Client Server Device" ) from a dropdown ( such as the configuration ), then simply make the build. Most of my googling around suggests I can make this much more streamlined using "Configurations", but I can't seem to find instructions on how to actually set it up.
I am limited to Visual Studio 2008 due to .NET restrictions (v3.5) on the Honeywell SDK.
Any help would be greatly appreciated.
You need to separate out build-time parameters (baked into the code at build time), from install-time parameters (determined when the software is installed), from run-time parameters (configurable at run-time, e.g., after installation). Typically things like server urls are environment specific and are should therefore be determined at install-time, not at build-time as this project you inherited seems to be doing. You need some sort of installer to enable the configuration of the install-time parameters, and possibly an administration utility to enable the configuration of any run-time parameters after installation.
The goal is to be able to build once, but install many times (into different environments with different configurations).
There are a lot of tools available to help with this. This is a list of build automation tools: https://en.wikipedia.org/wiki/List_of_build_automation_software#Continuous_integration_tools. And here is a list of tools for writing installers: https://en.wikipedia.org/wiki/List_of_installation_software.

Detect All Users .msi

I wrote a C# program in Visual Studio that uses the Setup & Deployment Project to create an .msi installer. The "InstallAllUsers" value is set to "True", so it'll install "Everyone" by default, but the users can change it to "Just Me" during setup.
It's just a basic installer - nothing fancy.
My question is this: after they install the program, is there a way to tell which option they chose? Is there a registry key that I can dig for that will tell me whether they chose "Everyone" or "Just Me" during install? I'm not programmatically adding any registry keys, and I can find the "Uninstall" key for my program, but I don't know if there's a value in there that will tell me.
* EDIT *
For a clearer picture:
As I make changes to my program, I increment the version numbers and give the updated .msi to the users, and they just rerun the installer. There was originally only supposed to be a couple of users, so I didn't make a complicated updater. Now there are many users, and the updater is in-the-works. For now, the current users are happy with the process - I give them a new .msi and they run it again - except for one thing: the installer doesn't "remember" their settings from the last time they ran the installer (their words, not mine). I can get the directory of their last install from the "Uninstall" regisrty value and set it with TARGETDIR, so I've got the installation path covered. But I'm trying to figure out if the user changed "Everyone" to "Just Me" the last time around.
One way could be check for current logged in user in registry and see if it has the software listed in in installed software list under HKEY_CURRENT_USER\SOFTWARE\*
There's an example here of enumerating products to find out which context they were installed in. If you know the ProductCode you can just do the MsiGetProductInfo part.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa368279(v=vs.85).aspx
There are APIs for this, so it is more advisable than guessing based on what might be in the registry.
The installation folder properties window in Visual Studio setup projects has an InstallAllUsersVisible property you should set to False. Otherwise it's going to be a nightmare when you do an upgrade with RemoveExistingProducts=True because that requires the upgrade to be in the same context as the original install. You'll find people trying to do an upgrade with All users of an installed Just me product and it will not work.
I don't like per-user installs due to all the problems relating to upgrades, patching, etc... Accordingly I managed to migrate per-user installs to a per-machine during a major update install using Installshield and their built-in ISSetAllUsers custom action plus some re-sequencing of various standard actions. The description can be found here: windows Installer - uninstalling previous version when the versions differ in installation policy (per-user, per-machine)
If you want to migrate all installs to a per-machine install, you could replicate this approach using Phils suggestion to read the current installation context via your own custom action and then run this custom action in place of the ISSetAllUsers custom action that Installshield provides. Then you can follow the rest of the procedure from the link above.

.NET Setup Package Installer

I have a .NET 3.5 Setup Package Project which installs my application successfully.
The setup package deploys a number (around 70) custom files for use from within the application.
From time to time I have the requirement of deleting some of these files, however upon restarting the executable, it automatically runs a portion of the Setup MSI again, and re-installs these files.
The only way I can achieve my desired result at the moment is to delete the files after starting the executable.
I have looked through the attributes on the files in the setup package such as Vital and PackageAs, however cannot seem to identify the required setting to achieve this.
Does anybody have any idea what is needed to acheive this ?
Much thanks
From http://msdn.microsoft.com/en-us/library/kz0ke5xt%28v=VS.100%29.aspx
"
How do I turn off repair for a file that users are expected to modify or delete?
Visual Studio creates advertised shortcuts so that when the program is started it verifies that all its files exist. To change this behavior and cause it not to repair the file, select the files in the setup project and change the Condition property to NOT REINSTALL so that the file will not get reinstalled on a repair and its Transitive property to TRUE so that the condition is re-evaluated. This will cause the Installer to flash on the screen the first time after the file is deleted, as it verifies that the file should not be reinstalled, but you will not see the installer after that.
"
This has annoyed me too, and I don't know the specific setting you have to change to prevent this, but I can tell you a work-around that I've used. I found that it only happens when I run the application from the shortcut that was installed as part of the installation. So, if you create a new shortcut to the application and run it via that shortcut, then the files you've deleted won't be automatically restored.
Windows Installer supports three types of product upgrades: major upgrades, minor upgrades, and small updates. A synopsis of which upgrade to use under what circumstances can be found here: http://helpnet.flexerasoftware.com/robo/projects/installshield12helplib/MajorMinorSmall.htm
What you want to do is set you installer up in such a way that the new version of your software sees the file deletions as upgrades to a prior version. If you fail to do this and then you delete files, the program installation thinks it is damaged, and tries to restore the files you deleted when the program is executed again.
In InstallShield (the installer product with which I am familiar), there is a Product GUID and an Upgrade GUID. The Upgrade GUID always stays the same within your product family of different versions. The Product GUID changes with each new MAJOR or MINOR release. In general, if you follow this pattern, and then specify file deletions in your new version, the installer should interpret the file deletions as upgrades, and you should not get any errors on subsequent execution of the newly-installed version.

Simple Update Tool

I am looking for a very simple update tool that can be sent out to various sites and update their applications and database.
I need the tool to be configurable by non developers. I.e. support staff.
The tool will need to be able to copy DLL files into the program location.
It should be able to find the program location, and read in the configuration file to find the database location and connection details.
It should be able to update the configuration files.
If this tool can support roll back it would be an added extra.
I am not looking for a tool like install sheild etc. as this will require a developer to use.
Open source projects, freeware or commerical applications are all acceptable.
If you have any idea, tips or suggestions they are all welcome.
This is the classic use case for having an installer for your application. The installer will copy your DLLs etc into a folder. You can then author updates or patches which can do an update of your application with newer files.
I'm not sure what you mean by "developer use". Do you mean a developer would have to create the installer project? If so, that is not really true. but yes, they would have to learn the tool is it is support you want authoring your install/updates.
There are some free tools to build windows installers. Wix is one and Inno Setup is another.
As far as updating SQL databases, Red Gate's packager is pretty simplistic. It does nothing more than wrap an update script into an executable. You can do this on your own of course if you have a tool to create a change script. The problem here is that the target database must always match the one you generated the change script on.
We use DbGhost PackagerPlus. This tool actually bundles the compare engine so that the target database can be any previous version and it will still be updated. The packager call also be called from the command line so you can run it from your installer.

Categories

Resources