2 種類の Office アドインがあります。1 つは Office 2013 用で、もう 1 つは他のバージョン (2003-2010) 用です。
配布パッケージには Inno Setup を使用しています。
ターゲット マシンにインストールされている Office のバージョンを特定し、正しいインストール ファイルを実行することはできますか?
Word のバージョンを検出して適切なファイルをインストールするコードを作成しようとしましたが、コンパイルに失敗しました。このようなコードを書くのは初めてなので、私のコードを見ていただきたいと思います。
[Files]
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg2013.exe"; DestDir: "{app}"; Check: "Install2013"; MinVersion: 0.0,5.0;
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg2010.exe"; DestDir: "{app}"; Check: "Install2010"; MinVersion: 0.0,5.0;
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg2013x86.dll"; DestDir: "{app}"; Check: "Install2013"; MinVersion: 0.0,5.0; Flags: regserver noregerror ignoreversion 32bit
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg2013x64.dll"; DestDir: "{app}"; Check: "Install2013 and Is64BitInstallMode"; MinVersion: 0.0,5.0; Flags: regserver noregerror ignoreversion 64bit
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg2010x84.dll"; DestDir: "{app}"; Check: "Install2010"; MinVersion: 0.0,5.0; Flags: regserver noregerror ignoreversion 32bit
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg2010x64.dll"; DestDir: "{app}"; Check: "Install2010 and Is64BitInstallMode"; MinVersion: 0.0,5.0; Flags: regserver noregerror ignoreversion 64bit
Root: HKCU; Subkey: "Software\My Program\AppforWord"; ValueName: "AppBarStyle"; ValueType: String; ValueData: "1"; Components: "AppforWord"; Check: "Install2010"; MinVersion: 0.0,5.0; Flags: uninsdeletevalue
Root: HKCU; Subkey: "Software\My Program\AppforExcel"; ValueName: "Enable"; ValueType: String; ValueData: "2"; Components: "AppforWord"; Check: "Install2010"; MinVersion: 0.0,5.0; Flags: uninsdeletevalue
Root: HKCU; Subkey: "Software\My Program\AppforWord"; ValueName: "AppBarStyle"; ValueType: String; ValueData: "1"; Components: "AppforWord"; Check: "Install2013"; MinVersion: 0.0,5.0; Flags: uninsdeletevalue
Root: HKCU; Subkey: "Software\My Program\AppforExcel"; ValueName: "Enable"; ValueType: String; ValueData: "2"; Components: "AppforWord"; Check: "Install2013"; MinVersion: 0.0,5.0; Flags: uninsdeletevalue
[Icons]
Name: "{commondesktop}\MyProg 2013"; Filename: "{app}\MyProg2013.exe"; Comment: "The settings for My Program 2013"; Check: "Install2013"; MinVersion: 0.0,5.0;
Name: "{commondesktop}\MyProg 2010"; Filename: "{app}\MyProg2010.exe"; Comment: "The settings of My Program"; Check: "Install2010"; MinVersion: 0.0,5.0;
[Code]
{ Get office version }
function IsInstall2013(): boolean;
var
success: boolean;
OfficeVer: cardinal;
begin
success :=
RegQueryDWordValue(
HKEY_CLASSES_ROOT, 'Word.Application\CurVer', Word.Application.15' );
Result := success and (OfficeVer = Word.Application.15);
end;
{ RETURNS OPPOSITE OF IsInstall2013 FUNCTION }
function Install2013(): Boolean;
begin
Result := (IsInstall2013 = false);
end;
{ RETURNS OPPOSITE OF not Office2013 FUNCTION }
function Install2010(): Boolean;
begin
Result := (IsInstall2010 = true);
end;
また、誰かが使用している Office のバージョンを検出する Inno Setup インストール ルーチンも作成したいと考えています。上記のコードをさまざまに繰り返してみましたが、うまく動作しないようです。
私の目的は単純です... Office 2010 を使用している場合はファイル A、B、C をインストールします。Office 2013 を使用している場合は、ファイル D、E、F をインストールします。