首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在此ISPP宏中只对一个文件使用signonce?

如何在此ISPP宏中只对一个文件使用signonce?
EN

Stack Overflow用户
提问于 2019-06-14 01:36:20
回答 1查看 56关注 0票数 1

我不确定我这样做是否正确:

代码语言:javascript
复制
; We use the preprocessor to compare the DLL versions.
; This results in a smaller setup executable.
; See: https://stackoverflow.com/a/49647793/2287576
#pragma parseroption -p-

#define FileEntry(Source, DestPath) \
    "Source: \"" + Source + "\"; DestDir: \"" + DestPath + "\"; Flags: ignoreversion\n"

#define ProcessFile(RootPath, Path, AlternativePath, DestPath, FindResult, FindHandle) \
    FindResult ? \
        Local[0] = FindGetFileName(FindHandle), \
        Local[1] = AddBackslash(Path) + Local[0], \
        Local[2] = AddBackslash(AlternativePath) + Local[0], \
        Local[3] = AddBackslash(RootPath) + Local[1], \
        Local[4] = AddBackslash(RootPath) + Local[2], \
        Local[5] = \
           FileExists(Local[4]) && \
           (GetFileVersion (Local[3]) == GetFileVersion (Local[4])), \
        FileEntry((Local[5] ? Local[2] : Local[1]), DestPath) + \
        ProcessFile(RootPath, Path, AlternativePath, DestPath, \
            FindNext(FindHandle), FindHandle) \
    : ""

#define ProcessFolderWithAlternativeSource(RootPath, Path, AlternativePath, DestPath) \
    Local[0] = FindFirst(AddBackslash(AddBackslash(RootPath) + Path) + "*.dll", 0), \
    ProcessFile(RootPath, Path, AlternativePath, DestPath, Local[0], Local[0])

#pragma parseroption -p+

#emit ProcessFolderWithAlternativeSource( \
    SetupSetting("SourceDir"), "OutlookCalIFConsole", ".", "{app}\OutlookCalIFConsole")

Source: "OutlookCalIFConsole\OutlookCalIFConsole.exe"; DestDir: "{app}\OutlookCalIFConsole"; Flags: ignoreversion sign
Source: "OutlookCalIFConsole\OutlookCalIFConsole.exe.config"; DestDir: "{app}\OutlookCalIFConsole"; Flags: ignoreversion

; MSATools GMail Library
#emit ProcessFolderWithAlternativeSource( \
    SetupSetting("SourceDir"), "MSAToolsGMailClassLibrary", ".", "{app}\MSAToolsGMailClassLibrary")

新的代码如下:

代码语言:javascript
复制
; MSATools GMail Library
#emit ProcessFolderWithAlternativeSource( \
    SetupSetting("SourceDir"), "MSAToolsGMailClassLibrary", ".", "{app}\MSAToolsGMailClassLibrary")

我不知道我是否需要parseoption调用?

另外,我还有一个问题,就是这个文件:

代码语言:javascript
复制
MSAToolsGMailClassLibrary.dll

还需要signonce标志。但MSAToolsGMailClassLibrary文件夹中的所有其他dll文件都没有。

我们该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-14 03:41:47

相应地修改FileEntry宏:

代码语言:javascript
复制
#define FileEntry(Source, DestPath) \
  "Source: \"" + Source + "\"; DestDir: \"" + DestPath + "\"; Flags: ignoreversion " + \
  (SameText(ExtractFileName(Source), "MSAToolsGMailClassLibrary.dll") ? "signonce" : "") + \
  "\n"

(未测试)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56585864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档