|
|
Comments and Discussions
|
|
 |

|
Hi,
i tried to install the MyProgram setup.
in last step of installation its showing, "Download Dependencies Windows installer and SQL Server r2"
then i click next button. the progress bar running and showing file downloading then its shows successfully installed. but the windows installer and sql server is not installed in my PC.
Can any one help me ?is any where i need to change the code.
Thanks
karthik
|
|
|
|

|
Hello man. Thank you for this script so good!
I have a doubt about the terms
#define use_dotnetfx11
#define use_dotnetfx11lp
.....
In the examples of define term we used, see
#define MyAppName "My Program"
#define MyAppVer GetFileVersion("MyProg.exe")
But the use_dotnetfx11 there is not a value setted...
as:
#define use_dotnetfx11lp = "??????"
And my pascal code I have:
#ifdef use_dotnetfx11
dotnetfx11();
#ifdef use_dotnetfx11lp
dotnetfx11lp();
#endif
dotnetfx11sp1();
#endif
How does it know that use_dotnetfx11 is true or false?
Is the right way?
|
|
|
|

|
I finished my project in vb.net.
What do I need to have in order to run this tool properly (beside my exe and database)?
Do I need all the Dlls & Ocxs?
Do I need to specify which framework I'm using?
Is it possible to get into details of how to use it with an example?
Thank you
Ami
Israel
|
|
|
|

|
Hi... First of all, I want to thank you very much because this post help me a lot. But somehow i still confused about the dependencies file. I need to include microsoft installer 3.1. I delved into the msi31.iss file and find out that if the file is not found, the setup will download the msi31 from the internet.
I've got the msi31 installer from visual studio. The name was "WindowsInstaller-KB893803-v2-x86.exe". And in the msi31.iss file, there was "AddProduct('msi31.exe', " line. should i modify the line or the file name, or perhaps i should not?
Thanks
|
|
|
|

|
Modify the file name. Info for this can be found in the text file located at bin\MyProgramDependencies\readme.txt. This was done because there are some windows installer which have duplicate names for x64/x86.
|
|
|
|

|
Very useful and clear. Thanks a lot!
|
|
|
|

|
Hi
Is there a way to use your scripts to install the .Net Framework on e.g. a Win Server 2008 R2/2012? As you must use the Role Manager, the current scripts don't work for me.
Thank you and thanks for your great project!
|
|
|
|

|
this powershell script does the job (you need to specifiy the Dotnet-Setup Url):
Param($computer = "localhost")
Function Get-OSVersion($computer,[ref]$feature)
{
$os = Get-WmiObject -class Win32_OperatingSystem -computerName $computer
Switch ($os.Version)
{
"6.1.7600"
{
If($os.ProductType -ne 1) #only 2008R2
{
$feature.value = "NET-FRAMEWORK"
} #end if
} #end 7600
"6.2.9200"{
If($os.ProductType -ne 1) #only 2012
{
$feature.value = "NET-FRAMEWORK-Core"
} #end if
}
DEFAULT { $feature.value = ""}
} #end switch
} #end Get-OSVersion
# *** entry point to script ***
$feature = $null
Get-OSVersion -computer $computer -feature ([ref]$feature)
$x = Read-Host 'Installing .Net Framework. Do you want to continue? (y/n)'
if ($x -like 'y')
{
if ($feature.value -ne "")
{
$wc = New-Object System.Net.WebClient
$fullPathIncFileName = $MyInvocation.MyCommand.Definition
$currentScriptName = $MyInvocation.MyCommand.Name
$currentExecutingPath = $fullPathIncFileName.Replace($currentScriptName, "")
$wc.DownloadFile(<DOTNETDOWNLOADURL>, "$currentExecutingPath\dotnetfx35setup.exe")
Install-WindowsFeature -name $feature -source dotnetfx35setup.exe
}
}
else
{
exit 1;
}
|
|
|
|

