簡體   English   中英

如何在安裝后將文件從 wix 安裝程序項目復制到本地用戶系統?

[英]How to Copy File from wix installer project to local users system post installation?

我使用 WIX 工具集創建了一個安裝程序。 現在我想在安裝后將文件復制到用戶的本地系統。 我已經嘗試了使用CopyFile元素的所有可能方法,但無法完成問題。

我嘗試使用CopyFile元素,但無法復制文件。

<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="SAFTRUS_Application" />
        <Directory Id="MyProgramDir" Name="SAFTRUS_Application">
            <Directory Id="CopiedFiles" Name="Copied Files" />
        </Directory>
    </Directory>
</Directory>

<Fragment>
<DirectoryRef Id="MyProgramDir">
    <Component Id="sAFtrUS" Guid="E8A58B7B-F031-4548-9BDD- 
        7A6796C8460D">
        <File Id="FILE_InstallMeTXT" Source="ReadMe.rtf" KeyPath="yes">
            <CopyFile Id="Copy_InstallMeTXT" 
                DestinationDirectory="CopiedFiles" 
                DestinationName="ReadMe1.rtf" />
        </File>
    </Component>
</DirectoryRef>

該文件應從安裝程序復制到最終用戶的系統。 文件名為ReadMe.rtf ,此文件包含在我的安裝項目中。 我想將此文件復制到安裝應用程序的用戶本地系統。

因此,如果有人有解決方案,請幫助我。

我使用了CustomAction來做到這一點。 “復制”不是可執行文件,而是 cmd.exe 中可用的命令,因此您必須從 cmd.exe 進程中運行“復制”

    <CustomAction Id="copy.file" Directory="INSTALLFOLDER"
      ExeCommand="[System64Folder]cmd.exe /c &quot;copy ReadMe.rtf [WindowsFolder]System32\ReadMe.rtf&quot;"
      Return="check" Execute="deferred" Impersonate="no" />

然后在InstallExecuteSequenceCustom元素中引用該操作

    <InstallExecuteSequence>
      <Custom Action="copy.file" After="InstallFiles" />
    </InstallExecuteSequence>

如果用於運行“復制”命令的 cmd.exe 不是來自同一個文件夾,我在將文件復制到 C:\Windows\System32\drivers 時遇到了問題。 例如,如果使用上面的 [SystemFolder [SystemFolder] (在 64 位 Windows 上設置為 C:\Windows\SysWOW64)而不是[System64Folder] ,它將不起作用。 也沒有給出奇怪的錯誤。 從安裝日志中,看起來 copy.file 成功了。 需要注意的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM