Looking for installer...
-
I'm looking of an installer for a .NET app. Nsis/innosetup might do the job, but I'm not convinced they handle .NET framework installs nicely for x86/x64 scenarios. So perhaps a commercial installer like Advanced Installer gives me peace of mind (still not that expensive). What are your experiences in this area?
Wout
We use Inno for .net apps both winform and asp.net and both x86 and 64bit os, no problems, no issues at all. We've tried and used pretty much every other installer out there over the years and all were worse than Inno, harder to deal with and resulted in more support required for our end users. Nothing, commercial or otherwise, gives you smaller, faster, easier setups than Inno setup mostly because it *doesn't* use the windows installer API which is deeply flawed in many ways that cause aggravation both supporting an app with end users and developing an installer that simply does what you want when you want. In our setup we detect if .net is present and if not auto direct the user to the Microsoft page where it detects and installs the framework you need for your OS. These are the key bits for detecting .net and 64 bit os:
{Check for the .net 3.5 framework}
function InitializeSetup(): Boolean;
var
ErrorCode: Integer;
NetFrameWorkInstalled : Boolean;
Result1 : Boolean;
begin
NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5');
if NetFrameWorkInstalled then
begin
Result := true;
end else
begin
Result1 := MsgBox('This application requires the .NET Framework 3.5.'+#13#13+'Please download and install the .NET Framework and run this setup again.'+#13#13+'Do you want to download the framework now?',
mbConfirmation, MB_YESNO) = idYes;
if Result1 =false then
begin
Result:=false;
end else
begin
Result:=false;
ShellExec('open',
'http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6',
'','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
end;
end;
end;{Check for 64 bit operating system}
var
Has64bitChecked: Boolean;
Is64Bit: Boolean;function IsX64: Boolean;
begin
if not Has64bitChecked then begin
Is64Bit := (ProcessorArchitecture = paX64);
Has64bitChecked:=true;end
Result:=Is64Bit;
end;For the 64bit you use a Check flag in Inno like this:
Source: "..\..\3rdprtylibs\chilkat\ChilkatDotNet2.dll"; DestDir: "{app}";Permissions: everyone-full; Check: not IsX64
Source: "..\..\3rdprtylibs\chilkat\64bit\ChilkatDotNet2.dll"; DestDir: "{app}";Permissions: everyone-full; Check: IsX64
"It's so simple to be wise. Just think of something stupid to say and then don't say it." -Sam Levenson
-
We use Inno for .net apps both winform and asp.net and both x86 and 64bit os, no problems, no issues at all. We've tried and used pretty much every other installer out there over the years and all were worse than Inno, harder to deal with and resulted in more support required for our end users. Nothing, commercial or otherwise, gives you smaller, faster, easier setups than Inno setup mostly because it *doesn't* use the windows installer API which is deeply flawed in many ways that cause aggravation both supporting an app with end users and developing an installer that simply does what you want when you want. In our setup we detect if .net is present and if not auto direct the user to the Microsoft page where it detects and installs the framework you need for your OS. These are the key bits for detecting .net and 64 bit os:
{Check for the .net 3.5 framework}
function InitializeSetup(): Boolean;
var
ErrorCode: Integer;
NetFrameWorkInstalled : Boolean;
Result1 : Boolean;
begin
NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5');
if NetFrameWorkInstalled then
begin
Result := true;
end else
begin
Result1 := MsgBox('This application requires the .NET Framework 3.5.'+#13#13+'Please download and install the .NET Framework and run this setup again.'+#13#13+'Do you want to download the framework now?',
mbConfirmation, MB_YESNO) = idYes;
if Result1 =false then
begin
Result:=false;
end else
begin
Result:=false;
ShellExec('open',
'http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6',
'','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
end;
end;
end;{Check for 64 bit operating system}
var
Has64bitChecked: Boolean;
Is64Bit: Boolean;function IsX64: Boolean;
begin
if not Has64bitChecked then begin
Is64Bit := (ProcessorArchitecture = paX64);
Has64bitChecked:=true;end
Result:=Is64Bit;
end;For the 64bit you use a Check flag in Inno like this:
Source: "..\..\3rdprtylibs\chilkat\ChilkatDotNet2.dll"; DestDir: "{app}";Permissions: everyone-full; Check: not IsX64
Source: "..\..\3rdprtylibs\chilkat\64bit\ChilkatDotNet2.dll"; DestDir: "{app}";Permissions: everyone-full; Check: IsX64
"It's so simple to be wise. Just think of something stupid to say and then don't say it." -Sam Levenson
John C wrote:
3rdprtylibs\chilkat
Are you using stuff from http://www.chilkatsoft.com/[^]? We've been looking at their SSH component. What have your experiences been with them?
-
John C wrote:
3rdprtylibs\chilkat
Are you using stuff from http://www.chilkatsoft.com/[^]? We've been looking at their SSH component. What have your experiences been with them?
Just the mail component. As a company they are excellent, we've been dealing with them for over 6 years now. It's a smaller company and they are very responsive and helpful should you need it.
"It's so simple to be wise. Just think of something stupid to say and then don't say it." -Sam Levenson
-
I'm looking of an installer for a .NET app. Nsis/innosetup might do the job, but I'm not convinced they handle .NET framework installs nicely for x86/x64 scenarios. So perhaps a commercial installer like Advanced Installer gives me peace of mind (still not that expensive). What are your experiences in this area?
Wout
I have found that with a little effort NSIS will work fine. A "detect .NET and download+install if not found" script can also be downloaded for it. It doesn't handle the x64 installer at all, but you could edit it to include it. However, it's likely that the majority of the x64 userbase is not computer illiterate and can find it on their own (if they didn't already have it), so I wouldn't worry about it too much.
-
I'm looking of an installer for a .NET app. Nsis/innosetup might do the job, but I'm not convinced they handle .NET framework installs nicely for x86/x64 scenarios. So perhaps a commercial installer like Advanced Installer gives me peace of mind (still not that expensive). What are your experiences in this area?
Wout
I'll install it, but you're going to have to pay my travel/lodging/food expenses.
wout de zeeuw wrote:
What are your experiences in this area?
I don't know what area you're in, so I can't offer any information in that regard.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
-----
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001 -
I'll install it, but you're going to have to pay my travel/lodging/food expenses.
wout de zeeuw wrote:
What are your experiences in this area?
I don't know what area you're in, so I can't offer any information in that regard.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
-----
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001John Simmons / outlaw programmer wrote:
I'll install it, but you're going to have to pay my travel/lodging/food expenses.
I don't think I'll be selling any licenses if I tell my customers you'll be installing it... but hey, who knows!
John Simmons / outlaw programmer wrote:
I don't know what area you're in, so I can't offer any information in that regard.
Planet earth mostly.
Wout
-
We use Inno for .net apps both winform and asp.net and both x86 and 64bit os, no problems, no issues at all. We've tried and used pretty much every other installer out there over the years and all were worse than Inno, harder to deal with and resulted in more support required for our end users. Nothing, commercial or otherwise, gives you smaller, faster, easier setups than Inno setup mostly because it *doesn't* use the windows installer API which is deeply flawed in many ways that cause aggravation both supporting an app with end users and developing an installer that simply does what you want when you want. In our setup we detect if .net is present and if not auto direct the user to the Microsoft page where it detects and installs the framework you need for your OS. These are the key bits for detecting .net and 64 bit os:
{Check for the .net 3.5 framework}
function InitializeSetup(): Boolean;
var
ErrorCode: Integer;
NetFrameWorkInstalled : Boolean;
Result1 : Boolean;
begin
NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5');
if NetFrameWorkInstalled then
begin
Result := true;
end else
begin
Result1 := MsgBox('This application requires the .NET Framework 3.5.'+#13#13+'Please download and install the .NET Framework and run this setup again.'+#13#13+'Do you want to download the framework now?',
mbConfirmation, MB_YESNO) = idYes;
if Result1 =false then
begin
Result:=false;
end else
begin
Result:=false;
ShellExec('open',
'http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6',
'','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
end;
end;
end;{Check for 64 bit operating system}
var
Has64bitChecked: Boolean;
Is64Bit: Boolean;function IsX64: Boolean;
begin
if not Has64bitChecked then begin
Is64Bit := (ProcessorArchitecture = paX64);
Has64bitChecked:=true;end
Result:=Is64Bit;
end;For the 64bit you use a Check flag in Inno like this:
Source: "..\..\3rdprtylibs\chilkat\ChilkatDotNet2.dll"; DestDir: "{app}";Permissions: everyone-full; Check: not IsX64
Source: "..\..\3rdprtylibs\chilkat\64bit\ChilkatDotNet2.dll"; DestDir: "{app}";Permissions: everyone-full; Check: IsX64
"It's so simple to be wise. Just think of something stupid to say and then don't say it." -Sam Levenson
Thanks for your input John, you're gonna get a free license of my soon to be released app! :cool:
Wout
-
I'm looking of an installer for a .NET app. Nsis/innosetup might do the job, but I'm not convinced they handle .NET framework installs nicely for x86/x64 scenarios. So perhaps a commercial installer like Advanced Installer gives me peace of mind (still not that expensive). What are your experiences in this area?
Wout
If your a sadist and like xml type scripts then Wix is for you. There is a little bit of a learning curve and some things you have to hunt around for as there is no drag and drop type approach that some installers have. Wix supports x64, msi's, integrates with Visual Studio to build, can customise all dialogs etc. Have a look at the TortoiseSVN installer(checkout source) as they use Wix. Few links to get started: http://wix.sourceforge.net/[^] Wix Tutorial[^] Good Wix forum[^]
-
If your a sadist and like xml type scripts then Wix is for you. There is a little bit of a learning curve and some things you have to hunt around for as there is no drag and drop type approach that some installers have. Wix supports x64, msi's, integrates with Visual Studio to build, can customise all dialogs etc. Have a look at the TortoiseSVN installer(checkout source) as they use Wix. Few links to get started: http://wix.sourceforge.net/[^] Wix Tutorial[^] Good Wix forum[^]
David Wong wrote:
If your a
sadist
and like xml type scripts then Wix is for you.Don't you mean masochist, not sadist?
-
David Wong wrote:
If your a
sadist
and like xml type scripts then Wix is for you.Don't you mean masochist, not sadist?
You are a sadist if a fellow developer has to maintain said code, and you derive pleasure from their pain :-D