|
Hi,
sorry, can't ge this to work.
We are using "dism" instead:
edit products.iss:
[Code]
const sFeatureInstall='featureinstall';
procedure AddProduct(FileName, Parameters, Title, Size, URL: string; InstallClean : boolean; MustRebootAfter : boolean);
var
path: string;
i: Integer;
begin
installMemo := installMemo + '%1' + Title + #13;
path := ExpandConstant('{src}{\}') + CustomMessage('DependenciesDir') + '\' + FileName;
if (not FileExists(path)) and not (URL = '') then
begin
path := ExpandConstant('{tmp}{\}') + FileName;
isxdl_AddFile(URL, path);
downloadMemo := downloadMemo + '%1' + Title + #13;
downloadMessage := downloadMessage + ' ' + Title + ' (' + Size + ')' + #13;
end;
i := GetArrayLength(products);
SetArrayLength(products, i + 1);
if (LowerCase(FileName) = sFeatureInstall) then
products[i].File := sFeatureInstall
else
products[i].File := path;
products[i].Title := Title;
products[i].Parameters := Parameters;
products[i].InstallClean := InstallClean;
products[i].MustRebootAfter := MustRebootAfter;
end;
function SmartExec(prod : TProduct; var ResultCode : Integer) : boolean;
var
showFlag: Integer;
OldState: Boolean;
begin
showFlag := SW_SHOWNORMAL;
if (LowerCase(prod.File) = sFeatureInstall) then
begin
OldState := EnableFsRedirection(False);
try
showFlag := SW_HIDE; Result := Exec(ExpandConstant('{cmd}'),'/C dism /NoRestart /Online /Enable-Feature:'+prod.Parameters+' /all', '',showFlag, ewWaitUntilTerminated, ResultCode);
finally
EnableFsRedirection(OldState);
end;
end
else
begin if (LowerCase(Copy(prod.File,Length(prod.File)-2,3)) = 'exe') then
begin
Result := Exec(prod.File, prod.Parameters, '', showFlag, ewWaitUntilTerminated, ResultCode);
end
else
begin
Result := ShellExec('', prod.File, prod.Parameters, '', showFlag, ewWaitUntilTerminated, ResultCode);
end;
end;end;
edit dotnetfx35sp1.iss
procedure dotnetfx35sp1();
var
params: string;
begin
if (netfxspversion(NetFx35, '') < 1) then
begin
if (IsWin2012) or (IsWin2008R2) then
begin
params := 'NetFx3';
AddProduct(sFeatureInstall,
params,
CustomMessage('dotnetfx35sp1_title'),
CustomMessage('dotnetfx35sp1_size'),
dotnetfx35sp1_url,
false, false);
end
else
AddProduct('dotnetfx35sp1' + GetArchitectureString() + '.exe',
'/lang:enu /passive /norestart',
CustomMessage('dotnetfx35sp1_title'),
CustomMessage('dotnetfx35sp1_size'),
dotnetfx35sp1_url,
false, false);
end;
end;
|
|
|
|

