我正在为我的公司创建一个应用程序。目标是创建一个通用安装程序,该安装程序将检查用户的注册表以查找已安装的特定应用程序,并根据这些应用程序在“选择组件”窗口中创建可用安装组件的列表。这就是我特别困扰的问题。
我已经创建了安装程序,但是用户必须检查/取消选中他不需要的组件,因为他没有使用特定的应用程序。这绝对不是我猜的好方法......
所以我请求帮助。这可以通过“选择组件”窗口实现,我应该如何创建带有复选框的自定义向导页面(再次 - 如何)?
提前很多。
P.S。我已经在我的脚本中使用了Check功能,但在这种情况下,程序会自动在用户计算机上安装与找到的应用程序相关的所有组件,有时用户不需要....
答案 0 :(得分:1)
这将根据注册表值删除组件。您需要修改它以适合您尝试安装的每个应用程序,并且可能需要为每个应用程序使用Check功能。
; -- Components.iss --
; Demonstrates a components-based installation.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES!
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
UninstallDisplayIcon={app}\MyProg.exe
OutputDir=userdocs:Inno Setup Examples Output
[Types]
Name: "full"; Description: "Full installation"
Name: "compact"; Description: "Compact installation"
Name: "custom"; Description: "Custom installation"; Flags: iscustom
[Components]
Name: "program"; Description: "Program Files"; Types: full compact custom; Flags: fixed
Name: "help"; Description: "Help File"; Types: full; Check: IsMyAppInstalled
Name: "readme"; Description: "Readme File"; Types: full
Name: "readme\en"; Description: "English"; Flags: exclusive
Name: "readme\de"; Description: "German"; Flags: exclusive
[Files]
Source: "MyProg.exe"; DestDir: "{app}"; Components: program
Source: "MyProg.chm"; DestDir: "{app}"; Components: help
Source: "Readme.txt"; DestDir: "{app}"; Components: readme\en; Flags: isreadme
Source: "Readme-German.txt"; DestName: "Liesmich.txt"; DestDir: "{app}"; Components: readme\de; Flags: isreadme
[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
[Code]
function IsMyAppInstalled(): Boolean;
Var
installed: String;
begin
if RegQueryStringValue(HKEY_CURRENT_USER, 'Software\MyApp',
'Installed', installed) then
result := true
Else
result := false;
end;
答案 1 :(得分:0)
你想要做的事情不仅仅是Inno安装设计,我认为你需要编写自己的安装程序,而不是使用通用的安装程序框架,如Inno Setup。