 |
|
 |
Does anyone perhaps know of a script for installing SP1/SP2/SP3 (Windows XP)?
I am also looking for scripts for (in order of importance):
1) MS security essentials
2) Flash Player
3) VLC (with all plugins)
4) adobe reader X
5) KLITE coded pack
6) Java JRE
Any help would be much appreciated.
|
|
|
|
 |
|
 |
Does inno have any dependancies itself?
To be specific, lets say I have a newly installed vanilla xp without any SPacks, will Inno script run or not?
|
|
|
|
 |
|
 |
It works on vanilla XP without windows installer and/or any installed frameworks, just checked.
|
|
|
|
 |
|
 |
Can I install a dependency according to the selected components?
For example, you select Component 1 then install Framework 4.0, otherwise it not install.
Thank you very much, excellent work.
|
|
|
|
 |
|
 |
Very useful and illustrative.
|
|
|
|
 |
|
 |
Excellent job.
Thanks for sharing!
|
|
|
|
 |
|
|
 |
|
 |
Dear Sir or Madam,
I'm following along with the script that was written to install the VC++ 2010 re-distributables on a machine (vcredist2010.iss). I don't need to actually have my Inno script perform the installation, only check if the re-distributables are already installed or not. I thought that the following code would do this on my Windows 7 machine:
procedure IsVCRedistDetected();
var
version: cardinal;
begin
RegQueryDWordValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Visual Studio\10.0\VC\VCRedist\x86', 'Install', version);
if (version <> 1) then begin
MsgBox('VC++ 2010 files not installed.', mbInformation, MB_OK);
end else begin
MsgBox('VC++ 2010 files are installed.', mbInformation, MB_OK);
end;
end;
Note that when I check my Windows registry that the location of the re-distributables is different than indicated in your script. In any event, is there any dumb mistake that I'm making with this code that would cause my script to hang during execution? Thank you for your help!
but it seems to hang my script.
|
|
|
|
 |
|
 |
InnoSetup is such a great tool, it's nice to see work like yours that make it even more flexible.
|
|
|
|
 |
|
 |
In scripts\products\wic.iss, line 42 has a bug:
if (not isIA64()) then begin
Should be changed to:
if (not IsIA64()) then begin.
When testing on Windows Server 2003 x86, this condition does not properly evaluate to True.
|
|
|
|
 |
|
|
 |
|
 |
Hello,
Please correct me if I'm wrong:
(My software uses third-party components (dll and ocx) compiled with Visual C++ x86)
So I guess that I have to install Visual C++ Redistributable x86 version.
Even if the architecture (target computer) version is x64, isn't it!?
If I'm wrong here, you can stop reading and just kindly tell me I'm wrong
But if I'm right, the VC++ redistributable script should not make a choice (x86 or x64) based on the target computer OS type but with a specific argument telling which version is needed to run the software and/or its components! Am I right?
Thanks for reading and in advance for you answers/points of view!
modified 23 Nov '11.
|
|
|
|
 |
|
 |
Still no "answer"... ?
|
|
|
|
 |
|
 |
Did you got your answer? If so please share.
|
|
|
|
 |
|
 |
In versions of Windows that do not have WIC and Framework 4.0. First try to install the Framework and then the WIC. But never can install the Framework, as it requires WIC.
I solved by changing the order in setup.iss:
Look:
#ifdef use_wic
wic();
#endif
// if no .netfx 4.0 is found, install the client (smallest)
#ifdef use_dotnetfx40
if (not netfxinstalled(NetFx40Client, '') and not netfxinstalled(NetFx40Full, '')) then
dotnetfx40client();
#endif
|
|
|
|
 |
|
 |
WIC indeed needs to be called before .net 4.0 - thanks for pointing that out
|
|
|
|
 |
|
|
 |
|
 |
