 |
|
 |
Your last recent version tries to install kb835732 on Windows XP, i think that is wrong.
I noticed that you removed the check for
exactwinversion(5, 0)
from the checks in kb835732.iss.
You should re-add that check.
Nice work!!!
|
|
|
|
 |
|
 |
that is correct it should be
procedure kb835732();
begin
if exactwinversion(5, 0) and (minwinspversion(5, 0, 2) and maxwinspversion(5, 0, 4)) then begin
[...]
end;
end;
|
|
|
|
 |
|
 |
Dear stfx,
I have read through your article and used your scripts to provide the installation of the .Net Framework 3.5 sp1 in my installer if it is not present on the user's computer.
On a new Vista Home Premium machine, everything runs fine until after the .Net Framework is downloaded and goes through the process of installing the files. It comes up with an error page (in my installer) stating that an error has occured while trying to install the framework.
However, the strange thing is that after exiting the installer, under Add/Remove programs, the .Net Framework 3.5 sp1 is listed there as being installed. And, when I run the installer again it installs my program (without downloading the framework this time), which runs correctly.
So this leads me to believe that the Framework is being installed, only for some reason an error message is appearing stating the opposite. Could you kindly advise me on this issue?
Regards,
Anthony
P.S. Below is an extract from my InitializeSetup() function that deals with the prerequisites. Just to make sure that nothing is wrong in there. Also I am using the latest version of your code.
initwinversion();
if not minwinspversion(5, 0, 3) then begin
MsgBox(FmtMessage(CustomMessage('depinstall_missing'), [CustomMessage('win2000sp3_title')]), mbError, MB_OK);
exit;
end;
if not minwinspversion(5, 1, 2) then begin
MsgBox(FmtMessage(CustomMessage('depinstall_missing'), [CustomMessage('winxpsp2_title')]), mbError, MB_OK);
exit;
end;
msi31('3.1');
dotnetfx35sp1();
dotnetfx35sp1lp();
Result := true;
Check out my desktop conversion software for Windows -
www.universalconverter.net
|
|
|
|
 |
|
 |
Hey,
well I guess that problem occurs inside the InstallProducts function in products.iss
Here is a quick and a bit dirty fix. Replace the line 91
if ResultCode = 0 then with the following:
if (ResultCode = 0) or (ResultCode = 3010) then
If we install any version of .net framework silently (/norestart) then the result code of 3010 tells us that a restart is required to complete the installation which indicates success.
Please tell me if that solves your problem.
Greetings
stfx
|
|
|
|
 |
|
 |
Hey,
Thanks! That solved it!
Kind regards,
Anthony
Check out my desktop conversion software for Windows -
www.universalconverter.net
|
|
|
|
 |
|
 |
On English Vista(64bit) my script works.
The same script breaks on line 5 in isxdl.iss with "Unknown type PChar" on Swedish Xp Home
Do you know how I might resolve this?
|
|
|
|
 |
|
 |
If you use the unicode version of Inno Setup you have to replace PChar with PAnsiChar
|
|
|
|
 |
|
 |
Thanks stfx, that fixed it. Do you think any conditional statements can be put into this script so that users won't have to change this manually depending on what version of inno they installed. I appreciate that this is a new issue since 5.35. Thanks.
|
|
|
|
 |
|
 |
Hello,
First of all, thank you for the nice work.
I'm new with INNO Setup, so all this might look stupid ... but i have some issues with the installer though. My dependencies (msi31.exe and dotnetfx35.exe) fail to install. I get no error message, the setup just skip them.
I did a little check and it might be a problem with the PrepareToInstall() function (where the InstallProducts() function it's called). I haven't found any call for PrepareToInstall().
So i called PrepareToInstall inside NextButtonClick and it does start msi31.exe but another problem appear. It seems that dotnetfx35.exe starts before msi31.exe finish it's installation and of course it fails (since dotnetfx35.exe require Windows installer 3.1).
I'll keep working on it, but a little push in the right direction will be much appreciated ... because i'm not really sure about what i'm doing .
P.S. The /qb parameter doesn't work for Windows installer 3.1. So for the moment i'm using /quiet.
|
|
|
|
 |
|
 |
InstallProducts should be execute at the PrepareToInstall function inside products.iss.
Also the installation order depends on which main function was called first inside setup.iss
For example:
msi31('3.1');
dotnetfx35();
MSI 3.1 should be installed before .NET Framework 3.5
There could be some bugs though since I havent tested it heavily.
Btw are there any problems if you compile the original setup.iss (using .netfx 3.5)?
|
|
|
|
 |
|
 |
I partially solved the problem, it was mainly because of my INNO Setup version. It was older than 5.3.2 where this PrepareToInstall was added as an event function.
After the upgrade to the last version, if i remove the manual call for PrepareToInstall, it's installing msi31 correctly but fail to install dotnetfx35 (the order it's exactly like you said). I kind of solved that too by calling PrepareToInstall again inside the NextButtonClick function. I don't know why i have to call PrepareToInstall again to make it work, so i'll keep checking ... but for the moment it's the only solution i found.
And yes, the original setup.iss have the same problem ... it's installing msi31, but then fail on dotnetfx35.
|
|
|
|
 |
