|
Message Closed
modified 23-Dec-20 12:43pm.
|
|
|
|
|
I have made 4 additional scripts:
vsto30.iss - Visual Studio Tools for Office 3.0 runtime
Office2007PIA.iss - Primary Interop Assembly for Office 2007
vsto30sp1.iss - Visual Studio Tools for Office 3.0 runtime SP1
SqlCompact35.iss - Microsoft SQL Server Compact 3.5 SP1
Note:
These perform a quiet installation, which means that the license dialogs from Microsoft are skipped. If the end user does not have to accept the license conditions from Microsoft, you might be obliged to include them as part of your own license conditions. Just don't hold me responsible.
I don't see any way to attach a file to a posting, but the files are short, so here they come. Let me know if there is a better way to post files here.
vsto30.iss - Visual Studio Tools for Office 3.0 runtime
[CustomMessages]
vsto30_title=Visual Studio Tools for Office 3.0 runtime
en.vsto30_size=2 MB
de.vsto30_size=2 MB
[Run]
Filename: "{ini:{tmp}{\}dep.ini,install,vsto30}"; Description: "{cm:vsto30_title}"; StatusMsg: "{cm:depinstall_status,{cm:vsto30_title}}"; Parameters: "/q"; Flags: skipifdoesntexist
[Code]
const
vsto30_url = 'http://download.microsoft.com/download/c/9/3/c93c2e15-4f0d-4482-99a1-37d096a399a2/vstor30.exe';
procedure vsto30();
var
version: cardinal;
begin
RegQueryDWordValue(HKLM, 'Software\Microsoft\vsto runtime Setup\v9.0.21022', 'Install', version);
if IntToStr(version) <> '1' then
InstallPackage('vsto30', 'vstor30.exe', CustomMessage('vsto30_title'), CustomMessage('vsto30_size'), vsto30_url);
end;
Office2007PIA.iss - Primary Interop Assembly for Office 2007
[CustomMessages]
o2007Pia_title=Primary interop assembly for Office 2007
en.o2007Pia_size=7 MB
de.o2007Pia_size=7 MB
[Run]
Filename: "{ini:{tmp}{\}dep.ini,install,o2007Pia}"; Parameters: "/quiet /extract:{tmp}"; Description: "{cm:o2007Pia_title}"; StatusMsg: "{cm:depinstall_status,{cm:o2007Pia_title}}"; Flags: skipifdoesntexist
Filename: "{tmp}\o2007pia.msi"; Parameters: "/qn"; Description: "{cm:o2007Pia_title}"; StatusMsg: "{cm:depinstall_status,{cm:o2007Pia_title}}"; Flags: skipifdoesntexist shellexec waituntilterminated
[Code]
function MsiQueryProductState(szProduct: String): Integer;
external 'MsiQueryProductStateA@msi.dll stdcall';
const
{from msi.h}
INSTALLSTATE_DEFAULT = 5 ;
o2007Pia_url = 'http://download.microsoft.com/download/e/1/d/e1df4622-5f6c-4fb9-845b-38d009cc1188/PrimaryInteropAssembly.exe';
procedure o2007Pia();
var
installstate: Integer ;
begin
installstate := MsiQueryProductState ( '{50120000-1105-0000-0000-0000000FF1CE}' ) ;
if installstate <> INSTALLSTATE_DEFAULT then
InstallPackage('o2007Pia', 'PrimaryInteropAssembly.exe', CustomMessage('o2007Pia_title'), CustomMessage('o2007Pia_size'), o2007Pia_url);
end;
vsto30sp1.iss - Visual Studio Tools for Office 3.0 runtime SP1
[CustomMessages]
vsto30sp1_title=Visual Studio Tools for Office 3.0 runtime SP1
en.vsto30sp1_size=1.3 MB
de.vsto30sp1_size=1.3 MB
[Run]
Filename: "{ini:{tmp}{\}dep.ini,install,vsto30sp1}"; Description: "{cm:vsto30sp1_title}"; StatusMsg: "{cm:depinstall_status,{cm:vsto30sp1_title}}"; Parameters: "/q"; Flags: skipifdoesntexist
[Code]
const
vsto30sp1_url = 'http://download.microsoft.com/download/0/c/4/0c4c5bd1-c27d-4ee0-8466-4a3ea487263f/vstor30sp1-KB949258-x86.exe';
procedure vsto30sp1();
var
version: cardinal;
begin
RegQueryDWordValue(HKLM, 'Software\Microsoft\vsto runtime Setup\v9.0.30729', 'Install', version);
if IntToStr(version) <> '1' then
InstallPackage('vsto30sp1', 'vstor30.exe', CustomMessage('vsto30sp1_title'), CustomMessage('vsto30sp1_size'), vsto30sp1_url);
end;
SqlCompact35.iss - Microsoft SQL Server Compact 3.5 SP1
[CustomMessages]
SqlCompact35_title=Microsoft SQL Server Compact 3.5 SP1
en.SqlCompact35_size=2.3 MB
de.SqlCompact35_size=2,3 MB
fr.SqlCompact35_size=2,3 Mo
[Run]
Filename: "{tmp}\SSCERuntime-ENU-x86.msi"; Parameters: "/qn"; Description: "{cm:SqlCompact35_title}"; StatusMsg: "{cm:depinstall_status,{cm:SqlCompact35_title}}"; Flags: skipifdoesntexist shellexec waituntilterminated
[Code]
function MsiQueryProductState(szProduct: String): Integer;
external 'MsiQueryProductStateA@msi.dll stdcall';
const
{from msi.h}
INSTALLSTATE_DEFAULT = 5 ;
SqlCompact35_url = 'http://download.microsoft.com/download/8/4/2/8423c019-ccb4-4d7d-b7f0-bcf83f1b9218/SSCERuntime-ENU-x86.msi';
procedure SqlCompact35();
var
installstate: Integer ;
begin
installstate := MsiQueryProductState ( '{E59113EB-0285-4BFD-A37A-B79EAC6B8F4B}' ) ;
if installstate <> INSTALLSTATE_DEFAULT then
InstallPackage('SqlCompact35', 'SSCERuntime-ENU-x86.msi', CustomMessage('SqlCompact35_title'), CustomMessage('SqlCompact35_size'), SqlCompact35_url);
end;
Phil
|
|
|
|
|
|
Thanks for your contribution Phil. Could you also post the InstallPackage method?
|
|
|
|
|
Hi, it took me a while to figure this out.
It looks like I based my scripts on an older version of this article. I have a copy of the .zip file which I downloaded in July 2009, before stfx's most recent update.
The InstallPackage method was originally in the file products.iss. It looks like it has been replaced with the function AddProduct, which has exactly the same parameters.
By the way, I have made some changes to my version of the script SqlCompact35.iss, which I will post separately.
Phil
|
|
|
|
|
I have been unable to get these scripts to run the installers for SqlServer Compact. The Url works and downloads, but as soon as the download is complete, I get an error message "An error occurred while installing the dependencies". The scripts find that the dependencies are missing, but will not run the installer. I have tried all I can but probably am missing something simple. I am using version 5.4.2(a).
Have you posted any more changes to the script? I haven't found any newer posts. Thanks, if I can get these scripts to work, I will be done!
Harley
|
|
|
|
|
I have made a change to the script SqlCompact35.iss.
In this script I have abandoned using the function MsiQueryProductState to check for an installed product ID. I found that there were too many variations of this product with different UUIDs.
This is the version which I am now using:
[CustomMessages]
SqlCompact35_title=Microsoft SQL Server Compact 3.5 SP1
en.SqlCompact35_size=2.3 MB
de.SqlCompact35_size=2,3 MB
fr.SqlCompact35_size=2,3 Mo
[Run]
Filename: {tmp}\SSCERuntime-ENU-x86.msi; Parameters: /qn; Description: {cm:SqlCompact35_title}; StatusMsg: {cm:depinstall_status,{cm:SqlCompact35_title}}; Flags: skipifdoesntexist shellexec waituntilterminated
[Code]
const
SqlCompact35_url = 'http://download.microsoft.com/download/8/4/2/8423c019-ccb4-4d7d-b7f0-bcf83f1b9218/SSCERuntime-ENU-x86.msi';
procedure SqlCompact35();
var
installstate: Boolean ;
begin
installstate := RegValueExists ( HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5', 'Version' ) ;
if Not installstate then
InstallPackage('SqlCompact35', 'SSCERuntime-ENU-x86.msi', CustomMessage('SqlCompact35_title'), CustomMessage('SqlCompact35_size'), SqlCompact35_url);
end;
As already noted in another post, I am using an older version of the code from this article. To work with the current version, I believe that you will have to replace InstallPackage with AddProduct.
Phil
|
|
|
|
|
have you tried the new version, Is this worth the time. I have always used Installsheild and found it did the job. what do you really think compared to the new version. Good artile .
cheers,
Donsw
My Recent Article : Backup of Data files - Full and Incremental
|
|
|
|
|
After installing .NET Framework 3.5 the Inno Setup comes up with a page that says a restart is required instead of going to the last page I defined. Now, if the .NET Framework doesn't not need to be installed, it goes to the correct page.
I have the following under the [Run] section of the dotnetfx35sp1.iss file
Filename: "{ini:{tmp}{\}dep.ini,install,dotnetfx35sp1}"; Description: "{cm:dotnetfx35sp1_title}"; StatusMsg: "{cm:depinstall_status,{cm:dotnetfx35sp1_title}}"; Parameters: "/lang:enu /qb /norestart"; Flags: skipifdoesntexist
It passes the /norestart parameter to the exe but for some reason Inno thinks it needs to restart. Is this something that is automatically detected and can not be changed? Is a restart really necessary? Every time I have installed .NET Framework 3.5, it doesn't require a restart...but then again, I have heard of others where it does require a restart.
Thanks
Nick
|
|
|
|
|
i think because of msi31:
if you install the Windows Installer msi31 manually , then the setup finally wants to restart the computer. So maybe those who also needed to install msi31 before the dotnetfx35 where prompted for restart after the whole installation process (though a restart is apparently not necessary...)
|
|
|
|
|
This is a fantastic script.
I have one question, how do you get the download url's from download.microsoft.com for the packages you want to install, such as .Net 2.0 SP 1:
http://download.microsoft.com/download/0/8/c/08c19fa4-4c4f-4ffb-9d6c-150906578c9e/NetFx20SP1_x86.exe
I need to install the .Net Report Viewer SP1 Redistributable but cannot find the proper URL for my script.
|
|
|
|
|
Hi,
I'm trying out your example and it works exactly the way I want it to, but I do have one question though.
Although the parameter norestart is being set while installing the .net 3.5 sp1 framework, the installer always asks me to reboot my pc (I'm testing on a clean xp virtual machine install).
Do you have any idea why this happens?
Thanks in advance!
Lenny
|
|
|
|
|
I just asked this question and noticed you already did a week ago. Did you ever resolve this issue?
Thanks
Nick
|
|
|
|
|
Hello,
First off...thank you. This solved an issue we have been trying to solve for a really long time now.
I incorporated this into our setup and it detects that the .net framework 3.5 needs to be installed and downloads it correctly but when it gets to installing it, there seems to be no notification to the user that anything is happening. The window appears saying Microsoft .net Frameworkd 3.5 sp1 is being installed but the progress bar never moves. After 10 minutes or so it completes but there is no indication to the user of any progress.
I noticed that the exe is being run with the /quiet parameter (see below) and thus none of the UI for .net framework installation is shown. One solution I thought of was to run the installation using the /qb rather than /quiet as the UI would be shown but no users interaction would be required. Is there any way to do this?
[17:11:01.030] *** Setup started
[17:11:03.051] Setup version: Inno Setup version 5.2.3
[17:11:03.055] Original Setup EXE: C:\Users\nickolsen\Desktop\dotnetfx_innosetup\bin\setup.exe
[17:11:03.058] Setup command line: /SL5="$C12E6,75676,53248,C:\Users\nickolsen\Desktop\dotnetfx_innosetup\bin\setup.exe" /SPAWNWND=$A137A /NOTIFYWND=$2607AC /DEBUGWND=$271054
[17:11:03.059] Windows version: 6.00.6001 SP1 (NT platform: Yes)
[17:11:03.060] 64-bit Windows: No
[17:11:03.061] Processor architecture: x86
[17:11:03.062] User privileges: Administrative
[17:11:03.069] 64-bit install mode: No
[17:11:03.072] Created temporary directory: C:\Users\NICKOL~1\AppData\Local\Temp\is-DVRJL.tmp
[17:11:04.865] Message box (Yes/No):
The following applications are required before setup can continue:
.NET Framework 3.5 Service Pack 1 (3 MB - 232 MB)
Download and install now?
[17:11:06.315] User chose Yes.
[17:11:07.196] Starting the installation process.
[17:11:07.203] Installation process succeeded.
[17:11:07.208] -- Run entry --
[17:11:07.210] Run as: Current user
[17:11:07.212] Type: Exec
[17:11:07.215] Filename: C:\Users\NICKOL~1\AppData\Local\Temp\is-DVRJL.tmp\dotnetfx35sp1.exe
[17:11:07.217] Parameters: /lang:enu /quiet /norestart
[17:12:00.106] Process exit code: 0
[17:12:00.113] Need to restart Windows? No
Thanks
Nick
|
|
|
|
|
Message Closed
modified 23-Dec-20 12:44pm.
|
|
|
|
|
I understand the issue of it finishing "successfully" even if they press cancel and that is ok for our situation. How can I go about setting the parameters for the .net framework installation to use /qb rather than /quiet?
Thanks
Nick
|
|
|
|
|
Message Closed
modified 23-Dec-20 12:44pm.
|
|
|
|
|
I definately should have figured that out. Shows you how much I know!
Thanks!
|
|
|
|
|
Why doesn't "/qb!" work for hiding the progress bar? I thought this was possible for .net Framework installations.
|
|
|
|
|
Message Closed
modified 23-Dec-20 12:43pm.
|
|
|
|
|
Turns out that the /qb actually won't work. The only option you have is quite install (no UI) or not.
See Command Line Options for the .NET Framework 3.5 Redistributable Package
http://msdn.microsoft.com/en-us/library/cc160716.aspx[^]
Do you have any other ideas on how to let the user know that something is happening??
|
|
|
|
|
where is the check for already installed is done, I mean how you verify which version of Windows installer is installed already on the machine, and what if I want to download the Windows Installer 4.1 and install it on the user machine.
Could you please explain the code a little more, I am not able to understand it clearly.
Thanks
|
|
|
|
|
Message Closed
modified 23-Dec-20 12:45pm.
|
|
|
|
|
|
I stripped out a lot from the example code and got something that worked got installing .NET 3.5 on Server 2008 x64. I guess it works because the .NET 3.5 installer can install on both x86 and x64. Though the screen sitting there for a long time without any indication of progress is really off-putting.
And one caveat for the example code: minwinversion(5, 1) will return FALSE for Vista (6.0), since for some reason it checks to make sure that BOTH the major version and minor version are greater.
|
|
|
|