應用程式運作的時候,難免會讀寫檔案,産生新的資料。但Program Files下的檔案是不能随便更改,Win7下如果沒有權限,将會被拒絕。我現在有兩種方式,一種是将資料路徑移到Program Data目錄下,一個是給檔案賦予權限。
ProgramData
<Directory Id="CommonAppDataFolder">
<Directory Id="YourFolder" Name="YourFolder">
<Directory Id='dirC9846820F5B48BC9EAD9F647E841B025' Name='DemoProject' >
<Directory Id='dirF6068DAA29DBB05A7EAD1E3B5A48BBEE' Name='Data' />
<Directory Id='dir10737BF4DF605200AA7B844D908DAED9' Name='GraphicPages' />
<Directory Id='dir16D2B386B2034B9488996466AAAE0B57' Name='History' />
<Directory Id='dirBE8545AE7AB0276E15898AAE7ACFBD7A' Name='Resource' />
</Directory>
</Directory>
</Directory>
當然這種方式你的應用程式路徑要支援。
擷取檔案夾讀寫權限
<DirectoryRef Id='dirB59C44B238E764B86C6DFC0A8045E3FA' >
<Component Id='cmpB59C44B238E764B86C6DFC0A8045E3FA' Guid='BDAA4089-F7C0-42E8-928E-B81901938FCD' KeyPath='yes' >
<CreateFolder Directory="dirB59C44B238E764B86C6DFC0A8045E3FA">
<Permission User="SYSTEM" GenericAll="yes"/>
<Permission User="EveryOne" GenericAll="yes" GenericRead="yes" Read="yes" ReadAttributes="yes" GenericExecute="yes" TakeOwnership ="yes" GenericWrite ="yes" WriteAttributes="yes" ReadPermission ="yes" ChangePermission="yes" />
<Permission User="Users" Domain="[LOCAL_MACHINE_NAME]" GenericRead="yes" Read="yes" ReadAttributes="yes" GenericExecute="yes" TakeOwnership ="yes" GenericWrite ="yes" WriteAttributes="yes" ReadPermission ="yes" ChangePermission="yes"/>
</CreateFolder>
</Component>
</DirectoryRef>
這個需要應用WixUtilExtension.dll ,Wix命名空間也要加上: xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
開始沒有加EveryOne,還是不能儲存,加了才ok。安裝完圖示多了一個标志。

應該還有更好的辦法或者思路,路過朋友還請賜教。