This is a fantastic article, thanks a lot!
I'm trying to change the code slightly, so I can have just a single .exe file and no dependencies folder. I have tried to put the dependency files into the [Files] section and to extract them to a temporary subfolder in the {app} location, but get this error:
"an attempt was made to expand the "app" constant before it was initialized"
In products.iss:
This is the line I changed from AddProducts:
path := ExpandConstant('{app}{\}') + CustomMessage('DependenciesDir') + '\' + FileName;
and the [Files] section
[Files]
Source: "scripts\isxdl\german2.ini"; Flags: dontcopy
Source: "src\dotnetfx20.exe"; DestDir: "{app}\Dependencies"; Flags: deleteafterinstall
Source: "src\dotnetfx20sp2.exe"; DestDir: "{app}\Dependencies"; Flags: deleteafterinstall
Source: "src\vc08redistsp1.exe"; DestDir: "{app}\Dependencies"; Flags: deleteafterinstall
thanks for any help!
|
|
|
|
 |
|
 |
This cant work because the {app} constant is determined by the user as this is the path where the program is installed to. Therefore at the time your code runs the user wasnt yet asked and the {app} constant throws an error.
Simply use a temporary folder for that kind of stuff: {tmp} instead of {app}
PS: Google would have helped as well
PPS: Are you interested in helping me test the new version (see post below)?
|
|
|
|
 |
|
 |
Ah I thought it might be something like that, I tried to use {tmp} but it didn't work (due to a mistype -oops) but have it sorted now, thanks!
I did use Google, but didn't find anything helpful.
If it's the version from your blog, then I've been using it and it's working great for me so far!
Thanks again
|
|
|
|
 |
|
|
 |
|
 |
SVN Repo checkout: http://stfx-wow.googlecode.com/svn/trunk/NetFxIS[^]
I incorporated all proper scripts and modifications from the community as well as some custom changes to make the code less redundant, support more 64-bit installers and have more helper functions.
Here are the changes:
* Added own product to check for .netfx version to remove redundant code
* Version strings are now being parsed to fix wrong detection for version numbers above 9
* Implemented mid-install restart support
* Implemented Windows Installer 4.5, .NET Framwork 4.0, Visual C++ 2010 Redistributable, SQL 2008 Express and SQL 3.5 Compact Edition (community)
* Make use of #define in setup.iss (community)
* Use unicode version of Inno Setup as default for better multilanguage support
* Fixed restart on 3010 resultcode from installers
* Fixed missing check Windows 2000 Security Update (KB835732)
* Added support for x64 and IA64 offline files
EDIT: Article has been updated
modified on Saturday, August 27, 2011 6:48 AM
modified 24 Sep '11.
|
|
|
|
 |
|
 |
Hi stfx,
Thanks for these scripts. If I can get them working for me they will be very useful.
I have downloaded and tested the new version. I have compiled the scripts using InnoIDE V1.0.0.0078 and Inno Setup version 5.4.2 using the "MyProgram" sample that you provide. When I run the resulting exe on a clean install of Windows XP service pack 2, the msi31.exe (WindowsInstaller-KB893803-v2-x86.exe before renaming and putting in dependencies) does not run correctly, I get the message box giving command line switches, indicationg that incorrect command line switches have been used. In msi31.iss it appears you are using the switches /qb and /norestart. qb appears not to be a valid switch for the msi installer (I believe it may be a switch for msiexec.exe itself). I tried changing the switches to "/passive /norestart". The passive switch seems to work but a restart is required i.e "/norestart" seems to be ignored (truncating maybe?).
'Hope this helps. Let me know if I can provide any more info.
By the way, I also had a problem with the old scripts on the clean install of Windows XP SP2. msi 3.1 would not install before .net fx 2.0 SP2, meaning that the .net install would fail.
Regards,
GJS
|
|
|
|
 |
|
 |
You're right it should indeed be /passive /restart. What exactly do you mean with a restart is required?
* Is Windows Installer 3.1 restarting the machine? (unlikely)
* Is InnoSetup restarting mid-install?
if yes, just for my info is that one working? ... i.e is the installer again executed after windows starts up?
It might be useful if you could check the resultcode of the installer ... uncomment the two MsgBox(...) cases in function InstallProducts in products.iss[^]
I also made modifications to the file to delay reboots of 3010 resultcode which might fix it
* Or is InnoSetup restarting after the install of the app has finished? (I am fine with the last one)
modified on Sunday, July 24, 2011 3:53 AM
|
|
|
|
 |