|
 |
You have to change in products.iss "function PrepareToInstall: String;" to "function PrepareToInstall(var NeedsRestart: Boolean): String;" and it works fine!
|
|
|
|
 |
|
 |
Hello,
I think there are wrong options for installing .NET 2.0 + .NET 2.0 SP1 (see dotnetfx20.iss and dotnetfx20sp1.iss).
I had some issues during installation and recognized that there are parameters which do not exist (that’s what the syntax dialog said).
I replace it with "/qb /norestart /lang:ENU" and everything works fine.
Alex
|
|
|
|
 |
|
|
 |
|
 |
Sorry but I am not familiar with that extension.
But it is a good idea so I may implement it in the next version.
|
|
|
|
 |
|
 |
Thank you very much for your script. I love it!
But I have some questions regarding the "offline files".
1. Why do you/we have to rename the files (org. "NetFx20SP1_x86.exe" -> "dotnetfx20sp1.exe")? This seems to be unnecessary because these files are neutral for different languages.
2. Do I have any possibilies to put files for different platforms in the dependency folder? For example NetFx20SP1_ia64.exe, NetFx20SP1_x64.exe and NetFx20SP1_x86.exe and your script selects the right one? Or do I have to build 3 setups for each platform?
Greetings from munich
Alex
|
|
|
|
 |
|
 |
Thanks for your comment. I will look into it if I have time.
1. yeah you are right I think it can be changed and will be in the next version.
2. Oh I totally forgot to implement x64 to offline files. I will post a bugfix as soon as possible so you dont have to build 3 setups.
EDIT:
about 2.
change the first argument of AddProduct at every dependency (i.e. dotnetfx20sp1.iss) to something like this
AddProduct(GetURL('dotnetfx20sp1.exe', 'dotnetfx20sp1_x64.exe', 'dotnetfx20sp1_ia64.exe'), [...]}
EDIT2:
about 1.
It would not work for language packs or .net framework 2.0 and 1.0/1.1 since they are all called dotnetfx.exe. Therefor I prefer to rename every setup according to the same pattern instead of just renaming a few.
|
|
|
|
 |
|
 |
Hello,
Please let me know if the followig is true:
If my program only requires .net framework 3.5 with sp1,
then I should only need the following lines in the 'include' section:
<
#include "scripts\products.iss"
#include "scripts\products\winversion.iss"
#include "scripts\products\fileversion.iss"
#include "scripts\products\msi31.iss"
#include "scripts\products\dotnetfx35sp1.iss"
#include "scripts\products\dotnetfx35sp1lp.iss"
>
and the code section should look like this:
<
[Code]
function InitializeSetup(): Boolean;
begin
//init windows version
initwinversion();
msi31('3.0');
dotnetfx35sp1();
dotnetfx35sp1lp();
Result := true;
end;
>
In other words, to install dotnetfx35sp1, i do not need to install any previous version of the framework, and to install msi31, I do not need to install msi20.
thank you,
pjr
|
|
|
|
 |
|
 |
yes that is correct though it should be msi31('3.1'); since you need a minimum version of 3.1 for .netfx 3.5.
You should also check for Windows Server 2003; Windows Server 2008; Windows Vista; Windows XP either using winversion.iss or with MinVersion = 0, 5.01 inside the [Setup] block (I would prefer that).
|
|
|
|
 |
|
 |
Thank you stfx!
This might be a dumb question but here it is: in my 'simple' setup scenario, what is the purpose of checking for the Windows version?
Thanks,
pjr
|
|
|
|
 |
|
 |
I am not sure what you mean.
Some products/dependencies may need the functions of winversion.iss. In your case MSI 3.1
And the MinVersion check I told you the post before is because .net framework 3.1 needs Windows 2003+
|
|
|
|
 |
|
 |
Makes sense stfx. thank you.
pjr
|
|
|
|
 |
|
 |
I keep getting this error now, it never used to happen with the last version. Please help.
Anthony
Check out my desktop conversion software for Windows -
www.universalconverter.net
|
|
|
|
 |
|
 |
are you sure that you have included products.iss at the first line inside setup.iss
|
|
|
|
 |
|
 |
Thanks, it worked! but i now have a different problem
---------------------------
Compiler Error
---------------------------
File: winversion.iss
Line 3:
Column 2:
Duplicate identifier 'WindowsVersion'
Any help will be appreciated,
Anthony
Check out my desktop conversion software for Windows -
www.universalconverter.net
|
|
|
|
 |