|
Hi! I have a question on your iss file on inno setup.
#define MyAppSetupName 'MyProgram'
#define MyAppVersion '4.0'
OutputBaseFilename={#MyAppSetupName}-{#MyAppVersion}
Can you explain this code?
|
|
|
|

|
Thanks your article..
I can get useful tips of Inno Setup. Great Job!(:
|
|
|
|

|
Amazing, helped me loads and saved me so much time.
|
|
|
|

|
How can i Check chrome is installed or not.
if not i want to download and install.
|
|
|
|

|
I want to Install Java if not installed.
|
|
|
|

|
This is an awesome system. I know I will use this quite a bit.
If I could give a 10 I would!
Bob Dole The internet is a great way to get on the net.
 2.0.82.7292 SP6a
|
|
|
|

|
Here are the changes to detect 4.5
dotnetfxversion.iss
[Code]
type
NetFXType = (NetFx10, NetFx11, NetFx20, NetFx30, NetFx35, NetFx40Client, NetFx40Full, NetFx45Full);
const
netfx11plus_reg = 'Software\Microsoft\NET Framework Setup\NDP\';
function netfxinstalled(version: NetFXType; lcid: string): boolean;
var
regVersion: cardinal;
regVersionString: string;
begin
if (lcid <> '') then
lcid := '\' + lcid;
if (version = NetFx10) then begin
RegQueryStringValue(HKLM, 'Software\Microsoft\.NETFramework\Policy\v1.0\3705', 'Install', regVersionString);
Result := regVersionString <> '';
end else begin
case version of
NetFx11:
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v1.1.4322' + lcid, 'Install', regVersion);
NetFx20:
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v2.0.50727' + lcid, 'Install', regVersion);
NetFx30:
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.0\Setup' + lcid, 'InstallSuccess', regVersion);
NetFx35:
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.5' + lcid, 'Install', regVersion);
NetFx40Client:
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Client' + lcid, 'Install', regVersion);
NetFx40Full:
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Install', regVersion);
NetFx45Full:
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full', 'Release', regVersion);
end;
Result := (regVersion <> 0);
end;
end;
function netfxspversion(version: NetFXType; lcid: string): integer;
var
regVersion: cardinal;
begin
if (lcid <> '') then
lcid := '\' + lcid;
case version of
NetFx10:
regVersion := -1;
NetFx11:
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v1.1.4322' + lcid, 'SP', regVersion)) then
regVersion := -1;
NetFx20:
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v2.0.50727' + lcid, 'SP', regVersion)) then
regVersion := -1;
NetFx30:
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.0' + lcid, 'SP', regVersion)) then
regVersion := -1;
NetFx35:
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.5' + lcid, 'SP', regVersion)) then
regVersion := -1;
NetFx40Client:
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Client' + lcid, 'Servicing', regVersion)) then
regVersion := -1;
NetFx40Full:
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Servicing', regVersion)) then
regVersion := -1;
NetFx45Full:
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Servicing', regVersion)) then
regVersion := -1;
end;
Result := regVersion;
end;
dotnetfx45full.iss
// requires Windows Vista SP2 (x86 and x64), Windows 7 SP1 (x86 and x64), Windows Server 2008 R2 SP1 (x64), Windows Server 2008 SP2 (x86 and x64)
// requires Windows Installer 3.1
// requires Internet Explorer 5.01
// WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below
// http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992
[CustomMessages]
dotnetfx45full_title=.NET Framework 4.5 Full
dotnetfx45full_size=3 MB - 197 MB
;http://www.microsoft.com/globaldev/reference/lcid-all.mspx
en.dotnetfx45full_lcid=''
de.dotnetfx45full_lcid='/lcid 1031 '
[Code]
const
dotnetfx45full_url = 'http://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_setup.exe';
procedure dotnetfx45full();
begin
if (not netfxinstalled(NetFx45Full, '')) then
AddProduct('dotNetFx45_Full_setup.exe',
CustomMessage('dotnetfx45full_lcid') + '/q /passive /norestart',
CustomMessage('dotnetfx45full_title'),
CustomMessage('dotnetfx45full_size'),
dotnetfx45full_url,
false, false);
end;
|
|
|
|

|
You also need to add the following lines to your setup.iss file:
#define use_dotnetfx45full
in the head
#ifdef use_dotnetfx45full
#include "scripts\products\dotnetfx45full.iss"
#endif
below the block starting with #ifdef use_dotnetfx40
and finally
#ifdef use_dotnetfx45full
dotnetfx45full();
#endif
before the section #ifdef use_wic
|
|
|
|

|
Thank you very much for this excellent piece of work. Saved lot's of hours if not days.
|
|
|
|

|
You need to replace the following parameters (to "/passive /norestart") in the procedure below in kb835732.iss script - the installer switches were incorrect:
procedure kb835732();
begin
if (exactwinversion(5, 0) and (minwinspversion(5, 0, 2) and maxwinspversion(5, 0, 4))) then begin
if (not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Updates\Windows 2000\SP5\KB835732\Filelist')) then
AddProduct('kb835732.exe',
'/passive /norestart',
CustomMessage('kb835732_title'),
CustomMessage('kb835732_size'),
kb835732_url,
false, false);
end;
end;
|
|
|
|

|
Is it possible for a DirectX version of this script? I am making an installer for a game, and need to install DirectX as a dependency.
Thanks!
|
|
|
|
|

|
Any reason why you did not use compareversion function of stringversion.iss file (need to be included in setup.iss)? Also MinVersion should be a parameter to allow having a different minimum required directX version
procedure directX(MinVersion: string);
begin
if (compareversion(version, MinVersion) < 0) then
|
|
|
|
|

|
great tool btw. it is working fine other than i only require .net 4 framework client, so i disabled all others in setup.iss except
#define use_dotnetfx40
i then placed dotNetFx40_Client_setup.exe in the following folder
bin\MyProgramDependencies
but when i compile the setup.exe it is still only 5 mb in size which is all my app files it is not including the 40mb dotNetFx40_Client_setup.exe within the setup.exe??
|
|
|
|

|
i even took you initial example program and just used it and did the same thing with the same results? i even copied the
MyProgram-4.0.exe
MyProgramDependencies
with the dotNetFx40_Client_setup.exe in the MyProgramDependencies folder, to the host witout .net client 4.0 and still it wanted to go download .net 4 client from msft??
|
|
|
|
 |
|
|
General News Suggestion Question Bug Answer Joke Rant Admin
|
A modular InnoSetup script to download and install all available .NET Framework versions and much more
| Type | Article |
| Licence | CPOL |
| First Posted | 13 Oct 2007 |
| Views | 471,451 |
| Downloads | 9,183 |
| Bookmarked | 221 times |
|
|