|
 |
It seems to be Inno requiring the restart after msi31 is installed and in doing so kills the rest of the setup. Here's the steps I take. Using the latest scripts as downloaded from
http://code.google.com/p/stfx-wow/downloads/list
I comment out the following from the #define statements in setup.iss (my aim is to install a program that just requires .net fx 2.0):
//#define use_iis
//#define use_kb835732
//#define use_msi20
#define use_msi31
//#define use_msi45
//#define use_ie6
//#define use_dotnetfx11
//#define use_dotnetfx11lp
#define use_dotnetfx20
#define use_dotnetfx20lp
//#define use_dotnetfx35
//#define use_dotnetfx35lp
//#define use_dotnetfx40
//#define use_wic
//#define use_vc2010
//#define use_mdac28
//#define use_jet4sp8
//#define use_scceruntime
//#define use_sql2005express
//#define use_sql2008express
I then change the switches in msi31.iss to '/passive /norestart' and save. I can't find any MsgBox statement at all in function InstallProducts in products.iss.
This is what I am seeing:
function InstallProducts: InstallResult;
var
ResultCode, i, productCount, finishCount: Integer;
begin
Result := InstallSuccessful;
productCount := GetArrayLength(products);
if productCount > 0 then begin
DependencyPage := CreateOutputProgressPage(CustomMessage('depinstall_title'), CustomMessage('depinstall_description'));
DependencyPage.Show;
for i := 0 to productCount - 1 do begin
if (products[i].InstallClean and PendingReboot()) then begin
Result := InstallRebootRequired;
break;
end;
DependencyPage.SetText(FmtMessage(CustomMessage('depinstall_status'), [products[i].Title]), '');
DependencyPage.SetProgress(i, productCount);
if SmartExec(products[i], ResultCode) then begin
if (ResultCode = 0) then begin
finishCount := finishCount + 1;
end else if ((ResultCode = 3010) or products[i].MustRebootAfter) then begin
Result := InstallRebootRequired;
break;
end else begin
Result := InstallError;
break;
end;
end else begin
Result := InstallError;
break;
end;
end;
for i := 0 to productCount - finishCount - 1 do begin
products[i] := products[i+finishCount];
end;
SetArrayLength(products, productCount - finishCount);
DependencyPage.Hide;
end;
end;
I then compile the script and put dotnetfx20sp2.exe and msi31.exe in MyProgramDependencies folder and copy this and MyProgram-4.0.exe to the clean install of windows XP SP2 (running on a VM). I disable the network adapter on this machine to check that no downloading is taking place.
I run MyProgram-4.0.exe and accept all the defaults so I get this before hitting the "install" button:
Install dependencies:
Windows Installer 3.1
.NET Framework 2.0 Service Pack 2
Destination location:
C:\Program Files\MyProgram
Start Menu folder:
MyProgram
Additional tasks:
Additional icons:
Create a desktop icon
I then see two dialogs with progress bars (too quick to read) then an Inno dialog box with title "Setup - MyProgram" saying "Preparing to install", then red cross icon and "Windows Installer 3.1 To complete the installation of MyProgram Setup must restart your computer. Would you likie to restart now?" There are two radio buttons with options "Yes, restart now." (selected) and "No, I will restart later." The dialog buttons are Back and Finish. I click finish and the machine restarts. After restart, the installer does not continue (no programs are running at all). In Control Panel - Add/Remove Programs, Windows Installer 3.1 is showing as installed but nothing else - no net fx 2.0 and no "MyProgam".
So, only Windows Installer is being installed, and then requiring a restart which kills the whole setup program.
'Hope that helps. I can send screen shots if that will make things clearer.
Regards,
GJS
|
|
|
|
 |