Installshield 2013 Professional/Premier - deployment

Our IT department wants to take advantage of deploying msi packages/imgs through Landesk Management Suite. We have been deploying images on workstations using usb Smartdeploy. I've been asked to find an msi packaging tool that can handle packaged programs with large file size.
Is Installshield 2013 Professional/Premier able to build an MSI package out of package installers with huge file size (i.e. Microsoft Office 2010/Autocad Package)? And if so, what's the limit of (number of programs/file size) you can fit in the msi package?
Replies and Suggestions are all welcome
Thanks

Authoring large windows installer packages (.MSI) is a nuanced discussion. Strictly speaking an MSI can be up to 2GB. However I personally never build an MSI larger then about 200MB. The 2GB is a hard limit and the 200MB is a judgement call dealing with UAC / DEP scanning activities that windows does that will really slow an installer down.
You get around these limits by building MSI's with external .CAB files instead of embedded CABs. This way the MSI is small for initial scanning.
Another limit to MSI is 32K files. Once you go past that it gets trickier but possible. The real problem though becomes a scalability problem. Really large installers tend to become harder to maintain (upgrade strategy, testing) take a very long time to build and a large amount of time to install ( one of Windows Installer strengths is also it's weakness as all the infrastructure to know what's being installed and manage it really takes a toll on installation performance ).
If you are using setup.exe to launch your installers, Windows also has a hard limit on the size of an EXE. The total size of the EXE with streamed data must be less than 4GB or it will not launch. While an MSI's 2GB limit makes this seem far off, adding multiple large PRQs to the installer can rapidly exceed the 4GB limit. You can also get around this limit by building the setup.exe with external PRQ files.

Related

Eclipse is getting Hang while debugging GWT application

We are developing our web application using JAVA GWT-P framework (Version 2.4). We are using Eclipse (Version 3.7) Indigo as a development GUI. While we are debugging the application, eclipse is getting hanged generally and surprisingly this is a random behavior.
And this is not happening in only part of the program. Anytime, while we debug, Eclipse hangs in different module.
To resolve this , we tried to use different Operating system such as Windows XP (development gui: Eclipse version 3.7 Indigo), Fedora Version 16 (with development gui: Eclipse version Helios Service Release 2), Cent OS (with development gui: Eclipse version Helios Service Release 2). But no luck.
Can anyone help me out to decide which OS, and eclipse or version should we have to use so can able to resolve the hanging issue?
Use a machine with at least 8G RAM, quad core for GWT development. Anything less than that would be catastrophic and unproductive.
Ideally 8 core, 12 GB.
Increase your eclipse jvm vm heap size max, at startup.
Default eclipse startup is either 256M or 512M. It should be at least 768M. I have tried 1024M which
made only a marginal difference above 768M. I found 900M seems to be
the most that would be used in my cases.
You may have to increase your permgen memory allocation too. I think
permgen space is used for storing class definition and are never
garbage-collected. I presume that when my eclipse hung indefinitely
was when there was no more permgen space to store new class defn.
I have never had to redefine the stackspace allocation for eclipse.
You can google around to find out the jvm startup arguments to define mem allocation. e.g. -Xmx, etc.
Initially develop only for a single browser. Decide between using FF
or Chrome as your dev browser. Then tune your entrypoint gwt.xml to
set the user-agent property for that browser. Google on gwt set
property user-agent. Compiling for only one browser, I have found,
speeds up the compilation a lot.
Don't ever store your projects, source files, resources or libs
that are accessed by the compiler, in a network or usb drive. All your
compilable/includable resources should be on your local drive.
Try to use maven or some other tool for dependency management, so that you do not need to access your jars or dependent projects over the network.
Do not, ever, let your development strategy roll down the hill by
depending on live-project dependencies. Having workspace with 50 or more
projects is disaster and signifies a development team in crisis.
The compulsive and persistent compilation, scanning of projects by
eclipse background take a huge toll on the performance of eclipse.
Try to disable as much validation as possible. e.g., disable html and
javascript validation.
If you have a huge number of server side projects ...
You need to re-architect your development strategy to cluster your 50 - 100 projects into project packages, so that each project package has no more than 20 compilable/validateable project members (ideally less than 5 projects). Each package is frozen by versions and packaged as jars. Use only the jars for development dependencies.
Your programmers need to learn not to have the impulse to work on a workspace with 200 projects. Enhancements are reserved for bugzillas of each project package. Having a 200 project workspace is bad project management. It wastes your programmers' time by having eclipse slow down now and then.
Have sufficient temp space (or for Windows sufficient slack space on
the user disk). I have experienced that insufficient disk space for
compiler buffering/caching has caused slow-downs and hang-ups. Having
a 5G slack space is the minimal - the more the merrier so as to
preclude having to clear the trash or search for files to delete or
clear the GWT compiler generated temp files. A 5G slack space is still
very inconvenient.
AFAI have experienced, neither windows 7/vista or linux made much performance difference except that eclipse seems to start up much slower on Windows.
Therefore, if you know how to tune your anti-virus, may be you should
tell the anti-virus software to skip scanning the workspace and project folders.
Unless you have an 8-core 12GB machine, you should disable most of windows
aero, trasparency. But you need to keep windows compositing
(otherwise you would destroy your eyesight looking at the bad fonts).
THE PROBLEM
I have a GWT project that worked fine on my old core2 machine. When I recently got a new core i7, 8GB ram (Dell XPS Ubuntu developer edition), I discovered that Eclipse hangs VERY OFTEN (about 90% of the startups hang) when I try to start debugging by clicking the browser link under the "Development Mode" eclipse view. There MUST be a thread synchronization bug (deadlock) that can only happen when the 'timing is different' from normal test cases. This fact that it's a timing bug deadlock is why it appears so "random" and has not yet been discovered and fixed. I have all the LATEST GWT at the time I'm writing this, and latest Eclipse etc.
THE WORKAROUND:
Luckily I discovered that if I copy that link and paste it into an already started instance of Firefox (outside eclipse) then there is never any hang. I'm 100% certain that this is not a problem in my code. I'm 95% certain it's a deadlock happening in GWT. So just don't click the "Development Mode" link and you'll be fine. Hope to have helped someone with this post.

