inno-setup – 从Inno Pascal设置DestDir?
发布时间:2020-12-15 09:31:33 所属栏目:大数据 来源:网络整理
导读:我想在不同的文件夹中安装文件,具体取决于用户是选择为所有用户安装还是仅为当前用户安装. 我添加了使用CreateInputOptionPage()来创建一个带有两个单选按钮的选项页面. 但是,我的安装程序现在散落着许多重复的行,比如这两个: Source: {#ProjectRootFolder}
我想在不同的文件夹中安装文件,具体取决于用户是选择为所有用户安装还是仅为当前用户安装.
我添加了使用CreateInputOptionPage()来创建一个带有两个单选按钮的选项页面. 但是,我的安装程序现在散落着许多重复的行,比如这两个: Source: {#ProjectRootFolder}License.txt; DestDir: {userdocs}{#MyAppName}; Check: NOT IsAllUsers Source: {#ProjectRootFolder}License.txt; DestDir: {commondocs}{#MyAppName}; Check:IsAllUsers 是否有更优雅的方式来做上述事情?例如,Pascal代码可以创建一个像#define这样的变量,所以我可以用它代替上面的{userdocs}和{commondocs}吗? 更多详情: 上面的IsAllUsers()函数调用此代码: function IsAllUsers: Boolean; begin #ifdef UPDATE Result := AllUsersInRegistryIsTRUE; #else Result := AllUsersOrCurrentUserPage.Values[1]; // wizard page second radio button #endif end; 和: function AllUsersInRegistryIsTRUE: Boolean; // True if preceding install was to all users' documents var AllUsersRegValue: AnsiString; begin if RegQueryStringValue(HKEY_LOCAL_MACHINE,'SoftwareMyApp','AllUsers',AllUsersRegValue) then Result := (UpperCase(AllUsersRegValue) = 'YES') else Result := FALSE; end; 解决方法
这样的西装会适合吗?
[Files] Source: {#ProjectRootFolder}License.txt; DestDir: {code:GetDir}{#MyAppName}; ... [Code] var OptionsPage: TInputOptionWizardPage; procedure InitializeWizard; begin OptionsPage := CreateInputOptionPage(wpUserInfo,'please select','the kind of installation','and continue..',True,False); OptionsPage.Add('All users'); OptionsPage.Values[0] := True; OptionsPage.Add('This user'); end; function GetDir(Dummy: string): string; begin if OptionsPage.Values[0] then Result := ExpandConstant('{commondocs}') else Result := ExpandConstant('{userdocs}'); end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |