我添加了使用CreateinputOptionPage()来创建一个带有两个单选按钮的选项页面.
但是,我的安装程序现在散落着许多重复的行,比如这两个:
Source: {#ProjectRootFolder}\license.txt; DestDir: {userdocs}\{#MyAppname}; Check: NOT IsAllUsersSource: {#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#endifend;
和:
function AllUsersInRegistryIsTRUE: Boolean; // True if preceding install was to all users' documents var AllUsersRegValue: AnsiString;begin if RegqueryStringValue(HKEY_LOCAL_MACHINE,'Software\MyApp','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;总结
以上是内存溢出为你收集整理的inno-setup – 从Inno Pascal设置DestDir?全部内容,希望文章能够帮你解决inno-setup – 从Inno Pascal设置DestDir?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)