ODP.NET deployment without installation

I want to deploy a client application that uses Oracle's ODP.net but I don't want to install ODP.net on every machine. Rather I'd like to copy the managed dll oracle.dataaccess.dll on every machine and have the native dlls on which it depends available, on a shared disk.
By decompiling the oracle.dataaccess.dll code I have seen that it calls a method that gets the location of the native dlls from the registry. So, in addition to copying the oracle.dataaccess.dll on every machine I would have to add the registry keys that would point to the native dlls on the shared disk.
My question: does one foresee any problem arising from that technique of odp.net deployment?
The only files you need from the latest client are:
Oracle.DataAccess.dll
oci.dll
oraociicus11.dll
OraOps11w.dll
Just make sure they get copied to the output directory and everything will work. Nothing needs to be registered anywhere. You will however need to make separate x86 and x64 builds with the respective architecture's DLLs since an Any CPU .NET application will run in 32-bit mode on a 32-bit OS and in 64-bit mode on a 64-bit OS.
1) ODP.NET is currently a mixture of managed and unmanaged DLL's. It also relies on lower level unmanaged DLLs from the Oracle client - eg for networking, etc.
2) You will need all these required ODP.NET and client DLLs on each machine you deploy to.
3) One potential solution to make this easier on you is to look into the "XCOPY" deployment package. See the ODP.NET download page. This is a smaller install and allows you to write your own custom installer. You can include these XCOPY files as part of your own install.
4) Oracle will be doing a beta of a fully managed provider in 2012 which will make this situation much better (and the total size will be a couple megabytes only).
Christian Shay
Oracle
Since they're unmanaged I'd assume that they'd be ok on a network path, though that should be easy enough to test. However I'd suggest that rather than changing the registry setting, you might be better off changing the DllPath config setting as described here.

Setup project slow to install Windows service and client

I am currently using the Visual Studio 2010 Setup Project to deploy my application to an MSI installer file, which includes a Windows Service and a Windows Forms application. But I am disappointed with the performance and compatibility of this form of packaging.
My application is compatible with Windows XP and upwards, but several older XP user-testing boxes simply don't have the right version of the Windows Installer or the necessary service pack installed. (Un)installation can take dreadfully long for a program under 1MB in size and many systems do not support it. InstallState errors can crop up and ruin the (un)installation if the service has been deleted or already installed, or if any program files are missing (for uninstall).
What I need from an (un)installer:
Manage .NET dependencies.
Copy/remove my application files to a folder.
Add/remove menu and shortcuts to the desktop and Start menu.
(Un)install a Windows service, though I can also do this from my application. The stop and uninstall part is important.
Run my application when it's done.
This question's answers recommend NSIS (which I have used with good results) and WiX. Ironically there is no easy link to simple installer for WiX on their website.
Am I missing something with VS2010's setup project? It is optimized for speed, but it's just too slow.
You should run the installer/uninstaller explicitly with
msiexec /x thefile.msi /l*v thefile.log
(/i for install). Then inspect the log file; it will have time stamps telling you what action took what amount of time. Of course, the logging will affect that, but you should get an idea what makes it take so long.

How can developers make use of Virtualization?

Where can virtualization techniques be applied by an application developer? How can virtualization be applied on a day-to-day basis?
I would like to understand from veteran developers making use of it. I am interested in the following things:
How it helps in development.
How it could be used for testing purposes.
What are the recommended practices.
The main benefit, in my view, is that in a single machine, you can test an application in:
Different OSs, in case your app is multiplatform
Different configurations, like testing a client in one machine and a server in the other, or trying different parameters
Diffferent performance characteristics, like with minimal CPU and RAM, and with multicore and high amounts of RAM
Additionally, you can provide VM images to distribute applications preconfigured, be it for testing or for running applications in virtualized environments, where it makes sense (for apps which do not demand much power)
Can't say I'm a veteran developer, but I've used virtualization extensively when environments need to be controlled. That goes for:
Development: not only is it really useful to have VMs about for different deployment environments (e.g. browser versions, Windows XP / Vista / 7) but especially for maintenance it's handy to have a VM with the right development tools configured for a particular job.
Testing: this is where VMs really shine: it's great to have different deployment environments that can be set back to a known good configuration and multiple server instances running in parallel to test load balancing.
I've also found it useful to have a standard test image available that I can run locally to verify that a fix works. If it doesn't then I can roll back to the previous snapshot with no problems.
I've been using Virtual PC running Windows XP to test products I'm developing. I have clients who still need XP support while my primary dev environment is Vista (haven't had time to jump to Win7 yet), so having a virtual setup for XP is a big time saver.
Before each client drop, I build and test on my Vista dev machine then fire up VPC with XP, drag the binaries to the XP guest OS (enabled by installing Virtual PC additions on the guest OS) and run my tests there. I use the Undo disk feature of Virtual PC so I can always start with a clean XP image. This process would have been really cumbersome without virtualization.
I can now dump my old PCs at the local PC Recycle with no regrets :)
Some sort of test environment: if you are debugging malware (either writing it or developing a pill against it) it is not clever to use the real OS. The only possible disadvantage is that the viruses can detect that they are being run in the virtualization. :( One of the possibilities to do it is because the VM engines can emulate a finite set of hardware.

How do you convert a physical machine into a virtual machine image for use in MS Virtual Server or Hyper-V?

I'd like to use alternatives to System Center Virtual Machine Manager 2008 is possible, in other words, any FREE tools?
Before SCVMM, Microsoft's solution was the Virtual Server Migration Toolkit. This requires Windows Server 2003 Automated Deployment Services, which in turn can only be installed on Windows Server 2003 Enterprise Edition. It's about as far from a free tool as you can get. It only works on SP1, not SP2 (unless ADS has been updated since I last checked), and you have to obtain all the patches you've applied to the physical system.
ADS is limited to four partitions per physical disk, because it can't create extended partitions. If your physical system has more than four partitions you have a problem.
Once you do have it running, though, it does actually work.
Many disk copying tools like Ghost or True Image can now produce .vhd files from a physical system.
Google "Pysical to virtual conversion" or P2V. There are several solutions available. Unfortunately it sounds as though not many have had success with Microsoft's solution.
Try the following:
1. Download and install the VMWare Converter and follow the instructions to convert the physical machine.
2. Download the VMWare to VHD conversion utility from VMToolkit.com and convert the image.
This didn't work for me when I tried it last week, but I think it is because the drive I converted used PGP.
Use VMWare its not free, but you can get a decent 30 day trial, which should be enough to do your conversions. VMWare also has other great advantages if you're willing to pay for the product.
First, backup the physical system to an image, and convert it to a virtual disk which can be directly used in a virtual machine.
See this article.